图片使用了smms图床,特殊网络下可能无法加载;
qemu-system-x86_64 -M q35 -accel kvm -cpu host -m 4096 -smp 4 -drive file=drive
前置知识:超线程——任务管理器里展示的并不是真正的CPU
测试使用的CPU为英特尔® 酷睿™ i3-12100 处理器 (intel.cn),根据规格表,一共有4颗核心。而在htop中,可以看到8个CPU负载
是因为操作系统以CPU支持的线程数,作为逻辑核心展示,而不是物理核心;
当CPU启用超线程后,CPU 会在每个物理内核上公开两个执行上下文,一个物理内核现在就像两个“逻辑内核”一样,可以处理不同的软件线程;
By taking advantage of idle time when the core would formerly be waiting for other tasks to complete, Intel® Hyper-Threading Technology improves CPU throughput.(协程和这个理念基本相同)
当然,超线程技术并不能让多核性能简单的x2,理想情况下可以带来20%至30%左右的性能(吞吐量)提升。
为虚拟机分配核心
QEMU使用-smp分配核心,使用方式:
-smp [[cpus=]n][,maxcpus=maxcpus][,sockets=sockets][,dies=dies][,clusters=clusters][,cores=cores][,threads=threads]
可以简单理解为一颗叶子节点为线程(逻辑核心)的满二叉树:
逻辑处理器数量:
$$ n=sockets*dies*clusters*cores*threads $$
其中,maxcpus是QEMU为热插拔设置的属性,在此不展开;
| 参数 | 对应的物理对象 | 参数作用 |
|---|---|---|
| sockets | CPU插槽 | CPU插槽数目 |
| dies | CPU晶片 | 每个CPU有几块承载核心的晶片 |
| clusters | 晶片上的CPU簇 | / |
| cores | CPU核心 | 每簇包含几个CPU |
| threads | / | 每个CPU核心通过超线程支持的线程数 |
常见写法:
-smp 8,sockets=2,cores=2,threads=2,maxcpus=8
-smp 16,sockets=2,dies=2,cores=2,threads=2,maxcpus=16
-smp 16,sockets=2,clusters=2,cores=2,threads=2,maxcpus=16
如果不是特殊用途,可以不考虑那么多,直接指定逻辑核心数:
-smp 8
分配多少核心合适?一半的核心就是50%性能吗?
硬件:Intel 12100(4核8线程,无E核), DDR4 32G 3200Mhz RAM
软件:GeekBench 6.1.0
宿主机:PVE运行的QEMU Ubuntu 22.04,分配8核心、10G RAM
客户机:(嵌套虚拟化) Ubuntu 22.04,4G RAM,KVM,HOST
宿主机测试性能:单核2265、多核7711,QEMU Standard PC (i440FX + PIIX, 1996) - Geekbench
测试逻辑核心数对CPU性能的影响:
| n | single core | multi core | url |
|---|---|---|---|
| 2 | 2219 | 3951 | https://browser.geekbench.com/v6/cpu/2163160 |
| 3 | 2211 | 5393 | https://browser.geekbench.com/v6/cpu/2155331 |
| 4 | 2229 | 6621 | https://browser.geekbench.com/v6/cpu/2162777 |
| 5 | 2211 | 6804 | https://browser.geekbench.com/v6/cpu/2166785 |
| 6 | 2227 | 7000 | https://browser.geekbench.com/v6/cpu/2163264 |
| 7 | 2222 | 7302 | https://browser.geekbench.com/v6/cpu/2163313 |
| 8 | 2210 | 7478 | https://browser.geekbench.com/v6/cpu/2155189 |
| 16 | 2204 | 5938 | https://browser.geekbench.com/v6/cpu/2155391 |