By using AWS re:Post, you agree to the AWS re:Post Terms of Use

How do I configure HugePages on my Amazon EC2 Linux instance?

3 minute read
1

I want to improve performance on my database or application hosted on an Amazon Elastic Compute Cloud (Amazon EC2) Linux instance.

Short description

To help reduce the stress on the translation lookaside buffer (TLB) in your Linux instance's kernel in a large application or database environment, activate HugePages. Less stress on the TLB increases the performance of your server and application or database because TLB stores fewer pages that are larger in size.

For example, if TLB entries are at 512 without HugePages configured on the instance, then the memory size is approximately equal to the following:

4096 B * 512 = 2 MB memory size

If TLB entries are at 512 with HugePages configured on the instance, then the memory size is approximately equal to the following:

2 MB * 512 = 1 GB memory size

Note: Valid values for HugePages in a Linux system are 2 MB and 1 GB. The default value is 2 MB.

For more information about HugePages, see HugePages on the Oracle website.

Prerequisites:

  • To activate release after system startup, either modify the number of pages available or modify the HugePages pool size.
  • To determine the amount of memory that must be available, verify the total memory of the instance by running the free -m command.
    Note: Get the hugepagesize value from your application, database vendor, or from your system administrator. For more information, see Viewing SGA memory allocation on the Oracle website.
  • To verify that your application or database supports HugePages, consult with your vendor or your system administrator.

Resolution

Note: It's a best practice to configure HugePages in a test environment and benchmark performance before you deploy it to production.

  1. To verify that your kernel doesn't currently have HugePages activated, run the following cat command:

    # sudo cat /proc/sys/vm/nr_hugepages
    0

    In the previous example, the nr_hugepages parameter value is 0. This value shows that HugePages isn't activated.

  2. To activate HugePages and set the kernel parameter value to 2048, run the following command:

    # sudo sysctl -w vm.nr_hugepages=2048
    vm.nr_hugepages = 2048
  3. To verify that the system allocates HugePages after reboot, add the following entry to /etc/sysctl.conf:

    # sudo echo "vm.nr_hugepages=2048" >> /etc/sysctl.conf
  4. To verify the change, run the following cat command:

    # sudo cat /etc/sysctl.conf
    # sysctl settings are defined through files in
    # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
    #
    # Vendors settings live in /usr/lib/sysctl.d/.
    # To override a whole file, create a new file with the same in
    # /etc/sysctl.d/ and put new settings there. To override
    # only specific settings, add a file with a lexically later
    # name in /etc/sysctl.d/ and put new settings there.
    #
    # For more information, see sysctl.conf(5) and sysctl.d(5).
    vm.zone_reclaim_mode=1
    vm.nr_hugepages=2048
  5. Reboot your instance.

  6. After you reboot, run the following cat command again to verify the HugePages value and configuration:

    # sudo cat /proc/sys/vm/nr_hugepages
    2048
  7. Check the available HugePages in /proc/meminfo:

    # sudo grep Huge /proc/meminfo
    HugePages_Total:    2048
    HugePages_Free:     2048
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB

    For definitions of each variable in the previous example output, see HugePages on kernel.org.

    HugePages is now activated on your server.

  8. Configure HugePages on additional applications as needed.

To deactivate HugePages:

  1. Reset the value of nr_hugepages to 0.
  2. Remove the entry in sysctl.conf.
  3. Reboot the server.
AWS OFFICIAL
AWS OFFICIALUpdated 4 years ago