אביב בן-דוד, הרצאה סמינריונית למגיסטר
יום שני, 15.3.2021, 18:00
For password to lecture, please contact: email@example.com
In virtual setups, guest virtual machines (VMs) perform their I/O through virtual I/O devices that are implemented by the hypervisor in software. There are two major flavors of virtual I/O devices. The first is ``emulation’’, which provides an interface identical to that of some preexisting physical I/O device, thus allowing the operating system (OS) inside the VM to use the original driver of the device, as is, unaware that it is in fact virtual (implemented in software). The second software indirection layer flavor is ``paravirtualization’’, which makes the VM aware that it is being virtualized. The purpose of paravirtual devices is to leverage this awareness to reduce the number of virtualization exits (context switches between guest and hypervisor) and thus improve performance.
Focusing on networking, we observe that the performance of emulation is so much worse than that of paravirtualization, that it significantly reduces the utility of emulation and effectively prevents performance-sensitive users from enjoying the benefits. We hypothesize that the poor performance of emulation is unjustified and can be rectified. Our hypothesis is based on a simple model that accounts for the additional virtualization exits incurred by emulation relative to paravirtualization. The model indicates that the poor performance exhibited by emulation could be due to issues different than exits, suggesting that these issues may be resolvable.
We systematically analyze the implementation of emulation as compared to paravirtualization. We uncover the problems underlying the performance difference and find that, indeed, they can largely be resolved.