How to check Transparent HugePage status if it is enabled or disabled in Linux (RHEL/CentOS 7). Verify the status of Transparent HugePages in Linux. Check if transparent hugepages are enabled. check if transparent hugepages are disabled. Steps to check transparent hugepage status with examples in Linux.

How to check Transparent HugePage status (Disabled or Enabled) in Linux?

 

Transparent Hugepage Support maximizes the usefulness of free memory if compared to the reservation approach of hugetlbfs by allowing all unused memory to be used as cache or other movable (or even unmovable entities). It doesn’t require reservation to prevent hugepage allocation failures to be noticeable from userland. It allows paging and all other advanced VM features to be available on the hugepages. It requires no modifications for applications to take advantage of it.

 

Types of HugePages:

There can be two types of HugePages in the system

  • Explicit Huge Pages (nr_hugepages) which are allocated explicitly by vm.nr_hugepages sysctl parameter i.e. the pages that are used as huge pages are reserved inside the kernel and cannot be used for other purposes.
  • Transparent Huge Pages (AnonHugePages) which are allocated automatically by the kernel.

 

 

Check Transparent HugePage Status

The /proc/meminfo file provides information about the total number of persistent hugetlb pages in the kernel’s huge page pool. It also displays default huge page size and information about the number of free, reserved and surplus huge pages in the pool of huge pages of default size.

# grep -i huge /proc/meminfo
AnonHugePages:    264192 kB
HugePages_Total:   50226
HugePages_Free:    50226
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

Here,

HugePages_Total is the size of the pool of huge pages and is configured 
				using /proc/sys/vm/nr_hugepages
HugePages_Free  is the number of huge pages in the pool that are not yet
                allocated.
HugePages_Rsvd  is short for "reserved," and is the number of huge pages for
                which a commitment to allocate from the pool has been made,
                but no allocation has yet been made.  Reserved huge pages
                guarantee that an application will be able to allocate a
                huge page from the pool of huge pages at fault time.
HugePages_Surp  is short for "surplus," and is the number of huge pages in
                the pool above the value in /proc/sys/vm/nr_hugepages. The
                maximum number of surplus huge pages is controlled by
                /proc/sys/vm/nr_overcommit_hugepages.
Hugepagesize    is the default hugepage size (in Kb).

 

Verify the status of Transparent HugePage (AnonHugePages)

To check Transparent HugePage Status for AnonHugePages use the below file

# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

Here,

"always" 	means that an application requesting THP will stall on allocation 
		failure and directly reclaim pages and compact memory in an effort
		to allocate a THP immediately. This may be desirable for virtual 
		machines that benefit heavily from THP use and are willing to 
		delay the VM start to utilise them.

"madvise" 	will enter direct reclaim like "always" but only for regions 
		that are have used madvise(MADV_HUGEPAGE). This is the default 
		behaviour.

"never" 	should be self-explanatory.

 

Verify the status of explicit transparent hugepage (nr_hugepages)

To check Transparent HugePage status for nr_hugepages. In the below snippets as you see the value of HugePages_Total and nr_hugepages is 0 which means that explicit hugepage is disabled on my system. If you see a non-zero value here then it means that the provided amount of memory is reserved in the kernel for explicit transparent hugepage.

# cat /sys/devices/system/node/node*/meminfo | fgrep Huge
Node 0 AnonHugePages:         0 kB
Node 0 HugePages_Total:     0
Node 0 HugePages_Free:      0
Node 0 HugePages_Surp:      0

# grep -i huge /proc/meminfo
AnonHugePages:    174080 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

# sysctl -a | grep nr_hugepages
vm.nr_hugepages = 0

 

Lastly I hope the steps from the article to check transparent hugepage status whether it is enabled or disabled on Linux was helpful. So, let me know your suggestions and feedback using the comment section.

 

Leave a Reply

Your email address will not be published. Required fields are marked *