Xen中APIC-v特性带来的性能提升

APIC-v即APIC Virtualization,是指Intel CPU对虚拟中断和APIC虚拟化方面的优化,使用APIC-v可以大量减少由于APIC访问、追踪虚拟APIC状态和传送虚拟中断而产生的VM Exit的数量(这些操作都可以直接在VMX non-root模式下完成而不需要VM Exit)。Intel在IvyBridge-EP服务器CPU中引入了APIC-v特性。关于APIC-v的详细信息,可以自行参考Intel的SDM-3C中“Chapter 29 APIC Virtualization And Virtual Interrupts”这一章。(Ivy Bridge EP 在 2013年9月release了,10月将此文公开发表)

在最新的Xen和KVM中都已经实现了对APIC-v的支持,其中“KVM的一些基准测试和性能测试数据分享”一文中已经可以看到在KVM中APIC-v带来的一些性能提升了。本文主要分享一下最近在Xen中测试APIC-v特性带来的性能提升。

在IvyBridge-EP系统上,使用了Intel 82599网卡(10Gb)直接分配给Xen的HVM guest使用,使用Netperf测试网络吞吐量。(网络I/O是能体现出APIC-v好处的)。一些测试数据如下图所示:
APICv-performance-in-Xen
对这里的测试做如下的解释:

1. 第一组数据是Netperf测试时使用的消息大小较大的情况(每个消息16384Bytes大小);这时,网卡吞吐量几乎都达到了极限值 9.3 Gbps左右,而在在使用APIC-v的情况下,该guest的CPU资源占用率下降了2.3%。
2. 第二组数据是消息大小较小的情况(64Bytes),在使用APIC-v时,吞吐量增加了0.8%,同时CPU利用率降低了0.3%。
3. 第三组比较复杂,是启动了2个guest,分别分配82599网卡的一个function,而且将这两个guest的vCPU都绑定到同一个物理CPU上,而且为了让该物理CPU能够达到满负荷运转,还使用“xenpm set-scaling-minfreq 1 1200M”和“xenpm set-scaling-maxfreq 1 1200M”命令将该物理CPU的频率降低为1200MHz(降之前最高位2700MHz)。这里的吞吐量是两个guest中的网络吞吐量之和,在使用APIC-v的情况下,当同样一个物理CPU满负荷运行时,网络吞吐量上升了7.5%。

一些测试环境信息如下:
Xen: 4.4-untable with C/S 27278
Dom0: Linux 3.10.2
guest OS: RHEL6.4
hardware: IVT-EP system with Intel 82599 10Gb NIC
benchmark: Netperf

master

Stay hungry, stay foolish.

发表评论

电子邮件地址不会被公开。 必填项已用*标注