chenglong

Apr 03, 2023

在 Windows 10 中,名为 Vmmem 的进程占用内存过高的排查分析 – 永夜

1、在 Windows 10 中,感觉卡顿得厉害。查看任务管理器,内存占用 98%。而名为 Vmmem 的进程占用内存高达 2.1 GB 。如图1
图1
notion image
2、Vmmem 进程是系统合成的一个虚拟进程,用于表示虚拟机消耗的内存和 CPU 资源。 换句话说,如果您看到 Vmmem 消耗大量内存和 CPU 资源,那么这意味着您的虚拟机正在消耗大量内存和 CPU 资源。如果要让它停止,请关闭您的虚拟机。
3、我认为原因应该在于操作系统上运行了 Docker,并且正在进行的开发也可能使用它。 尝试寻找 Docker Desktop 并退出它,然后任务应该消失了。或者设置 Docker Desktop 的 内存 与 CPU 的占用限额。
4、打开 Docker Desktop,Settings – Resources – ADVANCED。您正在使用 WSL 2 后端,因此资源限制由 Windows 管理。您可以在 .wslconfig 文件中配置分配给 WSL 2 的内存、CPU 和交换大小的限制。如图2
图2
notion image
5、点击 .wslconfig,链接至 Advanced settings configuration in WSL:https://docs.microsoft.com/en-us/windows/wsl/wsl-config#configure-global-options-with-wslconfig 。WSL 2 作为轻型虚拟机 (VM) 运行,因此使用虚拟化设置可以控制使用的内存或处理器量。
6、在 PowerShell 中使用 cd ~ 访问主目录(通常是用户配置文件 C:\Users\<UserName>)。目录:C:\Users\Lenovo。如图3
图3
notion image
7、由于文件 C:\Users\Lenovo\.wslconfig 不存在,则新建。processors:要分配给 WSL 2 VM 的处理器数量。Windows 上相同数量的处理器。memory:要分配给 WSL 2 VM 的内存量。Windows 上总内存的 50% 或 8GB,以较小者为准;在 20175 之前的版本上:Windows 上总内存的 80%。swap:要向 WSL 2 VM 添加的交换空间量,0 表示无交换文件。 交换存储是内存需求超过硬件设备限制时使用的基于磁盘的 RAM。Windows 上 25% 的内存大小四舍五入到最接近的 GB。localhostForwarding:一个布尔值,用于指定绑定到 WSL 2 VM 中的通配符或 localhost 的端口是否应可通过 localhost:port 从主机连接。我的电脑的内存为 16 GB,处理器为 Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz 2.71 GHz,其内核数:2,线程数:4。
8、运行 wsl –shutdown 来关闭 WSL 2 VM,然后重启 WSL 实例(即重启 Docker Desktop)以使这些更改生效。如图4
9、再次查看任务管理器,内存占用 92%。而名为 Vmmem 的进程占用内存仍然接近 1.8 GB ,有所下降,系统卡顿有所缓解。如图5
notion image
10、如果运行 wsl –shutdown 来关闭 WSL 2 VM,然后不再重启 WSL 实例(即退出 Docker Desktop)的话。再次查看任务管理器,内存占用 80%。而名为 Vmmem 的进程已经消失 。如图6
notion image
11、总结来看,如果需要在 Windows 10 中运行 Docker Desktop,内存配置为 32 GB 或许更为合适一些的。计划新购买笔记本时,配置内存为 32 GB 的。

Copyright © 2024 chenglong

logo