From: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
To: mtosatti@redhat.com
Cc: gleb@redhat.com, linux-kernel@vger.kernel.org,
kvm@vger.kernel.org,
Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
Subject: [PATCH v2 0/7] KVM: MMU: fast zap all shadow pages
Date: Wed, 20 Mar 2013 16:29:38 +0800 [thread overview]
Message-ID: <1363768178-4596-1-git-send-email-xiaoguangrong@linux.vnet.ibm.com> (raw)
Changlog:
V2:
- do not reset n_requested_mmu_pages and n_max_mmu_pages
- batch free root shadow pages to reduce vcpu notification and mmu-lock
contention
- remove the first patch that introduce kvm->arch.mmu_cache since we only
'memset zero' on hashtable rather than all mmu cache members in this
version
- remove unnecessary kvm_reload_remote_mmus after kvm_mmu_zap_all
* Issue
The current kvm_mmu_zap_all is really slow - it is holding mmu-lock to
walk and zap all shadow pages one by one, also it need to zap all guest
page's rmap and all shadow page's parent spte list. Particularly, things
become worse if guest uses more memory or vcpus. It is not good for
scalability.
* Idea
Since all shadow page will be zapped, we can directly zap the mmu-cache
and rmap so that vcpu will fault on the new mmu-cache, after that, we can
directly free the memory used by old mmu-cache.
The root shadow page is little especial since they are currently used by
vcpus, we can not directly free them. So, we zap the root shadow pages and
re-add them into the new mmu-cache.
* TODO
(1): free root shadow pages by using generation-number
(2): drop unnecessary @npages from kvm_arch_create_memslot
* Performance
The testcase can be found at:
http://www.gossamer-threads.com/lists/engine?do=post_attachment;postatt_id=54896;list=linux
is used to measure the time of delete / add memslot. At that time, all vcpus
are waiting, that means, no mmu-lock contention. I believe the result be more
beautiful if other vcpus and mmu notification need to hold the mmu-lock.
Guest VCPU:6, Mem:2048M
before: Run 10 times, Avg time:46078825 ns.
after: Run 10 times, Avg time:21558774 ns. (+ 113%)
Xiao Guangrong (7):
KVM: MMU: introduce mmu_cache->pte_list_descs
KVM: x86: introduce memslot_set_lpage_disallowed
KVM: x86: introduce kvm_clear_all_gfn_page_info
KVM: MMU: delete shadow page from hash list in
kvm_mmu_prepare_zap_page
KVM: MMU: split kvm_mmu_prepare_zap_page
KVM: MMU: fast zap all shadow pages
KVM: MMU: drop unnecessary kvm_reload_remote_mmus after
kvm_mmu_zap_all
arch/x86/include/asm/kvm_host.h | 7 ++-
arch/x86/kvm/mmu.c | 105 ++++++++++++++++++++++++++++++++++-----
arch/x86/kvm/mmu.h | 1 +
arch/x86/kvm/x86.c | 87 +++++++++++++++++++++++++-------
include/linux/kvm_host.h | 1 +
5 files changed, 166 insertions(+), 35 deletions(-)
--
1.7.7.6
next reply other threads:[~2013-03-20 8:30 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-20 8:29 Xiao Guangrong [this message]
2013-03-20 8:30 Xiao Guangrong
2013-03-21 22:21 ` Marcelo Tosatti
2013-03-22 2:11 ` Xiao Guangrong
2013-03-22 10:01 ` Xiao Guangrong
2013-03-22 10:54 ` Marcelo Tosatti
2013-03-22 11:10 ` Xiao Guangrong
2013-03-22 11:28 ` Gleb Natapov
2013-03-22 11:39 ` Xiao Guangrong
2013-03-22 11:47 ` Gleb Natapov
2013-03-22 12:03 ` Xiao Guangrong
2013-03-22 12:12 ` Gleb Natapov
2013-03-22 12:37 ` Xiao Guangrong
2013-03-22 19:15 ` Gleb Natapov
2013-04-17 20:39 ` Marcelo Tosatti
2013-04-18 9:42 ` Gleb Natapov
2013-04-18 14:01 ` Marcelo Tosatti
2013-04-18 16:36 ` Gleb Natapov
2013-04-18 17:34 ` Marcelo Tosatti
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1363768178-4596-1-git-send-email-xiaoguangrong@linux.vnet.ibm.com \
--to=xiaoguangrong@linux.vnet.ibm.com \
--cc=gleb@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mtosatti@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®