vmware虚拟机运行多个产生卡顿问题
最近在工作中使用电脑运行两个虚拟机,用来测试程序。运行的时候发现电脑会非常卡顿。导致调试工作进行到一半就会闪退卡死。
首先尝试的解决方案是开一个虚拟机,然后在windows上部署测试程序,后面发现操作很受限制。然后使用windows管理工具发现电脑卡顿是因为内存问题,卡顿的时候内存已经跑到了98%,因为之前笔记本也有内存占用率过高,导致网页加载都很慢,后面解决方案是禁用win10自动升级。所以首先想到的是禁用系统自动升级。
此时问题变为了研究如何关闭win10自动更细,修改注册表,关闭自动更新等服务。但是发现一通操作后,电脑左下角的关机并更新还是存在(笔记本当时改了,直接不显示更新了)。因为电脑依旧卡顿,所以认为是这个方面的原因。后面折腾了一通,误打误撞通过设置里面暂停更新时间,刷新了左下角的自动更新。然后自动更新消失。此时满心欢喜,以为可以成功调试。
怀着激动的心情,重启电脑,打开任务管理器,开虚拟机,盯着内存的变化。令人失望的是,内存依然是跑到了98%。
此时心情是崩溃的。继续查资料,deepseek,看帖子,是不是禁用没有生效。一通操作依然无果。
问题还没有解决,暂时还没有好办法。不管了,先调试吧,虽然很卡。
调试时依然想着这个事,然后发现问题的根本原因是在虚拟机上面,虚拟机总体占用内存过高。虽然程序运行的程序只占了2G,,但是内存却会飙到了7G。顺着这条线索,使用free -m 命令发现是buff/cache 占用了接近5G内存。
那下一步就清缓存呗,清了一通发现缓存清了,我重启,在调试。依旧是跑到了7G。起了怪了,不信清不掉缓存了。继续百度,脚本、帖子、deepseek。后面在某一篇博客的角落里发现,这个buff/cache是动态变化的。(扶额苦笑,白清了。)比如,我给虚拟机分分配了8G内存,虚拟机就会根据剩余的内存自动分配缓存大小。所以要解决本质上要在分配时限制虚拟机内存总量。
因为宿主机内存有16个G。原本两个虚拟机一个给了8G,一个给了4G,在加上宿主机程序自己占用的内存,很容易便飙到了98%。此时虽然是虚拟机自动分配缓存导致的卡顿,但不是虚拟机卡,是因为宿主内存占用率高导致了卡顿。
后面通过缩小虚拟机内存,一个6G,一个2G。在次调试程序。流畅运行。prefect.
遇到运行多个虚拟机卡顿时,可以尝试排查是否多个虚拟机总内存占用率过高。