VMware 虚拟机,调整大小核心调度,优化性能,酷睿12,13代CPU及以后P-cores和E-cores。但VMware 17版之前随机核心调度导致性能不佳

VMware workstation (2023年之前的版本)没有针对大小核架构的CPU进行过优化,于是window是随机给虚拟机分配核心。
(随机这个说法不严谨,但这里先不细究)。大部分12与13代酷睿CPU由于(效率核,大核)数量少于(能效核,小核),一开始win11是优先给虚拟机分配小核,此时看到虚拟机启动很慢。在虚拟机运行大负载时,win11会把大核切换给虚拟机,但只要你不是操作VMware的界面,而是操作win11,那么会认为虚拟机是后台程序,又很快切到小核上。

然而VMware workstation似乎并不区分自己运行在什么核上。

首先,大核速度快,并且在资源紧张时大核优先,小核甚至是闲着围观大核跑满。其次,遇到经常切换操作虚拟机和win11的使用场景,切换核心本身也会造成一点卡顿,降低虚拟机里操作流畅度。另外,13代在你不操作时甚至停小核省电,此时唤醒虚拟机竟然得三四秒。
在虚拟机中,Ubuntu22.04在虚拟机中不区分也不知道大小核,假设一个程序需要4线程并行跑,有可能win11给虚拟机分配的线程在3小核+1大核上,那么在大核的线程跑完,也得等小核的线程跑完才能看结果。因此大部分情况虚拟机使用速度取决于小核。

解决办法是指定VMware占用的CPU编号。注意,这不是“严谨”的方案,不过总体有效。
修改虚拟机文件夹下的配置文件 name.vmx,其中name是你虚拟机的名称,以txt方式打开。
在文件最后,通过增加以下方式指定哪些线程可用或不可用。

Processor0.use = "TRUE"
Processor1.use = "TRUE"
Processor2.use = "TRUE"
Processor3.use = "TRUE"
Processor4.use = "TRUE"
Processor5.use = "TRUE"
Processor6.use = "TRUE"
Processor7.use = "TRUE"
Processor8.use = "FALSE"
Processor9.use = "FALSE"
Processor10.use = "FALSE"
Processor11.use = "FALSE"
Processor12.use = "FALSE"
Processor13.use = "FALSE"
Processor14.use = "FALSE"
Processor15.use = "FALSE"

你需要知道自己cpu的大小核数量核线程数量,12代,13代一般大核是2线程,小核1线程。上面这段用于4P+8E核心, 16线程的CPU,其中4个大核是前8个线程,对应0~7的编号。那么把后8个E核的线程填FALSE,实现禁用。这样就实现了仅在大核跑虚拟机。如下图


当然,也可用此方式实现仅在小核跑虚拟机,这样也比大小核自动切换调度导致的卡顿体验好。或者固定最后4E核给虚拟机,由于前面线程的大核与存在win的许多进程,抢资源情况下也许不如用最后4个空闲的小核)。

注意设置 TRUE线程的数量要大于虚拟机设置的数量,否则会出现打不开虚拟机情况

  • 10
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值