我在 Windows Home 上安装了 docker,它使用 WSL2 作为后端。但是,自从这样做以来,一个名为 的进程vmmem
似乎一直在消耗大量的计算资源。我运行docker stop $(docker ps -aq)
以杀死所有正在运行的容器(共有 12 个 - 哎呀),这大大改善了这个问题。但是,即使关闭 docker 后,vmmem
它仍然占用约 1.5 - 2GB 的内存和约 20% 的 CPU。既然不再有任何容器在运行,资源消耗不应该是vmmem
最小的吗?我该如何减少进程的消耗vmmem
?
答案1
Daniel B 说得对。要关闭 Vmmem,只需wsl --shutdown
在 wsl1/2 中玩完后,进入 Powershell 或任何你喜欢在管理员权限下使用的终端,然后输入命令 。
答案2
我编辑了 WSL 配置来限制内存使用量,如上所述这里。
# turn off all wsl instances such as docker-desktop
wsl --shutdown
notepad "$env:USERPROFILE/.wslconfig"
设置您想要的 CPU 核心和内存的值:
[wsl2]
memory=3GB # Limits VM memory in WSL 2 up to 3GB
processors=2 # Makes the WSL 2 VM use two virtual processors
答案3
vmmem
即使在 docker 关闭后,它也会运行几秒钟,最多 1 分钟,然后才会完全关闭。因此,请尝试关闭您的容器和 docker,它很快就会消失。
接受的答案谈论的是关闭WSL
(Linux 的 Windows 子系统),如果你真的打开并安装了发行版,这是有意义的,但既然你提到了Docker
,我猜你vmmem
只是展示了 docker 容器的使用情况。
以下是一位值得信赖的人给出的很好的解释:https://devblogs.microsoft.com/oldnewthing/20180717-00/?p=99265
编辑:
考虑到主要问题是如何减少 RAM 的消耗,并且由于您正在使用 docker;请看一下:Docker 资源限制
更具体地说--memory=2g
,您可以限制容器使用的 RAM,进而容器vmmem
本身也将使用更少的 RAM。
答案4
Linux 正在消耗内存来缓存文件。可以在命令buff/cache
部分看到free
。要删除缓存,只需运行echo 3 | sudo tee /proc/sys/vm/drop_caches
。