VmmemWSL com memória alta: encontre o trabalho antes de recuperar a RAM
VmmemWSL no Gerenciador de Tarefas representa os recursos usados pelo ambiente de máquina virtual do WSL. Sua memória pode incluir cargas de trabalho Linux ativas e cache. Se o Docker, um servidor de modelo de IA ou ferramentas de desenvolvimento rodam ali, encerrar um editor do Windows não necessariamente interrompe esse trabalho.
Primeiro, determine se a memória pertence a uma tarefa em execução ou permanece em cache após o término da tarefa. Excluir um disco virtual do WSL não é uma correção de memória e pode destruir o ambiente Linux e seus dados.
Encontre o trabalho dentro do WSL
No PowerShell, inspecione o ambiente instalado:
wsl --version
wsl --list --verbose
wsl --list --running
Dentro da distribuição Linux relevante, use estas visualizações somente leitura:
free -h
ps -eo pid,comm,rss --sort=-rss
As leituras do Linux não têm exatamente o mesmo escopo que o total da VM no Gerenciador de Tarefas. Use-as para localizar processos e distinguir memória disponível de cache de arquivos, não para forçar todos os números a coincidir. Para o trabalho de propriedade do Docker, inspecione os contêineres em execução do Docker Desktop e pare a tarefa pretendida por meio de seu controle normal.
Um servidor de IA pode manter um modelo carregado após responder. Pare essa carga de trabalho deliberadamente se ela não for mais necessária. Não encerre um processo arbitrário simplesmente porque seu nome não é familiar.
Leia uma amostra de memória do Linux sem chamar todo cache de vazamento
Na saída do free -h, preste atenção em available, bem como em used e buff/cache. O Linux usa memória que estaria ociosa para dados de arquivos, e parte dessa memória pode ser recuperada quando os aplicativos precisam dela. Portanto, um valor pequeno de free sozinho não basta para estabelecer que o Linux está sem memória.
A listagem de processos informa o RSS em KiB, enquanto free -h usa unidades legíveis por humanos. Páginas compartilhadas e a sobrecarga da VM também fazem com que a soma das linhas de processo não seja necessariamente igual ao número VmmemWSL do Gerenciador de Tarefas. Use as maiores linhas para identificar o responsável e depois inspecione a carga de trabalho nomeada, em vez de forçar os totais a coincidir.
Se o Docker estiver envolvido, estes comandos somente leitura identificam os contêineres em execução e coletam uma amostra de recursos, seguindo a referência de estatísticas do Docker:
docker ps
docker stats --no-stream
Execute-os no ambiente conectado ao backend do Docker que está sendo investigado. Um contexto do Docker diferente pode descrever uma máquina remota, então confirme o alvo antes de agir. O número de memória exibido para um contêiner e o total da VM WSL inteira têm escopos diferentes.
Compare três estados: antes de o trabalho de IA começar, enquanto ele está em execução e depois que o aplicativo descarregou normalmente seu modelo ou encerrou o trabalho. Se o processo grande permanecer ativo, a recuperação de cache não substitui a decisão sobre se esse processo deve continuar em execução. Se o processo diminuir, mas o cache permanecer, o comportamento de recuperação se torna uma questão mais relevante.
Verifique a configuração atual de recuperação
A referência de configuração do WSL da Microsoft coloca as configurações globais do WSL 2 em %USERPROFILE%\.wslconfig. É diferente de /etc/wsl.conf dentro de uma distribuição.
A referência atual lista autoMemoryReclaim em [experimental], com dropCache como padrão e gradual como outro modo suportado. O conselho antigo de ativar um padrão universalmente desativado pode, portanto, estar desatualizado. Verifique a versão instalada do WSL e sua configuração existente antes de adicionar qualquer coisa.
Se você quiser deliberadamente a recuperação gradual de cache em uma versão que suporte a configuração, mescle esta entrada no arquivo existente:
[experimental]
autoMemoryReclaim=gradual
Não sobrescreva configurações não relacionadas nem crie seções duplicadas. Isso altera como a memória em cache é recuperada; não faz com que um modelo ou banco de dados ativo exija menos memória. Compare a mesma carga de trabalho antes de decidir se mantém a alteração.
Edite a configuração existente e mantenha uma forma de voltar
Abra %USERPROFILE% no Explorador de Arquivos e ative as extensões de nome de arquivo antes de criar ou editar .wslconfig. Um arquivo salvo acidentalmente como .wslconfig.txt não é a configuração pretendida. Copie uma configuração existente para um backup primeiro e preserve as seções não relacionadas à memória.
Em uma seção [experimental] existente, altere apenas a entrada de recuperação que está sendo testada. Um novo arquivo só é necessário se não existir nenhuma configuração e se uma mudança intencional de configuração for justificada. Não adicione linhas dropCache e gradual ao mesmo tempo nem duplique a seção depois de copiar exemplos de artigos diferentes.
O padrão documentado pela Microsoft já recupera o cache. Alterá-lo para gradual é um experimento de política, não uma atualização que sempre economiza mais memória. Isso pode manter o cache residente por mais tempo do que a recuperação imediata. Se não houver um problema demonstrado com o comportamento atual, mantenha o padrão e investigue a carga de trabalho ativa.
Depois de aplicar uma mudança por meio de uma reinicialização segura do WSL, repita o mesmo trabalho e observe a capacidade de resposta do Windows, a memória disponível no Linux e se o trabalho é concluído. Se a mudança não for útil, restaure a entrada anterior a partir do backup e aplique essa restauração com as mesmas precauções de salvar e reiniciar. Não apague a configuração inteira para remover uma linha experimental.
Reinicie o WSL somente após salvar seu trabalho
As alterações de configuração são aplicadas quando o ambiente do WSL reinicia. Os comandos básicos da Microsoft documentam o comando de desligamento global:
wsl --shutdown
Antes de usá-lo, salve arquivos, pare tarefas de treinamento ou inferência e desligue normalmente os contêineres ou bancos de dados afetados. O comando interrompe todas as distribuições em execução e a VM do WSL 2, incluindo o trabalho por trás do Docker Desktop. Não é um botão seletivo de redução de memória.
Se a memória do VmmemWSL desaparecer após o desligamento, isso confirma que o ambiente interrompido era o proprietário dela. Isso não distingue um vazamento de uma tarefa ativa ou de cache útil. Reinicie os serviços necessários e compare após a conclusão do mesmo trabalho.
Use um limite de memória como orçamento, não como reparo
A configuração .wslconfig memory limita a memória disponível do WSL 2. Um limite muito baixo pode fazer aplicações Linux falharem ou usarem swap intensamente. Ele não remove a exigência de um programa. Escolha-o somente após medir a carga de trabalho e a RAM que o Windows também precisa, depois verifique se a aplicação é concluída com sucesso.
A orientação do Docker Desktop para WSL discute a recuperação de memória para seu backend WSL. Mantenha a configuração nesse backend em vez de aplicar instruções não relacionadas do Hyper-V.
Confirme que um limite de memória realmente entrou em vigor
Se um limite for necessário, coloque memory em [wsl2] na configuração existente. Por exemplo, memory=8GB significa um limite de 8 GB, não 8 GB reservados para cada distribuição. Esse é um exemplo de sintaxe, não um orçamento recomendado para todo PC. Várias distribuições do WSL 2 compartilham o orçamento global da VM, então inclua o trabalho simultâneo delas ao escolhê-lo.
Depois de salvar o trabalho e reiniciar o WSL, inspecione o total informado por free -h dentro de uma distribuição e compare-o com o limite pretendido, considerando a sobrecarga do sistema. Em seguida, execute o modelo ou a compilação real. Um número menor no Gerenciador de Tarefas não é sucesso se o trabalho no Linux agora é encerrado ou passa o tempo trocando páginas.
Se o limite parecer ignorado, verifique a conta do Windows proprietária do arquivo, sua extensão, se a distribuição de destino é WSL 2 e se a VM antiga parou completamente. Essas verificações são mais informativas do que baixar o número repetidamente. Não desative a swap como um segundo experimento simultâneo, já que isso muda como a carga de trabalho se comporta ao atingir seu orçamento.
Para cargas de trabalho do Docker, mantenha intacto o comportamento normal de desligamento e persistência de dados do Docker. Fechar um terminal não necessariamente interrompe seu contêiner, enquanto um desligamento global do WSL pode interromper vários serviços não relacionados. Salve o trabalho de banco de dados e de treinamento pelos próprios controles do aplicativo antes de aplicar uma mudança em toda a VM.
Mantenha RAM e espaço em disco virtual separados
| Problema | Investigação relevante |
|---|---|
| A memória aumenta enquanto uma tarefa de IA é executada | Modelo, contexto e trabalho Linux concorrente |
| O cache permanece após o término do trabalho | Comportamento de recuperação e versão do WSL |
| O PC inteiro está sob pressão | Memória e comprometimento do Windows |
| O arquivo de disco do WSL permanece grande | Armazenamento de arquivos e disco virtual, não RAM |
O guia de memória do Windows cobre as leituras do lado do host. Para capacidade de disco, use o guia separado de armazenamento do Docker e WSL. Nunca use wsl --unregister como atalho de limpeza: ele remove uma distribuição e seus dados em vez de resolver uma leitura de memória alta.