[ovirt-users] Question about Huge Pages

Gianluca Cecchi gianluca.cecchi at gmail.com
Thu Apr 20 15:39:20 UTC 2017


On Thu, Apr 20, 2017 at 10:35 AM, Michal Skrivanek <mskrivan at redhat.com>
wrote:

>
> On 19 Apr 2017, at 16:28, Gianluca Cecchi <gianluca.cecchi at gmail.com>
> wrote:
>
> On Wed, Apr 19, 2017 at 3:44 PM, Martin Polednik <mpolednik at redhat.com>
> wrote:
>
>>
>>>
>> If you are using recent CentOS (or I guess Fedora), there isn't any
>> extra setup required. Just create the custom property:
>>
>
> Both my engine and my hosts are CentOS 7.3 + updates
>
>
> that’s good
>
>
>
>>
>> On the host where engine is running:
>>
>> $ engine-config -s "UserDefinedVMProperties=hugepages=^.*$"
>> $ service ovirt-engine restart
>>
>> and you should see 'hugepages' when editing a VM under custom properties.
>>
>
> So no vdsm hook at all to install?
>
>
> today you still need the hook.
>
>
>
>
>> Set the number to (desired memory / 2048) and you're good to go. The
>> VM will run with it's memory backed by hugepages.
>
>
> As in sysctl.conf? So that if I want 4Gb of Huge Pages I have to set 2048?
>
>
> yes. there might be some
>
>
>
>
>> If you need
>> hugepages even inside the VM, do whatever you would do on a physical
>> host.
>>
>> mpolednik
>>
>>
> yes, the main subject is to have Huge Pages inside the guest, so that
> Oracle RDBMS at startup detect them and use them
>
>
> yes, so if you do that via sysctl.conf on real HW just do the same here,
> or modify kernel cmdline.
>
> Note that those are two separate things
> the hook is making QEMU process use hugepages memory in the host - that
> improves performance of any VM
> then how it looks in guest is no concern to oVirt, it’s guest-side
> hugepages. You can enable/set them regardless the previous step, which may
> be fine if you just want to expose the capability to some app  - e.g. in
> testing that the guest-side Oracle can work with hugepages in the guest.
> But you probably want both Oracle to see hugepages and also actually use
> them - then you need both reserve that on host for qemu process and then
> inside guest reserve that for oracle. I.e. you need to add a “buffer” on
> host side to accommodate the non-hugepages parts of the guest e.g. on 24GB
> host you can reserve 20GB hugepages for VMs to use, and then run a VM with
> 20GB memory, reserving 16GB hugepages inside the guest for oracle to use.
>
> Thanks,
> michal
>
>
> Gianluca
>
>
>
I'm making some tests right now.
Steps done:
- configure huge pages on hypervisor

[root at ractor ~]# cat /etc/sysctl.d/huge-pages.conf
# 20/04/2017 8Gb
vm.nr_hugepages = 4096
[root at ractor ~]#

rebooted host (I also updated in the mean time it to latest 4.1.1 packages
with vdsm-4.19.10.1-1.el7.centos.x86_64 and vdsm-hook-hugepages-4.19.
10.1-1.el7.centos.noarch)
I also set "transparent_hugepage=never" boot parameter because I know that
they are in conflict with Huge Pages

So the situation is:

[root at ractor ~]# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-514.16.1.el7.x86_64 root=/dev/mapper/centos-root
ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8
transparent_hugepage=never
[root at ractor ~]#

[root at ractor ~]# cat /proc/meminfo | grep -i huge
AnonHugePages:         0 kB
HugePages_Total:    4096
HugePages_Free:     4096
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
[root at ractor ~]#

I edited a pre-existing CentOS 6 VM setting for it 8Gb of ram and 2048
pages (4Gb) in custom property forhugepages.

When I power on I get this addition in qemu-kvm process definition as
expected:

-mem-path /dev/hugepages/libvirt/qemu

I noticed that now I have on host....

[root at ractor vdsm]# cat /proc/meminfo | grep -i huge
AnonHugePages:         0 kB
HugePages_Total:    6144
HugePages_Free:     2048
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
[root at ractor vdsm]#

So apparently it did allocated 2048 new huge pages...
Does it mean that actually I have not to pre-allocate huge pages at all on
host and it eventually will increase them (but not able to remove then I
suppose) ?

Anyway the count doesn't seem correct... because it seems that a total of
4096 pages are in use/locked... (HugePages_Total - HugePages_Free
+ HugePages_Rsvd)
while they should be 2048.....

[root at ractor vdsm]# ll /dev/hugepages/libvirt/qemu/
total 0
[root at ractor vdsm]# ll /hugetlbfs/libvirt/qemu/
total 0
[root at ractor vdsm]#

If I power off the VM

[root at ractor vdsm]# cat /proc/meminfo | grep -i huge
AnonHugePages:         0 kB
HugePages_Total:    4096
HugePages_Free:     4096
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
[root at ractor vdsm]#

Does this mean that in CentOS 7.3 Huge Pages could be reclaimed....???

Nevertheless, when I configure huge pages in guest it seems to work as
expected

[root at dbtest ~]# cat /proc/meminfo | grep -i huge
AnonHugePages:         0 kB
HugePages_Total:    2048
HugePages_Free:     2048
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

Going into Oracle DB initialization, after configuring its dedicated memory
(SGA) to 2354Mb, I get this confirmation inside its log file

Thu Apr 20 17:16:27 2017
 Per process system memlock (soft) limit = 4096M
Thu Apr 20 17:16:27 2017
 Expected per process system memlock (soft) limit to lock
 SHARED GLOBAL AREA (SGA) into memory: 2354M
Thu Apr 20 17:16:27 2017
 Available system pagesizes:
  4K, 2048K
Thu Apr 20 17:16:27 2017
 Supported system pagesize(s):
Thu Apr 20 17:16:27 2017
  *PAGESIZE*  AVAILABLE_PAGES  EXPECTED_PAGES  *ALLOCATED_PAGES*  ERROR(s)
Thu Apr 20 17:16:27 2017
        4K       Configured               3               3        NONE
Thu Apr 20 17:16:27 2017
     *2048K *            2048            1177            *1177*        NONE

Gianluca
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/users/attachments/20170420/8c2ad362/attachment.html>


More information about the Users mailing list