图片使用了smms图床,特殊网络下可能无法加载;

qemu-system-x86_64 -M q35 -accel kvm -cpu host -m 4096 -smp 4 -drive file=drive

发挥CPU全部性能:CPU模型与指令集

-cpu model

使用qemu-system-x86_64 -cpu help

301af3ec.png

我们暂时只要了解,QEMU提供这么多CPU模型,是为了便于我们迁移镜像到其他物理机,特别是不同CPU的物理机。

测试

硬件: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模型对CPU性能的影响:

cpu model single core multi core url
host 2224 7187 https://browser.geekbench.com/v6/cpu/2157089
max 2221 7366 https://browser.geekbench.com/v6/cpu/2157146
kvm64 1149 3994 https://browser.geekbench.com/v6/cpu/2157214

其中host、与max的性能可以视为误差范围内,而kvm64无论多核还是单核,理论性能测试只达到了理论性能的50%左右;


利用geekbench的对比功能:kvm64 vs max,可以看到在少数测试项目中kvm64性能与max近似,绝大部分性能低于60%;

原因是QEMU的CPU模型,包含了CPU特性的指定,当使用kvm64时,部分CPU特新无法展现。这一点可以通过cat /proc/cpuinfo | grep flags来验证;

而这些特性比如AVX指令集、AES指令集正是厂商为了加速某些领域的计算而设定的。

301af630.png

301af6fa.png