Direct device assignment, where a guest virtual machine directlyinteracts with an I/O device without host intervention, is appealing,because it allows an unmodified (non-hypervisor-aware) guest toachieve near-native performance. But device assignment for unmodifiedguests suffers from two serious deficiencies: (1) it requires pinningof all the guest's pages, thereby disallowing memory overcommitment,and (2) it exposes the guest's memory to buggy device drivers.
We solve these problems by designing, implementing, and exposing anemulated IOMMU (vIOMMU) to the unmodified guest. We employ two noveloptimizations to make vIOMMU perform well: (1) waiting a fewmilliseconds before tearing down an IOMMU mapping in the hope it willbe immediately reused (``optimistic teardown''), and (2) running the vIOMMU on a sidecore, and thereby enabling for the first time the useof a sidecore by unmodified guests. Both optimizations are highlyeffective in isolation. The former allows bare-metal to achieve 100%of a 10Gbps line rate. The combination of the two allows an unmodifiedguest to do the same.
Back to the Club's homepage