Como solucionar el problema de Vmmem que utiliza 100% de CPU en WLS2

Tiempo de lectura: 2 minutos

Si vmem (o el proceso asociado al memory management de WSL) te está consumiendo el 100% de la CPU, y esto te congela o tira el sistema, lo más probable es que WSL esté usando demasiados recursos o haya un memory leak (fuga de memoria).

Casas desde el cielo - Pexels

Aquí tienes una serie de soluciones prácticas que puedes aplicar:


1. Limita el uso de CPU y RAM de WSL

Puedes restringir los recursos que WSL puede usar. Para ello, crea (o edita) el archivo:

%UserProfile%\.wslconfig

Y añade algo como esto:

[wsl2]
memory=4GB   # límite de RAM
processors=2 # límite de CPUs

💡 Esto previene que WSL consuma toda la RAM o CPU de tu sistema. Requiere reiniciar WSL.

Reinicia WSL con:

wsl --shutdown

2. Revisa qué proceso dentro de WSL está consumiendo CPU

Inicia WSL y usa:

top

o

htop

Busca el proceso que más consume CPU (puede ser algo como node, python, etc). Si identificas el culpable, puedes optimizarlo, matarlo, o reconfigurarlo.


3. Evita uso excesivo de vmem si usas Docker Desktop

Docker Desktop con WSL2 puede usar mucha memoria. Ve a:

Docker Desktop > Settings > Resources

Y limita RAM y CPU desde allí si tienes contenedores corriendo.


4. Actualiza WSL y Windows

Ejecuta:

wsl --update

Y asegúrate de tener Windows 10/11 actualizado.


5. Reduce servicios automáticos o demonios en WSL

A veces se ejecutan demonios innecesarios al iniciar WSL. Mira tu .bashrc, .zshrc, o servicios en /etc.


6. Usa swap en disco con precaución

Si tienes un archivo de swap en WSL y no está limitado, puede generar uso excesivo de disco/CPU.

Revisa esto en .wslconfig:

swap=2GB
swapFile=C:\\wsl-swap.vhdx

7. Monitorea con el Visor de eventos (Event Viewer)

En caso de cuelgues graves, abre el Visor de eventos (eventvwr.msc) y revisa errores bajo:

Windows Logs > System o Application

Busca errores críticos relacionados con vmem, WSL, o wslhost.exe.


Si el problema persiste…

Puedes también:

  • Probar crear otra distro de WSL limpia (por si tu actual está corrompida).
  • Cambiar de WSL2 a WSL1 temporalmente si no necesitas virtualización completa.
wsl --set-version <distro> 1

Deja un comentario