blob: da812e370481309e69163efc0ccadf5adbcffa12 [file] [log] [blame]
John DeNisco06dcd452018-07-26 12:45:10 -04001.. _hugepages:
2
3Huge Pages
4----------
5
John DeNiscoce96dda2018-08-14 16:04:09 -04006VPP requires *hugepages* to run during VPP operation, to manage large pages of memory.
7During VPP installation, VPP will overwrite the existing hugepage settings. By
8default, VPP sets the number of hugepages on a system to 1024 2M hugepages (1G hugepages
9are no longer supported). This is the number of hugepages on the system, not just used by VPP.
John DeNiscoc64ba6d2018-08-02 15:03:15 -040010
John DeNiscoce96dda2018-08-14 16:04:09 -040011When VPP is installed, the following configuration file is copied to the system. The
12hugepage settings are applied in the VPP installation and on system reboots. To set
13the hugepage settings, perform the following commands:
John DeNisco06dcd452018-07-26 12:45:10 -040014
15.. code-block:: console
16
17 $ cat /etc/sysctl.d/80-vpp.conf
18 # Number of 2MB hugepages desired
19 vm.nr_hugepages=1024
20
21 # Must be greater than or equal to (2 * vm.nr_hugepages).
22 vm.max_map_count=3096
23
24 # All groups allowed to access hugepages
25 vm.hugetlb_shm_group=0
26
27 # Shared Memory Max must be greator or equal to the total size of hugepages.
28 # For 2MB pages, TotalHugepageSize = vm.nr_hugepages * 2 * 1024 * 1024
29 # If the existing kernel.shmmax setting (cat /sys/proc/kernel/shmmax)
30 # is greater than the calculated TotalHugepageSize then set this parameter
31 # to current shmmax value.
32 kernel.shmmax=2147483648
33
John DeNiscoce96dda2018-08-14 16:04:09 -040034Depending on how the system is being used, this configuration file can be updated to adjust
John DeNisco06dcd452018-07-26 12:45:10 -040035the number of hugepages reserved on a system. Below are some examples of
John DeNiscoce96dda2018-08-14 16:04:09 -040036possible settings.
37
John DeNisco06dcd452018-07-26 12:45:10 -040038For a small VM with minimal workload:
39
40.. code-block:: console
41
42 vm.nr_hugepages=512
43 vm.max_map_count=2048
44 kernel.shmmax=1073741824
45
46For a large system running multiple VMs, each needing its own set of hugepages:
47
48.. code-block:: console
49
50 vm.nr_hugepages=32768
51 vm.max_map_count=66560
52 kernel.shmmax=68719476736
53
54
55.. note::
56
57 If VPP is being run in a Virtual Machine (VM), the VM must have hugepage
John DeNiscoce96dda2018-08-14 16:04:09 -040058 backing. When VPP is installed, it will attempt to overwrite existing the
59 hugepage setting. If the VM does not have hugepage backing, the install will fail,
60 but the failure may go unnoticed. When the VM is rebooted, on system startup,
61 *'vm.nr_hugepages'* will be reapplied, and will fail, and the VM will abort kernel
John DeNisco06dcd452018-07-26 12:45:10 -040062 boot, locking up the VM. To avoid this scenario, ensure the VM has enough
63 hugepage backing.