From: Avi Kivity <avi@redhat.com>
To: Alexander Graf <agraf@suse.de>
Cc: linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
KVM list <kvm@vger.kernel.org>,
kvm-ppc@vger.kernel.org
Subject: Re: [PATCH 0/2] Faster MMU lookups for Book3s v3
Date: Thu, 01 Jul 2010 16:42:14 +0300 [thread overview]
Message-ID: <4C2C9B36.8000002@redhat.com> (raw)
In-Reply-To: <4C2C8FA8.1030702@suse.de>
On 07/01/2010 03:52 PM, Alexander Graf wrote:
>>
>>> Don't you use lazy spte updates?
>>>
>>>
>> We do, but given enough time, the guest will touch its entire memory.
>>
> Oh, so that's the major difference. On PPC we have the HTAB with a
> fraction of all the mapped pages in it. We don't have a notion of a full
> page table for a guest process. We always only have a snapshot of some
> mappings and shadow those lazily.
>
> So at worst, we have HPTEG_CACHE_NUM shadow pages mapped, which would be
> (1<< 15) * 4k which again would be at most 128MB of guest memory. We
> can't hold more mappings than that anyways, so chances are low we have a
> mapping for each hva.
>
Doesn't that seriously impact performance? A guest that recycles pages
from its lru will touch pages at random from its entire address space.
On bare metal that isn't a problem (I imagine) due to large tlbs. But
virtualized on 4K pages that means the htlb will be thrashed.
>>> But then again I probably do need an rmap for the mmu_notifier magic,
>>> right? But I'd rather prefer to have that code path be slow and the
>>> dirty bitmap invalidation fast than the other way around. Swapping is
>>> slow either way.
>>>
>>>
>> It's not just swapping, it's also page ageing. That needs to be
>> fast. Does ppc have a hardware-set referenced bit? If so, you need a
>> fast rmap for mmu notifiers.
>>
> Page ageing is difficult. The HTAB has a hardware set referenced bit,
> but we don't have a guarantee that the entry is still there when we look
> for it. Something else could have overwritten it by then, but the entry
> could still be lingering around in the TLB.
>
Whoever's dropping the HTAB needs to update the host struct page, and
also reflect the bit into the guest's HTAB, no?
In fact, on x86 shadow, we don't have an spte for a gpte that is not
accessed, precisely so we know the exact point in time when the accessed
bit is set.
> So I think the only reasonable way to implement page ageing is to unmap
> pages. And that's slow, because it means we have to map them again on
> access. Bleks. Or we could look for the HTAB entry and only unmap them
> if the entry is moot.
>
I think it works out if you update struct page when you clear out an HTAB.
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2010-07-01 13:42 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-30 13:18 [PATCH 0/2] Faster MMU lookups for Book3s v3 Alexander Graf
2010-06-30 13:18 ` [PATCH 1/2] KVM: PPC: Add generic hpte management functions Alexander Graf
2010-06-30 13:18 ` [PATCH 2/2] KVM: PPC: Make use of hash based Shadow MMU Alexander Graf
2010-07-01 7:29 ` [PATCH 0/2] Faster MMU lookups for Book3s v3 Avi Kivity
2010-07-01 8:18 ` Alexander Graf
2010-07-01 8:40 ` Avi Kivity
2010-07-01 10:00 ` Alexander Graf
2010-07-01 11:14 ` Avi Kivity
2010-07-01 12:28 ` Alexander Graf
2010-07-01 12:43 ` Avi Kivity
2010-07-01 12:52 ` Alexander Graf
2010-07-01 13:42 ` Avi Kivity [this message]
2010-07-02 2:54 ` Benjamin Herrenschmidt
2010-07-02 2:50 ` Benjamin Herrenschmidt
2010-07-01 15:40 ` 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=4C2C9B36.8000002@redhat.com \
--to=avi@redhat.com \
--cc=agraf@suse.de \
--cc=kvm-ppc@vger.kernel.org \
--cc=kvm@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
/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).