From: Takuya Yoshikawa <takuya.yoshikawa@gmail.com>
To: mtosatti@redhat.com
Cc: avi@redhat.com, kvm@vger.kernel.org
Subject: [RFC] need to improve slot creation/destruction? -- Re: [RFC][PATCH] srcu: Implement call_srcu()
Date: Thu, 9 Feb 2012 00:43:20 +0900 [thread overview]
Message-ID: <20120209004320.5772daa0472aef4700dab1b6@gmail.com> (raw)
In-Reply-To: <20120201135020.GB18998@amt.cnet>
[Dropped non-kvm members from cc]
Marcelo Tosatti <mtosatti@redhat.com> wrote:
> VGABIOS mode constantly destroys and creates 0xa0000 slot, so
> performance is required for KVM_SET_MEM too (it can probably be fixed in
> qemu, but older qemu's must be supported).
Apart from srcu, I see some problems concerning slot creation/destruction:
heavy shadow flush (and extra write protection).
Look at __kvm_set_memory_region().
1. When we invalidate a memory slot, we call kvm_arch_flush_shadow() and
zap all shadow pages, not restricted to that slot.
/* From this point no new shadow pages pointing to a deleted
* memslot will be created.
*
* validation of sp->gfn happens in:
* - gfn_to_hva (kvm_read_guest, gfn_to_pfn)
* - kvm_is_visible_gfn (mmu_check_roots)
*/
kvm_arch_flush_shadow(kvm);
2. When we create(and shift?) a memory slot, we call kvm_arch_flush_shadow()
to clear all mmio sptes, again not restricted to that slot.
/*
* If the new memory slot is created, we need to clear all
* mmio sptes.
*/
if (npages && old.base_gfn != mem->guest_phys_addr >> PAGE_SHIFT)
kvm_arch_flush_shadow(kvm);
3. In addition to these, we do write-protect all pages in that slot in
kvm_arch_commit_memory_region() every time.
For 1: I made a patch to restrict the flush to that slot by using sp->slot_bitmap.
(seems working here)
For 2: I think we can do the same: not 100% sure yet because I am still
struggling with the "mmio spte optimization" code. (really hacky ...)
For 3: I think doing both "write protection" and "shadow flush" is unnecessary.
BTW do we really need fast slot creation/destruction?
Takuya
next prev parent reply other threads:[~2012-02-08 15:43 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1328016724.2446.229.camel@twins>
2012-01-31 13:47 ` [RFC][PATCH] srcu: Implement call_srcu() Avi Kivity
2012-01-31 13:50 ` Peter Zijlstra
2012-01-31 22:24 ` Paul E. McKenney
2012-02-01 10:22 ` Peter Zijlstra
2012-02-01 10:44 ` Avi Kivity
2012-02-01 10:49 ` Avi Kivity
2012-02-01 11:00 ` Takuya Yoshikawa
2012-02-01 11:01 ` Avi Kivity
2012-02-01 11:12 ` Takuya Yoshikawa
2012-02-01 13:24 ` Avi Kivity
2012-02-02 5:46 ` [test result] dirty logging without srcu update -- " Takuya Yoshikawa
2012-02-02 10:10 ` Avi Kivity
2012-02-02 10:21 ` Takuya Yoshikawa
2012-02-02 10:21 ` Avi Kivity
2012-02-02 10:40 ` Takuya Yoshikawa
2012-02-02 11:02 ` Avi Kivity
2012-02-02 14:44 ` Takuya Yoshikawa
2012-02-02 14:57 ` Avi Kivity
2012-02-01 13:43 ` Marcelo Tosatti
2012-02-01 15:42 ` Takuya Yoshikawa
2012-02-01 13:50 ` Marcelo Tosatti
2012-02-08 15:43 ` Takuya Yoshikawa [this message]
2012-02-08 18:45 ` [RFC] need to improve slot creation/destruction? -- " Marcelo Tosatti
2012-02-09 13:48 ` Takuya Yoshikawa
2012-02-09 14:25 ` Avi Kivity
2012-02-10 17:16 ` Marcelo Tosatti
2012-02-14 9:52 ` Avi Kivity
2012-02-09 14:23 ` Avi Kivity
2012-02-09 14:24 ` Avi Kivity
2012-02-10 13:08 ` Takuya Yoshikawa
2012-02-10 17:17 ` Marcelo Tosatti
2012-02-10 13:25 ` Takuya Yoshikawa
2012-02-14 9:52 ` Avi Kivity
2012-02-01 14:07 ` Paul E. McKenney
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=20120209004320.5772daa0472aef4700dab1b6@gmail.com \
--to=takuya.yoshikawa@gmail.com \
--cc=avi@redhat.com \
--cc=kvm@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;
as well as URLs for NNTP newsgroup(s).