HugePage 란?
일반적인 컴퓨팅 시스템은 물리적 메모리 크기를 극복하기 위해 가상메모리 기법을 사용하며,
상이한 두 메모리를 매핑하기 위해 Page Table이 존재하고 Page 단위로 관리됨
리눅스 시스템의 경우 보통 4k로 되어있음
대용량 메모리를 장착한 시스템의 효율적인 Page Table 관리를 위해 Kernel 2.6부터는 HugePage 기술이 도입되어 더 큰 Page 크기(예 : 2M ~ 256M)로 관리 할 수 있게 되었음
HugePage 사용 시 장점
1. Normal Page와는 다르게 HugePage는 Swap되지 않음. 따라서 Page-in/.Page-Out의 Overhead가 없음
2. HugePage는 상대적으로 적은 수의 Meta 정보로 좀 많은 물리적 메모리를 Cover하므로 CPU내의 Buffer(=Translation Lookaside Buffer, TLB)좀 더 많은 Page Entry를 보관할 수 있어 Page Hit율이 높아짐
3. Page Table에서 관리하는 물리적 메모리의 Entry 개수가 줄어들고 더 적은 메모리 공간을 차지함
따라서 오라클 관점에서 보면 오라클 프로세스의 계산이나 PGA에 좀 더 많은 메모리가 제공됨
4. Normal Page의경우, 50GB의 메모리를 관리하기 위해서는
1,300 만개의 page(13,107,200 = 50 * 1024* 1024 KB / 4 KB)가 유지되어야함
HugePages를 사용할 경우 25,600 개의 Page가 관리되므로
메모리 관리을 위한 Overhead가 줄어들고 자원사용율도 절약됨
5. 평균적으로 20~30% 성능향상이 있을수 있음
[oracle@pncssdbsuy01 ~]$ cat /proc/meminfo | grep Huge
AnonHugePages: 0 kB
HugePages_Total: 30021
HugePages_Free: 39
HugePages_Rsvd: 36
HugePages_Surp: 0
Hugepagesize: 2048 kB
Recommended setting: vm.nr_hugepages = 30090
hugepages셋팅 확인
USE_LARGE_PAGES
Parameter type | String |
Syntax | USE_LARGE_PAGES = { TRUE | FALSE | ONLY } |
Default value | TRUE |
Modifiable | No |
Basic | No |
Oracle RAC | Multiple instances can use different values |
사이트에서 보통 only로 설정함
. 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