Anthony Liguori wrote: > The attached patch modifies libkvmctl to only make SET_REG/GET_REG > ioctls when needed for PIO instructions. I was only able to do this > for out instructions because I didn't want to break the kernel ABI. > > I think we should change the API though so we can do this with other > types of IO instructions. Before this patch, the time line for a PIO > instruction looks something like this: > > All times in nanoseconds and are round trips from the guests > perspective for an out instruction on an AMD X2 4200. > > 1015 - immediately after restoring saving guest registers > 1991 - handled within the kernel in io_interception > 2294 - libkvmctl returns immediately > 2437 - w/ patch > 3311 - w/o patch > > The first data point is the best we could possible do. The only work > being done after the VMRUN is a VMSAVE/VMLOAD, saving the guest > registers, and restoring the host registers. The VMSAVE/VMLOAD is > needed so that vmcb->save.eip can be updated.[1] I played around > reducing the register savings but the differences weren't noticable. > > I suspect that more intelligent handling of things like FPU > save/restore should be able to reduce the second data point. This > will also improve some other exit paths (like shadow paging). We > save/restore an awful lot of state considering that we probably return > back to the guest for the vast majority of exits. >
These are very encouraging numbers. I'd expected the vmexit to be more expensive, and fpu save/restore to be less expensive. Since, as you say, we can eliminate the fpu save/restore in many cases, we have a net win :) The planned userspace api changes will eliminate registers and virtual addresses for pio. This will both improve performance and make the api more architecture agnostic. I'm applying the patch now, even though it will be obsoleted soon, as it's always nice to have a performance improvement. ps. that [1] is a dangling reference? -- Do not meddle in the internals of kernels, for they are subtle and quick to panic. ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier. Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ kvm-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/kvm-devel
