From: Andrea Bolognani <abologna@redhat.com>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: groug@kaod.org, aik@ozlabs.ru, qemu-ppc@nongnu.org,
qemu-devel@nongnu.org, clg@kaod.org
Subject: Re: [Qemu-devel] [RFC for-2.13 0/7] spapr: Clean up pagesize handling
Date: Fri, 27 Apr 2018 10:31:10 +0200 [thread overview]
Message-ID: <1524817870.23669.25.camel@redhat.com> (raw)
In-Reply-To: <20180427021422.GL8800@umbus.fritz.box>
On Fri, 2018-04-27 at 12:14 +1000, David Gibson wrote:
> On Thu, Apr 26, 2018 at 10:45:40AM +0200, Andrea Bolognani wrote:
> > Unfortunately, that pretty much seals the deal on libvirt *not* being
> > able to infer the value from other guest settings :(
> >
> > The only reasonable candidate would be the size of host pages used for
> > backing guest memory; however
>
> Right.
>
> > * TCG, RPT and KVM PR guests can't infer anything from it, as they
> > are not tied to it. Having different behaviors for TCG and KVM
> > would be easy, but differentiating between HPT KVM HV guest and
> > all other kinds is something we can't do at the moment, and that
> > in the past have actively resisted doing;
>
> Yeah, I certainly wouldn't recommend that. It's basically what we're
> doing in qemu now, and I want to change, because it's a bad idea.
>
> It still would be possible to key off the host side hugepage size, but
> apply the limit to all VMs - in a sense crippling TCG guests to give
> them matching behaviour to KVM guests.
As you yourself mention later...
> > * the user might want to limit things further, eg. preventing an
> > HPT KVM HV guest backed by 16 MiB pages or an HPT TCG guest from
> > using hugepages.
>
> Right.. note that with the draft qemu patches a TCG guest will be
> prevented from using hugepages *by default* (the default value of the
> capability is 16). You have to explicitly change it to allow
> hugepages to be used in a TCG guest (but you don't have to supply
> hugepage backing).
... this will already happen. That's okay[1], we can't really
avoid it if we want to ensure consistent behavior between KVM and
TCG.
> > With the second use case in mind: would it make sense, or even be
> > possible, to make it so the capability works for RPT guests too?
>
> Possible, maybe.. I think there's another property where RPT pagesizes
> are advertised. But I think it's a bad idea. In order to have the
> normal HPT case work consistently we need to set the default cap value
> to 16 (64kiB page max). If that applied to RPT guests as well, we'd
> be unnecessarily crippling nearly all RPT guests.
>
> > Thinking even further, what about other architectures? Is this
> > something they might want to do too? The scenario I have in mind is
> > guests backed by regular pages being prevented from using hugepages
> > with the rationale that they wouldn't have the same performance
> > characteristics as if they were backed by hugepages; on the opposite
> > side of the spectrum, you might want to ensure the pages used to
> > back guest memory are as big as the biggest page you plan to use in
> > the guest, in order to guarantee the performance characteristics
> > fully match expectations.
>
> Hm, well, you'd have to ask other arch people if they see a use for
> that. It doesn't look very useful to me. I don't think libvirt can
> or should ensure identical performance characteristics for a guest
> across all possible migrations. But for HPT guests, it's not a matter
> of performance characteristics: if it tries to use a large page size
> and KVM doesn't have large enough backing pages, the guest will
> quickly just freeze on a page fault that can never be satisfied.
I realize only HPT guests *need* this, but I was trying to figure
out whether giving the host administrator more control over the
guest page size could be a useful feature in other cases as well,
as it sounds to me like it's more generally applicable
Users already need to opt-in to using hugepages in the host; asking
to opt-in to guest hugepages support as well doesn't seem too
outlandish to me.
Even if the specific flags required vary between architectures, we
could expose this in a unified fashion in libvirt. However, if this
is not something people would consider useful, we can just have a
pSeries-specific setting instead.
[1] That's of course assuming you have made sure the restriction
only applies to the 2.13 machine type forward, and existing
guests are not affected by the change.
--
Andrea Bolognani / Red Hat / Virtualization
next prev parent reply other threads:[~2018-04-27 8:31 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-19 6:29 [Qemu-devel] [RFC for-2.13 0/7] spapr: Clean up pagesize handling David Gibson
2018-04-19 6:29 ` [Qemu-devel] [RFC for-2.13 1/7] spapr: Maximum (HPT) pagesize property David Gibson
2018-05-02 21:06 ` Murilo Opsfelder Araujo
2018-05-03 1:34 ` David Gibson
2018-04-19 6:29 ` [Qemu-devel] [RFC for-2.13 2/7] spapr: Use maximum page size capability to simplify memory backend checking David Gibson
2018-04-19 6:29 ` [Qemu-devel] [RFC for-2.13 3/7] target/ppc: Add ppc_hash64_filter_pagesizes() David Gibson
2018-05-03 15:57 ` Murilo Opsfelder Araujo
2018-05-04 6:30 ` David Gibson
2018-04-19 6:29 ` [Qemu-devel] [RFC for-2.13 4/7] spapr: Add cpu_apply hook to capabilities David Gibson
2018-04-19 6:29 ` [Qemu-devel] [RFC for-2.13 5/7] spapr: Limit available pagesizes to provide a consistent guest environment David Gibson
2018-04-19 6:29 ` [Qemu-devel] [RFC for-2.13 6/7] spapr: Don't rewrite mmu capabilities in KVM mode David Gibson
2018-04-19 6:29 ` [Qemu-devel] [RFC for-2.13 7/7] spapr_pci: Remove unhelpful pagesize warning David Gibson
2018-04-19 15:30 ` [Qemu-devel] [RFC for-2.13 0/7] spapr: Clean up pagesize handling Andrea Bolognani
2018-04-20 2:35 ` David Gibson
2018-04-20 9:31 ` Andrea Bolognani
2018-04-20 10:21 ` David Gibson
2018-04-23 8:31 ` Andrea Bolognani
2018-04-24 1:26 ` David Gibson
2018-04-24 15:35 ` Andrea Bolognani
2018-04-25 6:32 ` David Gibson
2018-04-25 16:09 ` Andrea Bolognani
2018-04-26 0:55 ` David Gibson
2018-04-26 8:45 ` Andrea Bolognani
2018-04-27 2:14 ` David Gibson
2018-04-27 8:31 ` Andrea Bolognani [this message]
2018-04-27 12:17 ` David Gibson
2018-05-07 13:48 ` Andrea Bolognani
2018-06-14 1:52 ` David Gibson
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=1524817870.23669.25.camel@redhat.com \
--to=abologna@redhat.com \
--cc=aik@ozlabs.ru \
--cc=clg@kaod.org \
--cc=david@gibson.dropbear.id.au \
--cc=groug@kaod.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.