2024. 2. 22. 10:56ㆍServer의 세계/Oracle 관리실무
hugepage 개념
-일반적인 컴퓨팅 시스템은 물리적 메모리 크기를 극복하기 위해 가상메모리 기법을 사용
(가상메모리 기법을 통해 물리 메모리보다 더 큰 메모리가 필요한 에플리케이션을 구동할 수 있다. 가상 메모리 주소를 물리적 메모리 주소로 변환해주는 것이 MMU(Memory Management Unit) 이고 물리적으로 MMU는 CPU 내부에 있다.)
-MMU 내부에 Page Table과 TLB가 있다. CPU는 TLB -> Page table 순서로 찾게 된다.
-리눅스 시스템의 경우 보통 4k로 되어있으며 대용량 메모리를 장착한 시스템의 효율적인 Page Table 관리를 위해 Kernel 2.6부터는 HugePage 기술이 도입되어 더 큰 Page 크기(예 : 2M ~ 256M)로 관리 할 수 있게 되었다.
hugepage의 설정의 목적
적절한 hugepage 설정을 통해 TLB의 hit율을 높일 수 있다. 예를 들어 2MB마다 1 hugepage면 4KB보다 페이지 테이블 크
기도 줄어들고 결국 TLB에 캐쉬된 페이지의 HIT가 높일 수 있다.
Hugepage 계산 방법
1. MOS Doc. 401749.1 에 있는 권장 HugePage 값을 확인하는 스크립트 확인
2. sysdba, sysasm에서 sga 값 확인 후 계산
오늘은 2번 방법으로 진행
hugepage 설정 순서
[사전 확인]
1. meminfo 확인
# cat /proc/meminfo | grep Huge
Hugepagesize: 2048 kB
2. 실행중인 프로세스 확인
ps -ef | grep pmon
# ps -ef | grep pmon
oracle 5178 1 0 14:45 ? 00:00:00 asm_pmon_+ASM1
oracle 5664 1 0 14:46 ? 00:00:00 ora_pmon_test1
root 97012 95828 0 17:18 pts/1 00:00:00 grep --color=auto pmon
3. sga 확인
<DB>
$ ss
sql> show parameter sga
sga_target big integer 151G
<ASM>
$ sa
sql> show parameter sga
sga_target big integer 3G
4. show parameter memory_target; <-AMM 사용시 huge Page 적용 불가
SQL> show parameter memory_target;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
memory_target big integer 0
[hugepages 설정]
SGA / Hugepagesize = Number Hugepages(MB)
(DB + ASM)
(151+3)*1024/2 = 78,848 <---충분치 않으면 db가 안올라갈 수 있다. 여분을 위해 100-200정도 더해준다.
그래서 78,948로 설정해줄 예정.
#vi /etc/sysctl.conf
vm.nr_hugepages = 78,948
#sysctl -p
#su - oracle
$ ss
SQL> show parameter use_large_pages; <-기본값 true 확인
SQL> alter system set use_large_pages='ONLY' scope=spfile; <- value true를 only로 변경
(리눅스 os상에 hugepages값이 세팅되어 있지 않거나 충분히 크지 않으면 oracle DB startup이 안된다. 확실히 hugepages 이용)
node 2에도 동일하게 적용한다.
#srvctl stop database -d test
#srvctl start database -d test
'Server의 세계 > Oracle 관리실무' 카테고리의 다른 글
. oraenv 사용법 (0) | 2022.11.03 |
---|---|
Clock Synchronization (Feat.Observer mode, CTSS daemon) (0) | 2022.09.28 |
LVM 정리, oracleasm disks 구성 간단 정리, partition 확인 (0) | 2022.09.26 |
[Server] 쉽지만 Engineering용어로는 낯선 단어들 1탄 (Redundancy/consolidation/node) (0) | 2022.08.05 |
[Oracle] Cache Fusion 이란? (RAC 구조/DB Buffer Cache와 관계) (0) | 2022.08.04 |