Interrupt coalescing is a proven technique for reducing CPU utilization when processing high IO rates in storage and networking controllers. Virtualization introduces a layer of virtual hardware whose interrupt rate can be controlled by the hypervisor. In this paper, we present the design and implementation of a virtual interrupt coalescing scheme for virtual SCSI hardware controllers in a hypervisor. We use the number of commands in flight from the guest to dynamically set our interrupt coalescing rate. Compared to existing techniques in hardware, our work does not rely on high resolution interrupt delay timers and thus leads to a very efficient implementation in a hypervisor. Furthermore, our technique is generic and therefore applicable to all types of disk IO controllers which, unlike networking, don’t receive anonymous traffic. We have built a prototype of virtual interrupt coalescing on the VMware ESX Server hypervisor and we provide preliminary experimental data on various workloads and show performance improvements of up to 18%.
Irfan Ahmad, Maxime Austruy, Ajay Gulati, Ali Mashtizadeh