确定 QEMU KVM 开销?

确定 QEMU KVM 开销?

我的客户操作系统显示 CPU 使用率约为 5%,但我的主机显示 QEMU 进程占用了大约 25%。

我试图了解这种差异来自何处,因为我正在使用 KVM 加速,并且 CPU 应该具有接近本机的性能。

我认为磁盘或网络访问可能导致这种差异,因为这些层对于客户机来说是不可见的。

但是有没有什么方法可以准确确定造成这 20% 开销的主要原因呢?

答案1

CPU 利用率很少能说明全部情况。有些工具计算 1 个 CPU 的分数,有些工具计算所有系统 CPU 的分数。总数并不能说明 CPU/内存负载在做什么,它可能在做有用的工作,也可能是系统开销。

更好的测试应该量化某个应用程序在大力推动系统的同时完成的工作量。并在发生这种情况时对系统进行分析。压力测试微基准测试按需创建负载,即使这些“虚假”操作是合成的并且有点人为。

例如,在 Linux 上将 perf record -a -F 999 -- stress-ng --metrics --cpu 1 --timeout 1m创建一分钟的 CPU 负载,同时以毫秒精度分析任何 CPU 上的情况。“bogo ops”量化已完成的工作。

在虚拟机和裸机操作系统安装中多次重复此测试。记住科学方法,尽可能保持变量相同。相同的硬件、相同的操作系统发行版和补丁级别、相同的工作负载参数、相同的分析参数。

通过将 CPU 划分为内核、驱动程序和应用程序来检查 CPU 上的内容,perf report需要安装调试符号,并研究各种功能的作用。虚拟机管理程序开销不会出现在客户机中,但可以通过与裸机结果的任何吞吐量差异推断出来。

综合测试与实际工作负载有很大不同。我的 Stress-ng 示例没有执行任何 I/O,这在实践中从未发生过。进行类似的分析和分析,但工作负载是主机应该执行的。提示:在分析整个系统但不需要启动另一个程序时,可以让 sleep 运行计时器: perf record -a -- sleep 60

相关内容