Environment
Oracle Linux Server release 7.3Oracle database 11.2, 12.1
Quick checking
# cat /proc/sys/vm/nr_hugepages
2054
or
# cat /proc/meminfo | grep Huge
AnonHugePages: 0 kB
HugePages_Total: 2054
HugePages_Free: 546
HugePages_Rsvd: 542
HugePages_Surp: 0
Hugepagesize: 2048 kB
checking if transparent huge pages are disabled# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
Viewing database 12.1 alert log
**********************************************************************Mon Oct 16 12:28:54 2017Dump of system resources acquired for SHARED GLOBAL AREA (SGA)Mon Oct 16 12:28:54 2017 Per process system memlock (soft) limit = 128GMon Oct 16 12:28:54 2017 Expected per process system memlock (soft) limit to lock SHARED GLOBAL AREA (SGA) into memory: 2050MMon Oct 16 12:28:54 2017 Available system pagesizes: 4K, 2048KMon Oct 16 12:28:54 2017 Supported system pagesize(s):Mon Oct 16 12:28:54 2017 PAGESIZE AVAILABLE_PAGES EXPECTED_PAGES ALLOCATED_PAGES ERROR(s) 4K Configured 3 3 NONE 2048K 2054 1025 1025 NONE**********************************************************************
Viewing database 11.2 alert log
************************ Large Pages Information *******************Per process system memlock (soft) limit = 128 GB
Total Shared Global Region in Large Pages = 2050 MB (100%)
Large Pages used by this instance: 1025 (2050 MB)Large Pages unused system wide = 4 (8192 KB)Large Pages configured system wide = 2054 (4108 MB)Large Page size = 2048 KB********************************************************************If number of Huge pages is less than required, than SGA will use both page types. Database 12.1 aler.log: PAGESIZE AVAILABLE_PAGES EXPECTED_PAGES ALLOCATED_PAGES ERROR(s) 4K Configured 3 187704 NONE 2048K 659 1025 658 NONE
Simplified setup
1. Have the memlock user limit set in /etc/security/limits.conf file. Set the value (in KB) slightly smaller than total RAM (90%) , at least it must be bigger than HugePages size.* soft memlock 14680064* hard memlock 14680064Atentu! If you use systemd to auto startup databases, systemd ignores limits.conf. You need to add the following to a service unit file[Service]LimitMEMLOCK=infinityLimitNOFILE=65535
2. Get the required number of pages from alert.log (EXPECTED_PAGES) or by running Oracle script hugepages_settings.sh (Doc ID 401749.1)
3. edit vm.nr_hugepages in /etc/sysctl.conf as root4. to reload the parameters, reboot Linux or use sysctl -p
Proper setup and more infoHugePages on Oracle Linux 64-bit (Doc ID 361468.1)HugePages on Linux: What It Is... and What It Is Not... (Doc ID 361323.1)Oracle Linux: Shell Script to Calculate Values Recommended Linux HugePages / HugeTLB Configuration (Doc ID 401749.1)