装了虚拟机很卡,第一时间要排查的永远是资源分配和硬件虚拟化开关,其次是虚拟磁盘的位置和类型,绝大多数卡顿都出在这三个环节,而不是虚拟机本身。
装了虚拟机很卡?先判断瓶颈在内存还是CPU
卡顿不能瞎优化,得先找到瓶颈,打开宿主机任务管理器和虚拟机内部的任务管理器,两边对着看。
宿主机内存占用接近100%
如果宿主机物理内存已经用了80%以上,虚拟机跑起来就会疯狂读写虚拟内存,卡是必然的,把虚拟机内的内存调小一点,或者关掉宿主机上不用的程序,先把内存腾出来。
虚拟机内CPU一直爆满
如果虚拟机内的CPU使用率长期超过90%,但宿主机CPU还有余量,说明你分配给虚拟机的CPU核心数太少了,如果是反向情况宿主机CPU爆满,说明物理机本身性能不够,或者虚拟机里跑了特别吃CPU的任务。
虚拟机内磁盘长期显示100%
这是最容易被忽略的卡顿来源,打开虚拟机内的资源监视器,如果磁盘活动时间一直很高,但CPU和内存都正常,问题多半出在虚拟磁盘的读写性能上,这就引出了下面的关键操作。
虚拟机运行缓慢怎么解决?调整这4个关键参数
行业共识认为,90%的虚拟机卡顿通过调整以下四个参数就能明显缓解,很多人的虚拟机卡顿,其实是给虚拟机分配的资源又少又乱。
内存分配要有余量
32位Windows虚拟机给2到4GB内存足够,64位Windows建议4到8GB,别贪多,如果宿主机总内存只有8GB,给虚拟机分6GB,宿主机自己不够用,卡得会更厉害,分配原则是:虚拟机内存不超过宿主机内存的一半,保留足够空间给宿主机系统。
CPU核心数精确匹配任务
虚拟机里的CPU核心数不是越多越好,在VMware和VirtualBox中,分配给虚拟机的逻辑处理器数量不要超过宿主机物理线程数的一半,办公用途给2核就够,开发和编译场景给4核更有用,核心数给太多,反而会加剧调度负担。
显存和3D加速必须打开
如果你在虚拟机里用Windows 11或者有图形界面的Linux,一定要在设置里调大显存,VMware里打开“加速3D图形”,VirtualBox里打开“启用3D加速”,同时把显存调到128MB以上,这样界面缩放、窗口拖动都会流畅很多。
硬件虚拟化开关是前提
在虚拟机设置里找到处理器选项,勾选“虚拟化Intel VT-x/EPC”或“虚拟化AMD-V/RVI”,同时检查BIOS中是否开启了CPU虚拟化技术,这一步不做,就算资源给足,虚拟机也会卡得像幻灯片。
装虚拟机卡顿是硬盘问题吗?换SSD和固定磁盘能解决
如果你已经调好内存和CPU,虚拟机启动和弹窗还是慢,那大概率是硬盘背锅了。
虚拟磁盘动态分配换固定分配
创建虚拟机时,虚拟磁盘有两类:动态分配和固定大小,动态分配磁盘会随使用逐渐增大,性能较差;固定大小磁盘一次性占满空间,读取更稳定,已经建好虚拟机的,可以在关闭系统后,使用虚拟机软件自带的工具压缩或转换磁盘格式,如果实在不想迁移,尽量把虚拟机放在SSD上,据统计,机械硬盘上跑虚拟机,磁盘响应时间会比固态硬盘慢数倍。
关闭未使用的系统还原和索引
虚拟机内部如果开启了Windows系统还原,会持续产生大量写入,建议在虚拟机内关闭系统还原,并禁用Windows Search索引服务,很多卡顿都是虚拟机后台在疯狂索引文件造成的。
安装增强工具别偷懒
VMware装VMware Tools,VirtualBox装增强功能,这些工具会安装专用的半虚拟化驱动,能显著改善网络和磁盘I/O,很多人装了虚拟机不装增强工具,鼠标都飘得不行,更别说文件拖拽和分辨率自适应了。
VMware和VirtualBox卡顿优化有什么不同?侧重点不一样
用VMware还是VirtualBox,优化思路略有区别,下面这张表直接说明差异。
| 优化项目 | VMware Workstation | VirtualBox |
|---|---|---|
| 增强工具 | VMware Tools | 增强功能 |
| 硬件虚拟化设置 | 需要勾选VT-x/AMD-V | 需要勾选嵌套分页或VT-x |
| 磁盘类型 | 推荐NVMe虚拟磁盘 | 推荐VHD固定大小 |
| 3D加速 | 直接启用加速3D图形 | 需要开启3D加速并调大显存 |
| 内存压力控制 | 可启用内存换出 | 没有明显的内存回收机制 |
VMware对Windows虚拟机支持更顺手,VirtualBox在Linux和旧系统上更轻量,但无论哪个软件,虚拟磁盘放在本地固态硬盘上、给足显存、开启硬件虚拟化这三点是通用的。
虚拟机优化实操:办公和开发场景各不同
不同用途的虚拟机卡顿原因和优化方向不同,直接照着做就行。
办公型虚拟机:主要折腾内存和显示
跑Windows 10办公,分配4GB内存和2个CPU核心就够,如果觉得界面缩放模糊或拖动卡,把显存调到256MB,并安装增强工具,很多办公场景的卡顿其实是分辨率和显示缩放没调对,跟CPU关系不大。
开发型虚拟机:优先给CPU和磁盘缓存
做Linux开发服务器,分配4核CPU和6GB内存,虚拟磁盘用固定大小并放在NVMe固态硬盘上,如果跑Android模拟器或Docker,还需要在BIOS中开启Intel VT-x虚拟化技术,开发场景下,磁盘I/O性能比内存大小更影响体验。
虚拟机卡顿最好的解决办法是什么?先做减法再做加法
很多人以为虚拟机卡就是硬件不够,拼命加内存加核心,其实方向错了,正确顺序是:先去掉多余的特效和后台服务,再调整关键参数,最后才考虑升级硬件。
- 关闭虚拟机内的动画特效和透明效果
- 关闭Windows Defender实时扫描(如果虚拟机里有安全软件,可替代)
- 设置虚拟机为固定内存分配,而不是自动调整
- 把虚拟机的页面文件放到固定大小的虚拟磁盘上
Q&A
装了虚拟机很卡和物理机内存大小有关系吗?
有关系但不算唯一因素,物理机内存只有8GB时,虚拟机给4GB以上就很容易卡,更关键的是物理机内存是否已经接近满载,如果剩下不到2GB空间,虚拟机再轻也会卡顿,建议物理机内存不小于16GB,同时给虚拟机预留足够余量。
虚拟机运行缓慢怎么解决最直接?
最直接的办法是检查虚拟机和宿主机两边的资源占用情况,如果宿主机内存和CPU都空闲,问题就在虚拟机的磁盘类型和硬件虚拟化上,依次执行:把虚拟机移到SSD、改为固定大小磁盘、勾选VT-x/AMD-V、安装增强工具,这四步做完,绝大多数卡顿都能消失。