dsi*_*cha 24 virtualization performance x86 64-bit
x86/x64 虚拟化(我可能会使用 VirtualBox,可能是 VMWare,绝对不是半虚拟化)对于使用 Intel 硬件虚拟化的 Win64 主机和 Linux64 客户机的以下每个操作有多少开销?
纯粹受 CPU 限制的用户模式 64 位代码
纯粹受 CPU 限制的用户模式 32 位代码
到硬盘驱动器的文件 I/O(我主要关心吞吐量,而不是延迟)
网络输入/输出
线程同步原语(互斥体、信号量、条件变量)
线程上下文切换
原子操作(使用lock前缀,比较和交换之类的东西)
我主要对硬件辅助 x64 案例(Intel 和 AMD)感兴趣,但也不介意听到有关无辅助二进制转换和 x86(即 32 位主机和来宾)案例的信息。我对半虚拟化不感兴趣。
Pet*_*nna 28
我发现像你这样的问题没有简单而绝对的答案。每个虚拟化解决方案在特定的性能测试中表现不同。此外,诸如磁盘 I/O 吞吐量之类的测试可以拆分为许多不同的测试(读取、写入、重写等),结果会因解决方案和场景而异。这就是为什么指出一种解决方案是磁盘 I/O 最快的解决方案并非微不足道的原因,这就是为什么对于诸如磁盘 I/O 开销之类的标签没有绝对的答案。
当试图找到不同基准测试之间的关系时,它会变得更加复杂。我测试过的所有解决方案都没有在微操作测试中表现良好。例如:在 VM 中,对“gettimeofday()”的一次调用平均比在硬件上花费的时钟周期多 11.5 倍。管理程序针对现实世界的应用程序进行了优化,在微操作上表现不佳。对于您的应用程序来说,这可能不是问题,因为它可能更适合作为现实世界的应用程序。我的意思是微操作花费少于 1,000 个时钟周期来完成的任何应用程序(对于 2.6 GHz CPU,1,000 个时钟周期花费在 385 纳秒或 3.85e-7 秒内)。
我对 x86 架构的数据中心整合的四个主要解决方案进行了广泛的基准测试。我做了将近 3000 次测试,比较了虚拟机内部的性能和硬件性能。我称“开销”为在 VM 内测得的最大性能与在硬件上测得的最大性能之间的差异。
解决方法:
来宾操作系统:
测试信息:
基准软件:
CPU 和内存:32 位和 64 位的Linpack 基准测试。这是 CPU 和内存密集型的。
磁盘 I/O 和延迟:Bonnie++
网络 I/O:Netperf:TCP_STREAM、TCP_RR、TCP_CRR、UDP_RR 和 UDP_STREAM
微操作:rdtscbench:系统调用、进程间管道通信
使用以下参数计算平均值:
CPU 和内存:平均(HPL32、HPL64)
磁盘 I/O:平均(put_block,重写,get_block)
网络 I/O:平均(tcp_crr、tcp_rr、tcp_stream、udp_rr、udp_stream)
微操作 AVERAGE(getpid(), sysconf(), gettimeofday(), malloc[1M], malloc[1G], 2pipes[], simplemath[])
对于我的测试场景,使用我的指标,四个虚拟化解决方案的结果的平均值是:
VM 层开销,Linux 来宾:
CPU 和内存:14.36%
网络输入/输出:24.46%
磁盘输入/输出:8.84%
读取磁盘延迟:慢 2.41 倍
微操作执行时间:慢 10.84 倍
VM 层开销,Windows 来宾:
32 位和 64 位的 CPU 和内存平均值:13.06%
网络输入/输出:35.27%
磁盘 I/O:15.20%
请注意,这些值是通用的,并不反映具体情况。
请查看全文:http : //petersenna.com/en/projects/81-performance-overhead-and-comparative-performance-of-4-virtualization-solutions
你的问题中有太多变量,但我可以尝试缩小范围。假设您使用 VMware ESX,一切都正确 - 支持虚拟化的最新 CPU、具有半虚拟化存储和网络驱动程序的 VMware 工具、充足的内存。现在假设您在此设置上运行单个虚拟机。根据我的经验,对于 CPU 密集型工作负载,您应该拥有约 90% 的 CPU 速度。我无法告诉您太多有关网络速度的信息,因为我们使用的是 1Gbps 链接,并且我可以毫无问题地使其饱和,它可能与 10Gbps 链接不同,但我们没有任何这些。存储吞吐量取决于存储类型,通过本地存储,我可以获得大约 80% 的存储吞吐量,但对于 1Gbps NFS,它接近 100%,因为网络是这里的瓶颈。无法告诉其他指标,您需要使用自己的代码进行实验。
这些数字非常近似,很大程度上取决于您的负载类型、硬件和网络。当您在服务器上运行多个工作负载时,它会变得更加模糊。但我在这里想说的是,在理想条件下,您应该能够获得接近 90% 的本机性能。
另外,根据我的经验,高性能应用程序的更大问题是延迟,对于客户端服务器应用程序尤其如此。我们有一个计算引擎,可以接收来自 30 多个客户端的请求,执行简短的计算并返回结果。在裸机上,它通常会将 CPU 提升到 100%,但 VMware 上的同一服务器只能将 CPU 负载提升到 60-80%,这主要是因为处理请求/回复时存在延迟。
| 归档时间: |
|
| 查看次数: |
26602 次 |
| 最近记录: |