我发现对于像您这样的问题没有简单而绝对的答案。每个虚拟化解决方案在特定的性能测试上的行为都不同。另外,可以将磁盘I / O吞吐量之类的测试划分为许多不同的测试(读取,写入,重写,...),结果因解决方案而异,因方案而异。这就是为什么不难指出一种解决方案是磁盘I / O最快的原因,这就是为什么对于诸如磁盘I / O开销之类的标签没有绝对答案的原因。
当试图找到不同基准测试之间的关系时,它变得更加复杂。我测试过的解决方案在微操作测试中都没有良好的性能。例如:在VM内,一次“ gettimeofday()”调用完成的时钟周期平均要比硬件上多11.5倍。系统管理程序针对现实世界的应用程序进行了优化,并且在微操作上表现不佳。对于您的应用程序来说,这可能不是问题,因为它可能更适合实际应用程序。我的意思是通过微操作来完成所有花费少于1,000个时钟周期的应用程序(对于2.6 GHz CPU,在385纳秒或3.85e-7秒内花费1,000个时钟周期)。
我对用于x86体系结构的数据中心整合的四个主要解决方案进行了广泛的基准测试。我做了近3000项测试,比较了虚拟机内部的性能和硬件性能。我称“开销”为VM内部测得的最大性能与硬件上测得的最大性能之差。
解决方案:
- VMWare ESXi 5
- Microsoft Hyper-V Windows 2008 R2 SP1
- Citrix XenServer 6
- 红帽企业虚拟化2.2
来宾操作系统:
- Microsoft Windows 2008 R2 64位
- 红帽企业版Linux 6.1 64位
测试信息:
- 服务器:2X Sun Fire X4150,每个具有8GB RAM,2X Intel Xeon E5440 CPU和四个千兆以太网端口
- 磁盘:千兆以太网上的iSCSI上有6X 136GB SAS磁盘
基准软件:
CPU和内存:32位和64位的Linpack基准测试。这会占用大量CPU和内存。
磁盘I / O和延迟:Bonnie ++
网络I / O:Netperf:TCP_STREAM,TCP_RR,TCP_CRR,UDP_RR和UDP_STREAM
微操作:rdtscbench:系统调用,进程间管道通信
使用以下参数计算平均值:
CPU和内存:AVERAGE(HPL32,HPL64)
磁盘I / O:AVERAGE(put_block,重写,get_block)
网络I / O:AVERAGE(tcp_crr,tcp_rr,tcp_stream,udp_rr,udp_stream)
微操作AVERAGE(getpid(),sysconf(),gettimeofday(),malloc [1M],malloc [1G],2pipes [],simplemath [])
对于我的测试场景,使用我的指标,四个虚拟化解决方案的结果平均值为:
VM层开销,Linux guest虚拟机:
CPU和内存:14.36%
网络I / O:24.46%
磁盘I / O:8.84%
读取磁盘延迟:慢2.41倍
微操作执行时间:慢10.84倍
VM层开销,Windows guest虚拟机:
32位和64位的CPU和内存平均值:13.06%
网络I / O:35.27%
磁盘I / O:15.20%
请注意,这些值是通用的,并不反映特定情况。
请查看全文:http : //petersenna.com/en/projects/81-performance-overhead-and-comparative-performance-of-4-virtualization-solutions