Disabling Transparent HugePages

Oracle recommends that you disable Transparent HugePages before you start installation.

Transparent HugePages memory differs from standard HugePages memory because the kernel khugepaged thread allocates memory dynamically during runtime. Standard HugePages memory is pre-allocated at startup, and does not change during runtime.

Note:

Although Transparent HugePages is disabled on UEK2 and later UEK kernels, Transparent HugePages may be enabled by default on your Linux system.

Transparent HugePages memory is enabled by default with Oracle Linux 6 and later, Red Hat Enterprise Linux 6 and later, SUSE 11 and later, kernels.

Transparent HugePages can cause memory allocation delays during runtime. To avoid performance issues, Oracle recommends that you disable Transparent HugePages on all Oracle Database servers. Oracle recommends that you instead use standard HugePages for enhanced performance.

To check if Transparent HugePages is enabled, run one of the following commands as the root user:

Red Hat Enterprise Linux kernels:

# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled

Other kernels:

# cat /sys/kernel/mm/transparent_hugepage/enabled

The following is a sample output that shows Transparent HugePages are being used as the [always] flag is enabled.

[always] never 

Note:

If Transparent HugePages is removed from the kernel, then neither /sys/kernel/mm/transparent_hugepage nor /sys/kernel/mm/redhat_transparent_hugepage files exist.

To disable Transparent HugePages:

  1. For Oracle Linux 6 or earlier releases, add the following entry to the kernel boot line in the /etc/grub.conf file:

    transparent_hugepage=never
    For example:
    title Oracle Linux Server (2.6.32-300.25.1.el6uek.x86_64)
          root (hd0,0)
          kernel /vmlinuz-2.6.32-300.25.1.el6uek.x86_64 ro root=LABEL=/ transparent_hugepage=never
          initrd /initramfs-2.6.32-300.25.1.el6uek.x86_64.img
  2. For Oracle Linux 7 and later, and Red Hat Enterprise Linux 7 and later, add or modify the transparent_hugepage=never parameter in the /etc/default/grub file:

    transparent_hugepage=never
    For example:
    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off transparent_hugepage=never"
    GRUB_DISABLE_RECOVERY="true"

    Note:

    The file name may vary for your operating systems. Check your operating system documentation for the exact file name and the steps to disable Transparent HugePages.
  3. Run the grub2–mkconfig command to regenerate the grub.cfg file.

    # grub2-mkconfig -o /boot/grub2/grub.cfg
  4. Restart the system to make the changes permanent.