几种不同虚拟技术的隔离性能

周末看了一篇 paper:Quantifying the Performance Isolation Properties of Virtualization Systems,这篇论文测试了几种不同虚拟技术的隔离性能,隔离性是虚拟机性能的重要指标,尤其是对商业 hosting,如 VPS、VDS 等来说,虚拟机能否把各个 VPS 合理的隔开并让物理机器上的每个 VPS 能按照事先约好的定义(如 CPU/RAM/DISK 等)公平而且充分的利用物理服务器资源很重要。这篇论文测试了目前市场上使用最普遍的几种虚拟技术以及相关代表产品,有代表 full virtualization 技术的 VMWare Workstation,代表 para virtualization 技术的 Xen,代表 operating system level virtualization 技术的 OpenVZ 和 Solaris Containers,提出的问题就是看看这些不同的虚拟技术和产品能不能、以及能在多大程度上隔离和保护每个物理机器上的虚拟机,比如能否保护好每个 VPS,能有效为不同 VPS 用户分割资源,不让 “不良” 用户超过计算额度、过分抢占其他用户的资源。

测试方法

这篇论文描述的实验方法是,首先确定一些 baseline 数据,然后做 stress 测试。

  1. 把1台物理机器分成4个虚拟机,每个虚拟机上运行1个 apache web server + SPECweb 2005 组合来得到 baseline 数据。
  2. 然后做 stress 测试,同样是上面的1台物理机器和4个虚拟机,也同样在运行1个 apache web server + SPECweb 2005 组合,只不过这个时候在其中1台虚拟机上增加了 stress test,来测试这个 stress 加上去以后是否对原有的虚拟机有影响、有多大影响。这样测试结果就可以和前面4台虚拟机没有 stress 测试的数据做比较。

主要测试了以下一些性能参数,以及测试每种参数用到的方法:

  • CPU Intensive:让虚拟机不停的做整数计算操作;
  • Fork Bomb:不停的 fork 进程;
  • Memory Intensive:不停的分配、使用内存,而不 free 掉内存空间;
  • Disk Intensive:用 IOzone 工具,开10个线程,每个线程不停的进行交替读写操作(iozone -i0 -i1 -r 4 -s 100M -t 10 -Rb);
  • Network Intensive (Transmit):开4个线程,每个线程不停的发送 60K 大小的 UDP 包;
  • Network Intensive (Receive):开4个线程,每个线程不停的接受 60K 大小的 UDP 包。

测试结果

测试结果如下图所示,0代表结果最好,DNR(Do Not Response) 代表最差。测试结果和理论上预料的一致,Full virtualization 技术能完全模拟一台计算机,不需要修改 guest 操作系统就可以直接在其上运行,由于其技术的优越性隔离性能最好;para virtualization 需要修改 guest 才能运行,隔离效果其次;最后是 operating system level virtualization,在操作系统层面虚拟,不能运行不同的操作系统,隔离不彻底,其隔离性能也最差。同一虚拟技术的不同产品,如 OpenVZ 和 Solaris Containers 也表现出了差异。

the performance isolation of virtualization systems

VPSee 只对 Xen 和 OpenVZ 有兴趣,这里省略了 Solaris Containers 的测试数据和图片,大家如有兴趣可参考原文。

评论 (3 Comments)

  1. http://www.hpl.hp.com/techreports/2007/HPL-2007-59R1.pdf

    这个报告的结论和你上边列的那篇正相反。

  2. @ddd
    谢谢分享,正在学习中……

  3. 非常不错。以后云计算
    IO隔离
    CPU隔离
    网络IO隔离都需要关注

发表评论