User: Password:
Subscribe / Log in / New account

KVM: optimize for MMIO handled

From:  Xiao Guangrong <>
To:  Avi Kivity <>
Subject:  [PATCH 0/15] KVM: optimize for MMIO handled
Date:  Tue, 07 Jun 2011 20:58:06 +0800
Message-ID:  <>
Cc:  Marcelo Tosatti <>, LKML <>, KVM <>
Archive-link:  Article

The idea of this patchset is from Avi:
| We could cache the result of a miss in an spte by using a reserved bit, and
| checking the page fault error code (or seeing if we get an ept violation or
| ept misconfiguration), so if we get repeated mmio on a page, we don't need to
| search the slot list/tree.
| (

The aim of this patchset is to support fast mmio emulate, it reduce searching
mmio gfn from memslots which is very expensive since we need to walk all slots
for mmio gfn, and the other advantage is: we can reduce guest page table walking
for soft mmu.

Lockless walk shadow page table is introduced in this patchset, it is the light
way to check the page fault is the real mmio page fault or something is running
out of our mind.

And, if shadow_notrap_nonpresent_pte is enabled(bypass_guest_pf=1), mmio page
fault and normal page fault is mixed(the reserved is set for all page fault),
it has little regression, if the box can generate lots of mmio access, for
example, the network server, it can disable shadow_notrap_nonpresent_pte and
enable mmio pf, after all, we can enable/disable mmio pf at the runtime.

The performance test result:

Netperf (TCP_RR):
ept is enabled:

      Before         After
1st   709.58         734.60
2nd   715.40         723.75
3rd   713.45         724.22

ept=0 bypass_guest_pf=0:

      Before         After
1st   706.10         709.63
2nd   709.38         715.80
3rd   695.90         710.70

Kernbech (do not redirect output to /dev/null)
ept is enabled:

      Before         After
1st   2m34.749s      2m33.482s
2nd   2m34.651s      2m33.161s
3rd   2m34.543s      2m34.271s

ept=0 bypass_guest_pf=0:

      Before         After
1st   4m43.467s      4m41.873s
2nd   4m45.225s      4m41.668s
3rd   4m47.029s      4m40.128s

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

Copyright © 2011, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds