194 votes

Comment puis-je réduire la consommation du processus `vmmem` ?

J'ai installé docker sur windows home qui utilise WSL2 en tant que backend. Cependant, depuis que j'ai fait cela, un processus appelé vmmem semble consommer constamment beaucoup de ressources computationnelles. J'ai exécuté docker stop $(docker ps -aq) pour tuer tous les conteneurs en cours d'exécution (il y en avait 12 - oups) ce qui a considérablement amélioré le problème. Cependant, même après avoir fermé docker, vmmem continue de prendre ~ 1,5 - 2 Go de RAM et ~ 20% de CPU. Puisqu'il n'y a plus de conteneurs en cours d'exécution, la consommation de ressources de vmmem ne devrait-elle pas être minimale? Comment puis-je réduire la consommation du processus vmmem ?

181voto

smigel Points 1190

Daniiel B a raison. Pour éteindre Vmmem, il suffit d'entrer la commande wsl --shutdown dans Powershell ou tout autre terminal que vous aimez utiliser avec les droits d'administrateur, lorsque vous avez fini de jouer dans wsl1/2.

74 votes

Ceci ne répond pas à la question - j'ai besoin que mes dockers s'exécutent, mais je veux juste limiter la consommation de RAM

5 votes

Cela répond à peu près à votre question. Tant que vous utilisez Docker (ou tout autre utilitaire utilisant WLS2 comme backend), vous verrez vmmem consommer votre RAM. Si vous exécutez vos conteneurs, vmmem sera là.

0 votes

Docker génère une erreur lors de l'arrêt inattendu, y a-t-il un moyen meilleur de l'éteindre?

137voto

Je modifie la configuration du WSL pour limiter l'utilisation de la mémoire comme mentionné ici.

# Éteindre toutes les instances WSL telles que docker-desktop
wsl --shutdown
notepad "$env:USERPROFILE/.wslconfig"

Définissez les valeurs souhaitées pour le CPU et la mémoire :

[wsl2]
memory=3GB   # Limite la mémoire de la VM dans WSL 2 jusqu'à 3 Go
processors=2 # Fait utiliser deux processeurs virtuels à la VM WSL 2

5 votes

C'est également une excellente réponse ou devrait faire partie de la réponse principale. Limiter la VM limite aide à maintenir votre système utilisable.

6 votes

Cela devrait être la réponse acceptée

1 votes

Est-ce que ce fichier doit être créé? Ou dois-je le trouver déjà existant?

42voto

Lorenzo Points 379

vmmem même après l'arrêt de docker, continuera de fonctionner pendant quelques secondes jusqu'à 1 minute avant de s'arrêter complètement. Essayez donc d'arrêter vos conteneurs et docker et il devrait disparaître assez rapidement.

La réponse acceptée parle de l'arrêt de WSL (le sous-système de Windows pour Linux) ce qui a du sens si vous avez réellement ouvert et installé une distribution, mais puisque vous avez mentionné Docker, je suppose que votre vmmem montre uniquement l'utilisation des conteneurs docker.

Voici une bonne explication d'une personne de confiance : https://devblogs.microsoft.com/oldnewthing/20180717-00/?p=99265

Edit:

Étant donné que la question principale portait sur la réduction de la consommation de RAM, et puisque vous utilisez docker; jetez un œil à : Contraintes de ressources Docker

Plus précisément le paramètre --memory=2g, vous pouvez limiter la RAM qu'un conteneur utilisera, et par conséquent vmmem utilisera également moins de RAM.

8 votes

Cela fonctionne. Fermez Docker Desktop et après une minute, vmmem disparaît du Gestionnaire des tâches.

3 votes

De même, une minute après la fermeture de tous les terminaux WSL, vmmem disparaît

2 votes

Doit être la réponse acceptée.

19voto

Michael Kaufman Points 161

Redémarrez WSL2, en exécutant la commande suivante dans PowerShell en cliquant avec le bouton droit et en exécutant en mode administrateur :

Restart-Service LxssManager

0 votes

Ou wsl --restart

0 votes

@tejasvi88 wsl --restart ne fait rien, ce n'est pas un argument reconnu.

14voto

tejasvi88 Points 218

La mémoire est consommée par Linux pour mettre en cache des fichiers. Cela peut être vu dans la section buff/cache de la commande free. Pour vider le cache, il suffit d'exécuter echo 3 | sudo tee /proc/sys/vm/drop_caches.

0 votes

Voici. en combinant cette commande de vidage du cache avec la limitation de l'utilisation de la mémoire WSL, je suis heureux

0 votes

Cette solution permet de libérer de la RAM tout en conservant wsl / Docker actif. J'ai ajouté quelques détails.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X