我有以下问题。我在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

我收集了许多试验的数据统计(即diff)。对于物理机(未加载),我得到的数据分布处理延迟大多可能是一个很窄的对数正态分布。
当我在虚拟机上重复实验(物理机和虚拟机未加载)时,对数正态分布仍然存在(形状稍宽),但是,我收集了几个点,完成时间比为物理机收集的绝对最小值短得多(约两倍)!!(注意,物理机器上的完成时间分布非常窄,接近最小值)。还有一些点的完成时间比硬件机器上的平均完成时间长得多。
我猜我的rdtsc基准测试方法对于vm环境来说不是很准确。您能否建议一种方法来改进我的基准测试系统,以便在物理环境和基于kvm的虚拟环境之间提供可靠的(可比较的)统计信息?至少,在少数情况下,这并不能说明vm比硬件pc快2倍。
提前感谢您对本主题的任何建议或意见。
致意

最佳答案

也许您可以尝试clock_gettime(CLOCK_THREAD_CPUTIME_ID,&ts),有关详细信息,请参见man clock_gettime

关于linux - 比较物理硬件和基于kvm的VM时遇到过奇怪的rdtsc行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25767100/

10-13 05:17