图片使用了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
我们暂时只要了解,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指令集正是厂商为了加速某些领域的计算而设定的。