Por qué Vmmem devora tu RAM y qué controla .wslconfig
El kernel de Linux no devuelve con gusto la memoria que libera: la retiene como caché de páginas, así que tras una compilación grande Vmmem se queda alto un buen rato aunque dentro ya esté todo cerrado. No es una fuga, es el comportamiento normal del kernel; pero si tus distribuciones conviven con el navegador, el IDE y otras máquinas virtuales, el techo conviene fijarlo por escrito. Ese 50% por defecto era razonable cuando los equipos iban vacíos; hoy, con cinco aplicaciones hambrientas repartiéndose 16 GB, es demasiado.
El volante es %UserProfile%\.wslconfig, que se lee una sola vez al arrancar la máquina virtual, así que cada cambio exige después un wsl --shutdown. Los límites se aplican a todas las distribuciones a la vez: con este archivo no se puede poner un techo distinto a cada una. Además, solo afecta a WSL2; la primera generación traduce las llamadas de Linux dentro del propio Windows y no tiene máquina virtual que limitar.
- memory=6GB — el techo de RAM para toda la máquina virtual, todas las distribuciones juntas
- processors=4 — cuántos núcleos lógicos verá WSL2
- swap=4GB — tamaño del archivo de intercambio de Linux (por defecto: 25% de la RAM, máximo 8 GB)
- autoMemoryReclaim=gradual — opción experimental que devuelve a Windows la memoria liberada (WSL 1.3.10+)
- sparseVhd=true — opción experimental que permite que ext4.vhdx se encoja al borrar archivos
Fijar los límites paso a paso
Abre el Bloc de notas, pega la cabecera de sección [wsl2] y debajo las líneas memory=6GB, processors=4 y swap=4GB, y guarda el archivo como %UserProfile%\.wslconfig. En el cuadro de guardado elige Tipo: Todos los archivos (*.*) y codificación UTF-8, o Windows creará en silencio un .wslconfig.txt que WSL jamás leerá. Un valor sin unidad —por ejemplo, memory=6— se interpreta como bytes, así que el sufijo GB no es decoración: es obligatorio.
Abre PowerShell o Windows Terminal, ejecuta wsl --shutdown, espera unos diez segundos y vuelve a abrir tu distribución. Dentro de Linux, free -h muestra ya la cantidad recortada en lugar de toda la RAM física, y nproc imprime los núcleos permitidos. Si wsl --version informa de 1.3.10 o posterior, puedes añadir debajo del bloque [wsl2] una sección [experimental] con autoMemoryReclaim=gradual y sparseVhd=true y repetir el apagado; en versiones más antiguas, actualiza antes con wsl --update en una consola de administrador.
Cuándo conviene revisar las cifras
Vigila Vmmem en el Administrador de tareas durante una semana de trabajo normal: para el navegador, un editor y contenedores ligeros bastan 4–6 GB, mientras que las builds grandes de Docker o los proyectos JavaScript pesados pueden pedir con razón los 8 GB. Ajusta memory= en pasos de 2 GB y deja al menos la mitad de la RAM física para Windows en equipos de 16 GB o menos. Si el disco de las distribuciones no deja de crecer, sparseVhd=true frena la expansión constante de ext4.vhdx. Vale la pena revisar la configuración tras cada actualización de características de Windows, porque a veces renuevan el paquete WSL y alteran su comportamiento.
Preguntas y respuestas
¿Cuánta memoria debo dar a WSL2?
En un equipo de 16 GB, 6 GB cubren el desarrollo diario; con solo 8 GB de RAM quédate en 4 GB para que Windows no empiece a paginar. Sube el techo en pasos pequeños y solo cuando las builds fallen de verdad por falta de memoria.
¿Por qué Vmmem sigue alto aunque cierre todo dentro de Linux?
El kernel mantiene la memoria liberada como caché de páginas y no la devuelve a Windows por iniciativa propia. Ejecuta wsl --shutdown al terminar la jornada o activa autoMemoryReclaim=gradual a partir de WSL 1.3.10 para que la memoria vuelva sola.
¿Funciona .wslconfig con WSL1?
No. WSL1 traduce las llamadas de Linux dentro del propio Windows: no hay máquina virtual, ni Vmmem, ni nada que limitar. Si quieres límites, convierte antes la distribución con wsl --set-version <nombre> 2.
Consulta qué incluye antes de comprar.
La prueba única de 30 minutos incluye las funciones básicas. Las funciones marcadas PRO permanecen bloqueadas hasta activar una licencia de pago.
Sigue leyendo
Escríbenos: [email protected]