[PATCH] Paravirt-ops I/O hypercalls

Zachary Amsden zach at vmware.com
Thu Aug 16 00:59:47 UTC 2007

Port I/O operations are extremely expensive under VMI, due to the required
decoding of the instruction stream on the #GP path in the VMware hypervisor.
They feature prominently in some workloads which use traditional device
emulation for parts of the on-board chipset, such as the PIC and PIT, but
also impose a heavy cost on network and disk intensive workloads which also
have I/O operations.  Our virtual drivers simulate physical hardware as much
as possible to allow them to be portable across operating systems, and 
so the
port I/O cost is present even with virtual drivers.

Patching the port I/O under a VMI kernel to use hypercalls for I/O 
is a huge win, gaining up to 30% performance in some workloads.

I am simultaneously pushing this patch into the upstream kernel; we used to
have this support in older VMI distributions, but it was dropped during the
paravirt-ops merge because of the macro complexity and the fact that Xen did
not require it.  Now both KVM and lguest can benefit from such an approach,
avoiding the decode time, guest memory access, and slower fault path.

Improved workloads are sysbench-mysql and SpecWeb.

Signed-off-by: Zachary Amsden <zach at vmware.com>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: io-hypercalls.patch
Type: text/x-patch
Size: 21612 bytes
Desc: not available
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20070815/a5e051da/attachment.bin>

More information about the kernel-team mailing list