From: Avi Kivity <avi@redhat.com>
To: Takuya Yoshikawa <takuya.yoshikawa@gmail.com>
Cc: mtosatti@redhat.com, kvm@vger.kernel.org
Subject: Re: [RFC] need to improve slot creation/destruction? -- Re: [RFC][PATCH] srcu: Implement call_srcu()
Date: Thu, 09 Feb 2012 16:23:05 +0200 [thread overview]
Message-ID: <4F33D6C9.2070403@redhat.com> (raw)
In-Reply-To: <20120209004320.5772daa0472aef4700dab1b6@gmail.com>
On 02/08/2012 05:43 PM, Takuya Yoshikawa wrote:
> [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);
The workloads that exercise slot removal heavily usually do so in a
tight loop, so flushing all shadow is not too bad (not much to flush).
>
> 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);
This is pretty rare outside the previous scenario (memory/pci hotplug).
>
> 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.
Maybe it only needs to be done if the only change is enabling dirty logging.
> BTW do we really need fast slot creation/destruction?
Not really, but it's good to have infrastructure that copes with
different workloads. If the patches keep the code simple I think it's a
good thing to have.
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2012-02-09 14:23 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 ` [RFC] need to improve slot creation/destruction? -- " Takuya Yoshikawa
2012-02-08 18:45 ` 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 [this message]
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=4F33D6C9.2070403@redhat.com \
--to=avi@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=takuya.yoshikawa@gmail.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).