나는 oracle AMM에서 ASMM 거대한 페이지로 전환하려고 노력해 왔습니다. RHEL 6에서 다음과 같이 변경했습니다.
/etc/sysctl.conf에 다음 항목을 추가했습니다(Hugepages_setting.sh에서 제안한 대로).
vm.nr_hugepages=777
/etc/security/limits.conf에 다음 항목을 추가했습니다.
oracle soft memlock 2831155
oracle hard memlock 2831155
서버를 다시 시작하고 oracle 매개변수 memory_target, memory_max_target, sga_target, sga_max_target, use_large_pages를 특정 값으로 변경합니다.
데이터베이스가 다시 시작되면 다음을 볼 수 있습니다.
[root@rheloracle ~]# grep -i huge /proc/meminfo
AnonHugePages: 0 kB
HugePages_Total: 777
HugePages_Free: 8
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
데이터베이스를 닫으면 HugePages_Free가 HugePages_Total과 같은 것을 볼 수 있습니다.
[root@rheloracle ~]# grep -i huge /proc/meminfo
AnonHugePages: 0 kB
HugePages_Total: 777
HugePages_Free: 777
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
데이터베이스 수준과 운영 체제 수준의 HugePage 구성이 동기화되어 사용되고 있는 것으로 보입니다. 그러나 내가 인용한 모든 예제와 문서는 hugepages가 활성화되면 HugePages_Rsvd가 0이 아닌 값을 가져야 함을 나타냅니다. 그러나 같은 상황은 나에게 일어나지 않았습니다. 누락된 내용이 있거나 HugePages_Rsvd 0이 정상인 경우 제안해 주실 수 있나요?
(RHEL6에서 oracle 18c xpress 버전을 실행하고 있습니다)
답변1
PRE_PAGE_SGA
Oracle 매개변수가 FALSE
(Oracle 11 이전의 기본값인 것 같습니다)로 설정된 경우 "Keep Huge Pages" 값만 표시됩니다.
Oracle 12부터 기본적으로 다음이 표시됩니다.
SQL> show parameter PRE_PAGE_SGA
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pre_page_sga boolean TRUE
$ grep HugePages_Rsvd /proc/meminfo
HugePages_Rsvd: 0