Dynamically (de)allocate dedicated hypervisor (side)cores for efficient, exit-less virtual I/O processing


Traditionally, I/O of VMs is implemented using the canonical "trap and emulate" paradigm, such that whenever a VM performs some sensitive operation, it exits (=traps) into the hypervisor, which in turn reacts similarly to (=emulates) how the bare metal hardware would react to this action when performed by the bare metal operation system. A newer approach to implement virtual I/O is to avoid the virtualization exits and the associated overheads by dedicating cores to hypervisor I/O threads that continuously poll the memory of the relevant virtual device queues and react accordingly. VMware’s Enhanced Network Stack (ENS) implements this paradigm [1]. The challenge we are addressing is to adaptively decide how many dedicated sidecores are needed – if at all – at any point in time, in a general-purpose setup where the workload dynamically changes and the number of active VMs may exceed the number of physical cores. Our sidecore manager (i) continuously monitors the host utilization and I/O activity, and (ii) dynamically (de)allocates dedicated polling cores in a manner that optimizes performance.



2017 Interns


  • Active VMW Software Systems Projects