A Microsoft lançou uma actualização importante para o Windows Subsystem for Linux (WSL). O objectivo principal é evitar falhas catastróficas quando o sistema está a lidar com cargas de trabalho pesadas. De acordo com o site Neowin, esta alteração estrutural introduz limites de memória e de processador para garantir que os processos do anfitrião Windows não ficam sem recursos.
Antes da aplicação desta correcção, os utilizadores que executavam tarefas exigentes, como a compilação de software, podiam esgotar rapidamente a capacidade da máquina. O ambiente virtual Linux desencadeava eventos de falta de memória (Out-of-Memory) que não só encerravam as aplicações activas, mas também consumiam todos os recursos necessários para o funcionamento do próprio motor do WSL. O resultado era um sistema totalmente bloqueado, mesmo depois de o pico de consumo passar.
A nova arquitectura de proteção
Para resolver o problema no WSL, a Microsoft impõe agora um limite rígido de recursos através de uma área isolada. O sistema coloca todos os ambientes executados pelo utilizador num grupo de controlo restrito, denominado wsl-user. Este grupo tem um limite exacto de 32 MiB a menos do que a memória RAM total do anfitrião e 0,01 núcleos abaixo da capacidade total do processador (CPU).
Esta pequena margem é suficiente para manter vivas as comunicações de fundo e a orquestração do sistema. Assim, se um processo esgotar os recursos, apenas essa tarefa falha, mantendo o WSL globalmente operacional.
Transição para cgroup v2 e compatibilidade
Outro detalhe técnico de grande relevância é a transição total do WSL para a versão 2 dos grupos de controlo do Linux (cgroup v2). Embora traga benefícios evidentes, esta mudança quebra a compatibilidade com cargas de trabalho mais antigas que dependam da estrutura anterior. Para mitigar este impacto, existem algumas nuances a ter em consideração:
- Se as empresas ou os programadores necessitarem obrigatoriamente do cgroup v1 para manter software antigo a funcionar, existe uma solução alternativa oficial.
- É necessário adicionar a linha IsolateDistroCgroup = false ao ficheiro de configuração .wslconfig, o que permite contornar as novas medidas de restrição e repor o comportamento clássico.
- Como benefício adicional desta nova arquitectura, a execução de múltiplos ambientes Linux em simultâneo deixa de sofrer bloqueios de inicialização, uma vez que as instâncias systemd* arrancam agora de forma totalmente independente.
