Configure HugePages For Your Oracle Database Server
Configure HugePages For Your Oracle Database Server
VALUE
---------------------------
41943040
VALUE
---------------------------
TRUE
3. Check Hugepagesize
In our example we use a x86_64 Red Hat Enterprise Linux Server. So by default hugepagesize should be set to 2
MB:
grep Hugepagesize /proc/meminfo
Hugepagesize: 2048 kB
4. Calculate Hugepages
For the calculation of the number of hugepages there is a easy way:
SGA / Hugepagesize = Number Hugepages
Following our example:
41943040 / 2048 = 20480
If you run more than one database on your server, you should include the SGA of all of your instances into the
calculation:
( SGA 1. Instance + SGA 2. Instance + … etc. ) / Hugepagesize = Number Hugepages
In My Oracle Support you can find a script (Doc ID 401749.1) called hugepages_settings.sh, which does the
calculation. This also includes a check of your kernel version and the actually used shared memory area by the SGA.
Please consider that this calculation observes only the actual use of SGA and their use. If your second instance is
down it will be not in the account. That means to adjust your SGA and restart your database first. Than you can run
the script. Result should be the following line. Maybe you can make your own calculation and than check it with
the script:
Recommended setting: vm.nr_hugepages = 20480
The next parameter is hard and soft memlock in /etc/security/limits.conf for our oracle user. This value should be
smaller than our available memory but minor to our SGA. Our hugepages should fit into that by 100 percent. For
that following calculation:
Number Hugepages * Hugepagesize = minimum Memlock
Following our example:
20480 * 2048 = 41943040
vi /etc/security/limits.conf
oracle soft memlock 41943040
oracle hard memlock 41943040
As mentioned before we have to disable transparent hugepages from Red Hat Linux version 6 ongoing:
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
[always] madvise never
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
always madvise [never]
6. Server Reboot
If all parameter are set, make a complete reboot your server. As an alternative you can reload the parameters with
sysctl -p.
7. Check Configuration
Memlock correct?
ulimit -l
41943040
Did the database uses HugePages? For that we take a look into the alert log. After „Starting ORACLE instance
(normal)“ following entry „Large Pages Information“ gives us advise:
If your configuration is incorrect Oracle delivers recommendation here for the right setting. In the following
example exactly one Page is missing, so 2048 kB memlock to come to 100% of SGA use of hugepages:
************************ Large Pages Information *******************
...
...
RECOMMENDATION:
Total System Global Area size is 40 GB. For optimal performance,
prior to the next instance restart:
1. Increase the number of unused large pages by
at least 1 (page size 2048 KB, total size 2048 KB) system wide to
get 100% of the System Global Area allocated with large pages
2. Large pages are automatically locked into physical memory.
Increase the per process memlock (soft) limit to at least 40 GB to lock
100% System Global Area's large pages into physical memory
********************************************************************