Optimizing Network I/O Virtualization for Scale-Out Processor

Recently, the idea of using ARM processors in servers appeals to be attractive since it may provide another choice to decrease power consumption in cloud platform. Using virtualization, Cloud computing decouples system resources from physical machines. Delivering interrupts among virtual machines efficiently is a key factor to achieve high performance in the cloud platform. However, we observed that the network I/O performance would dramatically fall due to the inefficient virtual interrupt handling on ARM platform when the virtual machines handle concurrent requests. In this paper, we first analyze and compare interrupt controllers and message-based interrupt delivery in both x86 and ARM architecture. With the help of hardware-assist virtual interrupt controller, we propose an optimization method that enables KVM ARM to delivery network packets through multiple virtual I/O channels by using virtual MSI notification mechanism. The experiment shows that it can improve the interrupt handling in virtual machines on ARM platform as well as the scalability of packets processing on multi-core virtual machine. The throughput of concurrent requests handling can be improved by about 50% when the number of cores for the virtual machine is set to 12.

[1]  Scott Rixner,et al.  Network Virtualization: Breaking the Performance Barrier , 2008, ACM Queue.

[2]  Alex Landau,et al.  ELI: bare-metal performance for I/O virtualization , 2012, ASPLOS XVII.

[3]  Muli Ben-Yehuda,et al.  SplitX: Split Guest/Hypervisor Execution on Multi-Core , 2011, WIOV.

[4]  Mendel Rosenblum,et al.  I/O Virtualization , 2011 .

[5]  Ole Agesen,et al.  A comparison of software and hardware techniques for x86 virtualization , 2006, ASPLOS XII.

[6]  Rusty Russell,et al.  virtio: towards a de-facto standard for virtual I/O devices , 2008, OPSR.

[7]  Jian Li,et al.  Performance Enhancement for Network I/O Virtualization with Efficient Interrupt Coalescing and Virtual Receive-Side Scaling , 2013, IEEE Transactions on Parallel and Distributed Systems.

[8]  Beng-Hong Lim,et al.  Virtualizing I/O Devices on VMware Workstation's Hosted Virtual Machine Monitor , 2001, USENIX Annual Technical Conference, General Track.

[9]  Robert P. Goldberg,et al.  Formal requirements for virtualizable third generation architectures , 1973, SOSP 1973.

[10]  Muli Ben-Yehuda,et al.  The Turtles Project: Design and Implementation of Nested Virtualization , 2010, OSDI.

[11]  Jason Nieh,et al.  KVM for ARM , 2010 .

[12]  Jiqiang Liu,et al.  Analysis of Interrupt Coalescing Schemes for Receive-Livelock Problem in Gigabit Ethernet Network Hosts , 2008, 2008 IEEE International Conference on Communications.

[13]  Jason Nieh,et al.  ARM Virtualization: Performance and Architectural Implications , 2016, 2016 ACM/IEEE 43rd Annual International Symposium on Computer Architecture (ISCA).

[14]  K. K. Ramakrishnan,et al.  Eliminating receive livelock in an interrupt-driven kernel , 1996, TOCS.

[15]  Martín Casado,et al.  The Design and Implementation of Open vSwitch , 2015, NSDI.

[16]  Andrea Bianco,et al.  OpenFlow Switching: Data Plane Performance , 2010, 2010 IEEE International Conference on Communications.