我正在运行dhrystone基准测试工具,以查看运行ubuntu 22.04预装映像的qemu-system-riscv64的性能。主机有2个内核,每个内核有1个线程。我在qemu-system-riscv64上运行了1、2和4核的组合测试(可以用smp
标志指定)。我观察到,当我从qemu-system-riscv64的1核到2核时,dhrystones增加了,但是当我从2核到4核时,dhrystones的数量比2核的数量少。这种行为的原因是什么?我使用以下命令启动ubuntu 22.04:
qemu-system-riscv64
-machine virt -nographic -m 2048 -smp 4
-kernel $UBOOTPATH/u-boot.bin
-device virtio-net-device,netdev=eth0 -netdev user,id=eth0,hostfwd=::<host_port>-:<VM_port>
-drive file=ubuntu-22.04.1-preinstalled-server-riscv64+unmatched.img,format=raw,if=virtio
我也尝试运行make
与-j
标志,同样的行为发生当我使用-j4
和-j2
如上所述
Qemu target riscv64-softmmu支持MTTCG,因此每个模拟的客户机内核在单独的主机线程中运行,因此客户机性能被主机的总处理能力饱和。例如,如果客户机能够在空闲的主机系统上使用所有可用的客户机内核,那么添加一个新的客户机内核将提高客户机的整体性能,只要客户机内核的总数不超过主机内核的数量。在此之后,主机CPU负载将接近100%,添加新的客户内核只会增加主机CPU时间的并发性。