Recientemente intenté instalar Ubuntu en Windows (WSL2). Probé el free
comando y se utilizaron algunos bloques de memoria de intercambio. Pensé en reducir el intercambio, así que agregué la entrada vm.swappiness=10
en /etc/sysctl.conf
. Intenté recargar sysctl.conf
y pareció funcionar, pero cuando intenté cerrar WSL e iniciar una nueva sesión, el intercambio se restableció al valor predeterminado de 60.
¿Ubuntu en WSL2 está anulando esta configuración para volver a ser 60?
Respuesta1
/etc/sysctl.conf
Systemd generalmente lo analiza en Ubuntu al inicio (creo que a través de systemd-sysctl.service
). Desde WSLno usa systemd, no se "maneja" cuando apaga y reinicia el subsistema WSL. Esto es similar a lo que describo en mi respuesta aesta pregunta de desbordamiento de pila(No es necesario leerlo ahora, pero tiene más detalles si los necesitas).
La solución (también como lo describo en esa respuesta particular) es usar la kernelCommandLine
configuración para el kernel de WSL2:
En su
%userprofile%
directorio de Windows (normalmenteC:\Users\<username>
), cree o edite el archivo.wslconfig
con lo siguiente:[wsl2] kernelCommandLine = "sysctl.vm.swappiness=10"
Salga de Ubuntu en WSL (y cualquier otra instancia de WSL)
Emitir un
wsl --shutdown
desde PowerShell, CMD o el menú InicioReanudar
Deberías encontrar que vm.swappiness
ahora persiste. Tenga en cuenta que, dado que todas las sesiones de WSL2 comparten el mismo kernel, esta opción tendrá efecto globalmente. Este es el caso independientemente de cómo configure el intercambio (o cualquier parámetro del kernel).
Tenga en cuenta también que esto ha sido probado desde al menos Windows 10 compilación 18363 por el OP de esa pregunta de Stack Overflow.
Otras alternativas
Creo que la .wslconfig
opción probablemente sea la mejor para esto, pero también podrías:
- Usar
/etc/wsl.conf
con el[boot]
sección en Windows 11 para forzarsysctl
la ejecución en cada inicio. - Utilice su perfil de usuario para ejecutarlo manualmente. Si sigue esta ruta, use algo como
wsl.exe -u root sysctl --system
para evitar tener que escribir una contraseña o configurarsudoers
.