introduce support for dynamic hugepage configuration

Registered by sean mooney

---------------hugepage usecase ---------------------------
hugepages aka kernel largepages are a feature of the linux kernel that allow the use of memory pages
grater then the default 4k size. By supporting larger page allocation the kernel allows better utilization of
the Translation look aside buffer(tlb) by reducing the total number of virtual to physical page mappings required
to be stored in the tlb.

use of kernel hugepages also gauntness that the virtual memory address backed by hugepage memory
will always be resident in main memory and not swapped to disk enabling userspace application to
access this memory via dma.

currently kolla does not support configuring huge pages on the host platform for consumption by guests or
other containers.

--------------proposed change-------------

This blueprint propose extending the kolla common playbook to configure hugepages on the platform so that it can then be consumed by tenet vms via nova. to support this 4 new parameters will be added.
(enable_hugepages, hugepage_mountpoint,hugepage_page_size,hugepage_count)
e.g.
enable_hugepages=true
hugepage_mountpoint=/mnt/huge
hugepage_page_size=2M
hugepage_count=1024

by default hugepage allocation will be disabled to to maintain the current behavior.

deployment wide values will be supported via defining the values in the global.yml and
to support heterogeneous deployments with varying amount of ram the hugepage parameter could be overridden via the
inventory file on a per host basis.

extending the common playbook is suggested to allow reuses of this feature by ovs with dpdk if support is added in the future.
an alternative to this approach would be to include hugepage configuration in the new install playbook that is proposed
to configure the bare metal nodes with kolla dependencies (docker,ansilble,ssh key, firewall...)

Blueprint information

Status:
Started
Approver:
Christian Berendt
Priority:
Undefined
Drafter:
sean mooney
Direction:
Needs approval
Assignee:
sean mooney
Definition:
Approved
Series goal:
None
Implementation:
Slow progress
Milestone target:
None
Started by
Christian Berendt

Related branches

Sprints

Whiteboard

moved to pike

instead of introducing new ansible vaiables for hugepages support can be enabled via

https://review.openstack.org/#/c/408876/

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.