VMWare WorkStation 加速策略之二:CPU绑定和GPU优先级提升
最近开始使用 VMWare Workstation 进行日常编写办公,在不差钱、电脑配置足够高的前提下,这是一个很好的方案,往返办公室和家里,兜里装个固态盘就好,喜欢极致的甚至可以搞一个固体U盘。
在之前的被中文翻译耽误的重要功能:VMWare 虚拟机优先级调整中,我提到了 VMWare Workstation 虚拟机优先级调整的功能。但很奇怪的是,即使用了这个策略,办公室的双路至强工作站仍然是表现最差的。研究之后,发现了两个新的策略。
过犹不及的双路CPU
有问题的机器是双路至强6248R
,加起来96个逻辑核心。考虑到重载场景基本都是浮点计算,关闭了超线程,所以实际运行一个是48个独占核心,分在两个CPU上。主机系统是Windows 11.
按理说,这种机器用来办公,简直是杀蚂蚁用温压弹的节奏。但事实是响应性确实不行。虚拟机刚开始时还挺好,然后就逐渐变慢,直到最后点一下要一秒钟才有响应,怀疑人生。但是,如果在虚拟机中执行重型负载,例如压缩一个30GB的文件夹,总体速度还是配得上分配给它的16个核心的。所以,不是处理能力跟不上,而是反射弧太长。
最容易怀疑的当然是多核心的调度出了问题,操作系统觉得就你们16个干活,另外23个核心站旁边看着不够社会主义,所以把任务切来切去,再叠加双路CPU带来的跨CPU内存访问问题,导致性能下降。但是怎么解决呢?
尝试比较多的办法(包括用管理员权限运行vmware)后,最靠谱的还是最朴素的办法:在vmx
文件中添加48行CPU绑定语句,大概这样写:
Processor0.use = "FALSE"
Processor1.use = "FALSE"
Processor2.use = "FALSE"
Processor3.use = "FALSE"
Processor4.use = "TRUE"
Processor5.use = "TRUE"
Processor6.use = "TRUE"
Processor7.use = "TRUE"
Processor8.use = "TRUE"
Processor9.use = "TRUE"
Processor10.use = "TRUE"
Processor11.use = "TRUE"
Processor12.use = "TRUE"
Processor13.use = "TRUE"
Processor14.use = "TRUE"
Processor15.use = "TRUE"
Processor16.use = "TRUE"
Processor17.use = "TRUE"
Processor18.use = "TRUE"
Processor19.use = "TRUE"
Processor20.use = "FALSE"
Processor21.use = "FALSE"
Processor22.use = "FALSE"
Processor23.use = "FALSE"
Processor24.use = "FALSE"
Processor25.use = "FALSE"
Processor26.use = "FALSE"
Processor27.use = "FALSE"
Processor28.use = "FALSE"
Processor29.use = "FALSE"
Processor30.use = "FALSE"
Processor31.use = "FALSE"
Processor32.use = "FALSE"
Processor33.use = "FALSE"
Processor34.use = "FALSE"
Processor35.use = "FALSE"
Processor36.use = "FALSE"
Processor37.use = "FALSE"
Processor38.use = "FALSE"
Processor39.use = "FALSE"
Processor40.use = "FALSE"
Processor41.use = "FALSE"
Processor42.use = "FALSE"
Processor43.use = "FALSE"
Processor44.use = "FALSE"
Processor45.use = "FALSE"
Processor46.use = "FALSE"
Processor47.use = "FALSE"
简单粗暴有效。有多少核心就写多少行,TRUE
表示这个核心可以用来运行这个虚拟机,FALSE
表示不能。因此数量要和分配的核心数一致。这样更改之后,没有再发生速度逐渐避免的情况。
当然,做为移动办公,不可能所有的机器都是48核。这个我的建议是新建多个虚拟机,每个物理机对应一个虚拟机,但所有的虚拟机用使用同一个vmdk
硬盘,这就有点像虚拟的Windows To Go了,但基本没有驱动切换和冲突,用起来省心。
GPU优先级提升
Windows 11 默认对独显台式机也有一些节能设定,简直匪夷所思。Windows 10 LTSC 目前没有发现类似问题。
简单来讲就是,除非是打知名游戏,否则 Windows 11 很有可能使用“显卡节能”模式运行自己不认识的软件,有集显的话甚至可能默认集显。
具体地,到“设置-系统-屏幕-显示卡”界面,看到类似下面的界面:

把 vmware.exe
和 vmware-vmx.exe
两个文件加进来,都设置成“高性能”模式,然后重启物理机。
感觉上是好一点,好了多少不好说。但总体上,虚拟机内外的响应性手感没区别了。
然而,双路至强6248R/768G内存的机器,无论是虚拟机还是真实机,手感都比不上单个i9-14900K/96G内存的机器,估计主频的差异很难依靠核数堆回来了。