From: Thomas Huth <thuth@redhat.com>
To: Alexander Graf <agraf@suse.de>,
Christian Borntraeger <borntraeger@de.ibm.com>,
kvm-ppc@vger.kernel.org, qemu-ppc@nongnu.org,
kvm@vger.kernel.org
Cc: David Gibson <dgibson@redhat.com>,
Alex Williamson <alex.williamson@redhat.com>,
Bharata B Rao <bharata@linux.vnet.ibm.com>
Subject: Re: [Qemu-ppc] KVM memory slots limit on powerpc
Date: Fri, 04 Sep 2015 14:45:33 +0000 [thread overview]
Message-ID: <55E9AE8D.3030009@redhat.com> (raw)
In-Reply-To: <55E96CB9.4070100@suse.de>
On 04/09/15 12:04, Alexander Graf wrote:
>
>
> On 04.09.15 11:59, Christian Borntraeger wrote:
>> Am 04.09.2015 um 11:35 schrieb Thomas Huth:
>>>
>>> Hi all,
>>>
>>> now that we get memory hotplugging for the spapr machine on qemu-ppc,
>>> too, it seems like we easily can hit the amount of KVM-internal memory
>>> slots now ("#define KVM_USER_MEM_SLOTS 32" in
>>> arch/powerpc/include/asm/kvm_host.h). For example, start
>>> qemu-system-ppc64 with a couple of "-device secondary-vga" and "-m
>>> 4G,slots2,maxmem@G" and then try to hot-plug all 32 DIMMs ... and
>>> you'll see that it aborts way earlier already.
>>>
>>> The x86 code already increased the amount of KVM_USER_MEM_SLOTS to 509
>>> already (+3 internal slots = 512) ... maybe we should now increase the
>>> amount of slots on powerpc, too? Since we don't use internal slots on
>>> POWER, would 512 be a good value? Or would less be sufficient, too?
>>
>> When you are at it, the s390 value should also be increased I guess.
>
> That constant defines the array size for the memslot array in struct kvm
> which in turn again gets allocated by kzalloc, so it's pinned kernel
> memory that is physically contiguous. Doing big allocations can turn
> into problems during runtime.
FWIW, I've just checked sizeof(struct kvm) with the current ppc64 kernel
build from master branch, and it is 34144 bytes.
So on a system that is using PAGE_SIZE = 64kB, there should be plenty of
space left before we're getting into trouble.
And even assuming the worst case, that we're on a system which still
uses PAGE_SIZE = 4kB, the last page of the 34144 bytes is only filled
with 1376 bytes, leaving 2720 bytes free right now.
sizeof(struct kvm_memory_slot) is 48 bytes right now on powerpc, and you
need two additional bytes per entry for the id_to_index array in
struct kvm_memslots, i.e. we need 50 additional bytes per entry on ppc.
That means we could increase KVM_USER_MEM_SLOTS by 2720 / 50 = 54
entries without getting into further trouble.
I think we should leave some more additional bytes left in that last
4k page of the struct kvm region, ... so what about increasing
KVM_USER_MEM_SLOTS to 32 + 48 = 80 now (instead of 32 + 54 = 86) to
ease the memslot situation at least a little bit 'till we figured out
a really final solution like growable memslots?
Thomas
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Huth <thuth@redhat.com>
To: Alexander Graf <agraf@suse.de>,
Christian Borntraeger <borntraeger@de.ibm.com>,
kvm-ppc@vger.kernel.org, qemu-ppc@nongnu.org,
kvm@vger.kernel.org
Cc: David Gibson <dgibson@redhat.com>,
Alex Williamson <alex.williamson@redhat.com>,
Bharata B Rao <bharata@linux.vnet.ibm.com>
Subject: Re: [Qemu-ppc] KVM memory slots limit on powerpc
Date: Fri, 4 Sep 2015 16:45:33 +0200 [thread overview]
Message-ID: <55E9AE8D.3030009@redhat.com> (raw)
In-Reply-To: <55E96CB9.4070100@suse.de>
On 04/09/15 12:04, Alexander Graf wrote:
>
>
> On 04.09.15 11:59, Christian Borntraeger wrote:
>> Am 04.09.2015 um 11:35 schrieb Thomas Huth:
>>>
>>> Hi all,
>>>
>>> now that we get memory hotplugging for the spapr machine on qemu-ppc,
>>> too, it seems like we easily can hit the amount of KVM-internal memory
>>> slots now ("#define KVM_USER_MEM_SLOTS 32" in
>>> arch/powerpc/include/asm/kvm_host.h). For example, start
>>> qemu-system-ppc64 with a couple of "-device secondary-vga" and "-m
>>> 4G,slots=32,maxmem=40G" and then try to hot-plug all 32 DIMMs ... and
>>> you'll see that it aborts way earlier already.
>>>
>>> The x86 code already increased the amount of KVM_USER_MEM_SLOTS to 509
>>> already (+3 internal slots = 512) ... maybe we should now increase the
>>> amount of slots on powerpc, too? Since we don't use internal slots on
>>> POWER, would 512 be a good value? Or would less be sufficient, too?
>>
>> When you are at it, the s390 value should also be increased I guess.
>
> That constant defines the array size for the memslot array in struct kvm
> which in turn again gets allocated by kzalloc, so it's pinned kernel
> memory that is physically contiguous. Doing big allocations can turn
> into problems during runtime.
FWIW, I've just checked sizeof(struct kvm) with the current ppc64 kernel
build from master branch, and it is 34144 bytes.
So on a system that is using PAGE_SIZE = 64kB, there should be plenty of
space left before we're getting into trouble.
And even assuming the worst case, that we're on a system which still
uses PAGE_SIZE = 4kB, the last page of the 34144 bytes is only filled
with 1376 bytes, leaving 2720 bytes free right now.
sizeof(struct kvm_memory_slot) is 48 bytes right now on powerpc, and you
need two additional bytes per entry for the id_to_index array in
struct kvm_memslots, i.e. we need 50 additional bytes per entry on ppc.
That means we could increase KVM_USER_MEM_SLOTS by 2720 / 50 = 54
entries without getting into further trouble.
I think we should leave some more additional bytes left in that last
4k page of the struct kvm region, ... so what about increasing
KVM_USER_MEM_SLOTS to 32 + 48 = 80 now (instead of 32 + 54 = 86) to
ease the memslot situation at least a little bit 'till we figured out
a really final solution like growable memslots?
Thomas
next prev parent reply other threads:[~2015-09-04 14:45 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-04 9:35 KVM memory slots limit on powerpc Thomas Huth
2015-09-04 9:35 ` Thomas Huth
2015-09-04 9:59 ` Christian Borntraeger
2015-09-04 9:59 ` Christian Borntraeger
2015-09-04 10:04 ` [Qemu-ppc] " Alexander Graf
2015-09-04 10:04 ` Alexander Graf
2015-09-04 10:07 ` Christian Borntraeger
2015-09-04 10:07 ` Christian Borntraeger
2015-09-04 10:28 ` Thomas Huth
2015-09-04 10:28 ` Thomas Huth
2015-09-04 10:40 ` Benjamin Herrenschmidt
2015-09-04 10:40 ` Benjamin Herrenschmidt
2015-09-04 14:22 ` Alex Williamson
2015-09-04 14:22 ` Alex Williamson
2015-09-04 14:45 ` Thomas Huth [this message]
2015-09-04 14:45 ` Thomas Huth
2015-09-07 14:31 ` Igor Mammedov
2015-09-07 14:31 ` Igor Mammedov
2015-09-08 6:05 ` Thomas Huth
2015-09-08 6:05 ` Thomas Huth
2015-09-08 7:11 ` Christian Borntraeger
2015-09-08 7:11 ` Christian Borntraeger
2015-09-08 9:22 ` Thomas Huth
2015-09-08 9:22 ` Thomas Huth
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=55E9AE8D.3030009@redhat.com \
--to=thuth@redhat.com \
--cc=agraf@suse.de \
--cc=alex.williamson@redhat.com \
--cc=bharata@linux.vnet.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=dgibson@redhat.com \
--cc=kvm-ppc@vger.kernel.org \
--cc=kvm@vger.kernel.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.