Instalei o docker no Windows Home, que usa o WSL2 como back-end. No entanto, ao fazer isso, um processo chamado vmmem
parece estar consumindo consistentemente muitos recursos computacionais. Corri docker stop $(docker ps -aq)
para matar todos os contêineres em execução (havia 12 - oops), o que melhorou significativamente o problema. No entanto, mesmo depois de fechar o docker, vmmem
ainda está consumindo ~ 1,5 - 2 Gb de RAM e ~ 20% da CPU. Como não há mais contêineres em execução, o consumo de recursos não deveria vmmem
ser mínimo? Como posso reduzir o consumo do vmmem
processo?
relate perguntas
-
O serviço de arbitragem USB da estação de trabalho VMware não inicia automaticamente
-
Como ativar o sensor de impressão digital no domínio e no diretório ativo do Linux
-
atalho do shell da área de trabalho no painel lateral do explorer
-
Por que não consigo enviar arquivos do Android para o Windows 10?
-
Abrir com em vários arquivos?
Daniel B está no dinheiro. Para desativar o Vmmem, basta acessar o Powershell ou qualquer terminal que você queira usar com direitos de administrador e inserir o comando
wsl --shutdown
, quando terminar de jogar no wsl1/2.Eu edito a configuração do WSL para limitar o uso de memória conforme mencionado aqui .
Defina os valores desejados para o núcleo da CPU e a memória:
vmmem
mesmo após o desligamento do docker, ele será executado por alguns segundos até 1 minuto antes de desligar completamente. Portanto, tente desligar seus contêineres e docker e ele deve desaparecer em breve.A resposta aceita fala sobre o desligamento
WSL
(o subsistema do Windows para Linux), o que faz sentido se você realmente abriu e instalou uma distro, mas desde que você mencionouDocker
, acho quevmmem
está apenas mostrando o uso de contêineres docker apenas.Aqui está uma boa explicação de um indivíduo confiável: https://devblogs.microsoft.com/oldnewthing/20180717-00/?p=99265
Editar:
Considerando que a questão principal era como reduzir o consumo de RAM, e já que você está usando o docker; dê uma olhada em: Docker Resource Contraints
Mais especificamente o
--memory=2g
parâmetro, você pode limitar a RAM que um contêiner usará e, por sua vezvmmem
, usará menos RAM também.Reinicie o WSL2, executando o seguinte comando no PowerShell, clique com o botão direito e execute no modo Administrador:
A memória está sendo consumida pelo Linux para armazenar arquivos em cache. Pode ser visto na
buff/cache
seção defree
comando. Para descartar o cache, basta executarecho 3 | sudo tee /proc/sys/vm/drop_caches
.Se você deseja interromper o processo vmmem, tente desta forma
No meu caso, não tenho o WSL instalado, mas tenho o Docker. Eu desliguei o processo do docker de forma deselegante e notei algum tempo depois que o vmmem estava usando muita CPU. O Windows não me permitiu matar o processo vmmem.
Tive que abrir o Docker novamente e desligá-lo normalmente por meio do ícone da bandeja do sistema. Depois disso, vmmem não estava mais rodando.
De acordo com este tópico: https://github.com/microsoft/WSL/issues/6982 , usar a configuração de memória em .wslconfig nem sempre funciona.
A solução parece ser:
\Users\<USERPROFILE>\.wslconfig
(crie o arquivo se ele não existir)wsl --shutdown
no powershell ou no prompt de comando (ele diz desligamento, mas na verdade para e reinicia todas as distribuições wsl em execução)Essa pergunta tinha cerca de 2 anos na época em que olhei para ela e estava passando por problemas agora. Pode ser devido à ativação do Kubernetes dentro do Docker para Windows (não tenho certeza disso).
Consegui desligar o Windows Subsystem for Linux (WSL) usando o
wsl --shutdown
comando que liberou memória, mas desativou o uso do Docker.Então, atualizei meu
~/.wslconfig
arquivo (também conhecido%USERPROFILE%\.wslconfig
como ) conforme sugerido para reduzir a memória. Acredito que isso ajudou.Mais tarde, descobri que meu subsistema WSL estava desatualizado e não estava sendo atualizado (por padrão) com as atualizações do Windows porque eu havia desativado o
Receive updates for other Microsoft products when you update Windows
.Então eu habilitei isso e executei
wsl --update
(no shell do administrador), e minha versão do WSL foi atualizada de 16/03/21 (Kernel Version 5.4.72
) para hoje (22/05/22) (Kernel Version 5.10.102.1
).Espero que isso também ajude.
Será que tem a ver com isso????
Para meus problemas, alto uso de CPU e RAM por vmmem, tentei todas as soluções que pude procurar aqui e em outros lugares para WSL2. Parece que, para alguns tipos de tarefas, o WSL2 consumirá sua memória e não a cuspirá quando terminar ...
Exceções para usar o WSL 1 em vez do WSL 2:
Não preciso do WSL2 para esta tarefa específica... Estou tentando o WLS1 agora...
Vou postar uma atualização de como está indo...
Atualização: Mudar para o WSL1 resolve para mim ao executar muitos subprocessos, ao que parece. Eu tenho corrido muito além do ponto de tempo em que ele sobrecarrega a RAM e para.