我有以下问题。我在 Linux 机器上运行了几次压力测试
$ uname -a
Linux debian 3.14-2-686-pae #1 SMP Debian 3.14.15-2 (2014-08-09) i686 GNU/Linux
它是 Intel i5 Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz,8 G RAM,300 G HDD。
这些测试不是 I/O 密集型的,我主要通过以下方式计算双重算术:
start = rdtsc();
do_arithmetic();
stop = rdtsc();
diff = stop - start;
我多次重复这些测试,在物理机或基于 KVM 的 VM 上运行我的基准测试应用程序:
qemu-system-i386 disk.img -m 2000 -device virtio-net-pci,netdev=net1,mac=52:54:00:12:34:03 -netdev type=tap,id=net1,ifname=tap0,script=no,downscript=no -cpu host,+vmx -enable-kvm -nographichere
我为许多试验收集数据统计信息(即差异)。对于物理机(未加载),我得到的处理延迟的数据分布很可能是一个非常窄的对数正态分布。
当我在虚拟机上重复实验时(物理机和虚拟机都没有加载),对数正态分布仍然存在(形状有点宽),但是,我收集了一些完成时间短得多的点(大约两倍)比为物理机收集的绝对最小值!(请注意,物理机上的完成时间分布非常窄,接近最小值)。还有一些点的完成时间比硬件机器上的平均完成时间长得多。
我想我的 rdtsc 基准测试方法对于 VM 环境不是很准确。您能否建议一种改进我的基准测试系统的方法,该系统可以在物理和基于 kvm 的虚拟环境之间提供可靠(可比较)的统计信息?至少在某些情况下,这不会告诉我 VM 在少数情况下比硬件 PC 快 2 倍。
提前感谢您对此主题的任何建议或意见。
此致