WSL2 ya cuenta con Memory Reclaim
Los desarrolladores de Microsoft han anunciado la expansión de la capa WSL2 (Subsistema de Windows para Linux) en las compilaciones experimentales de Windows Insider (compilación 19013). En estas anuncian que han añadido la compatibilidad para devolver un sistema de memoria (Memory Reclaim), liberado por procesos que se ejecutan en un entorno basado en el kernel de Linux.
Anteriormente, en el caso de un mayor consumo de memoria por parte de las aplicaciones o el núcleo, la memoria se asignaba a la máquina virtual WSL2, pero después de eso permanecÃa fija y no volvÃa al sistema, incluso después de la finalización del proceso de uso intensivo de recursos y la ausencia de una mayor necesidad de memoria asignada.
Ahora con la recuperación de memoria en WSL 2, cuando la memoria en Linux ya no sea necesaria, se puede informar al host donde se liberará y su VM WSL 2 se reducirá en tamaño de memoria.
El mecanismo de recuperación de memoria permite devolver la memoria liberada al sistema operativo principal y reducir automáticamente el tamaño de la memoria de la máquina virtual. En este caso, no solo se devuelve la memoria liberada por los procesos del usuario, sino también la memoria utilizada para el almacenamiento en caché en el kernel de Linux.
Los procesos de usuario no son las únicas cosas que usan memoria en la máquina virtual Linux. El kernel de Linux también utiliza muchos cachés, incluido un caché de página, que almacena el contenido del archivo para mejorar el rendimiento del sistema de archivos. Veamos un ejemplo más del mundo real para ver cómo entra esto en juego.
Por ejemplo, con una alta actividad del disco, aumenta el tamaño de la memoria caché de la página, en la que el contenido de los archivos se asienta durante la operación del FS. Después de ejecutar “echo 1> /proc/sys/vm/drop_caches”, la memoria caché se puede borrar y la memoria vuelve al sistema operativo principal.
La implementación de la recuperación de memoria se basa en un parche propuesto por los ingenieros de Intel para su inclusión en el núcleo principal de Linux para expandir las capacidades del controlador virtio-balloon y el sistema de administración de memoria.
Esta caracterÃstica está impulsada por un parche del kernel de Linux que permite que pequeños bloques contiguos de memoria sean devueltos a la máquina host cuando ya no se necesitan en el invitado Linux. Actualizamos el kernel de Linux en WSL2 para incluir este parche y modificamos Hyper-V para admitir esta función de informes de página.
El parche especificado está diseñado para usarse en cualquier sistema invitado para devolver páginas de memoria no utilizadas al sistema host, y puede usarse con varios hipervisores. En el caso de WSL2, el parche está adaptado para devolver la memoria al hipervisor Hyper-V.
Es importante recordar que la segunda edición de WSL difiere en la entrega de un núcleo Linux completo en lugar de un emulador sobre la marcha que traduce las llamadas del sistema Linux a las llamadas del sistema Windows.
WSL 2 es una nueva versión de la arquitectura que permite que el subsistema Windows para Linux ejecute los binarios de Linux ELF64 en Windows. Esta nueva versión de WSL 2 usa las caracterÃsticas de Hyper-V para crear una máquina virtual liviana con un núcleo mÃnimo de Linux.
El kernel de Linux entregado en WSL2 se basa en la versión 4.19, que se ejecuta en un entorno de Windows utilizando una máquina virtual ya utilizada en Azure. Las actualizaciones para el kernel de Linux se entregan a través del motor de Windows Update y se prueban en la infraestructura de integración continua de Microsoft.
Los parches especÃficos de WSL2 utilizados en el núcleo incluyen optimizaciones para reducir el tiempo de inicio del núcleo, reducir el consumo de memoria y dejar el núcleo con el conjunto mÃnimo requerido de controladores y subsistemas.
Si quieres conocer más detalles al respecto puedes consultarlos en la publicación original. El enlace es este.