Odi's astoundingly incomplete notes
New entries | CodeOracle and HugePages
I have an Oracle 12 instance with 32GB SGA on a modern Gentoo Linux system with 48GB of RAM. The kernel has transparent hugepages set to always but no HugePages configured.
From
After reserving 32 GB of real 2 MB HugePages (vm.nr_hugepages = 16384) the situation has become:
From
/proc/meminfo
:
PageTables: 2577752 kB
AnonHugePages: 75776 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
You can clearly see that page tables take up 2.5 GB of RAM. This makes TLB flushes really bad of course. You can also see that Oracle doesn't make much use of transparent huge pages. Only 75 MB are used.After reserving 32 GB of real 2 MB HugePages (vm.nr_hugepages = 16384) the situation has become:
PageTables: 118456 kB
AnonHugePages: 0 kB
HugePages_Total: 16384
HugePages_Free: 63
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
So Oracle has put the SGA completely into HugePages which greatly reduces the space required for page tables and thus memory management becomes a lot more efficient.Add comment