2025. 6. 10. 16:44 오라클
Database 서버에서 swapping 을 줄이기 위한 노력
Database 서버에서 swapping 을 줄이기 위한 노력
1. 오라클 메모리관리를 AMM -> ASMM 으로 변경
AMM(SGA_TARGET+MEMORY_TARGET)을 사용하는 경우 AMM과 HugePages를 함께 사용할 수 없으므로 ASMM으로 전환한다.
예시)
ALTER SYSTEM SET MEMORY_TARGET=0 SCOPE=SPFILE;
ALTER SYSTEM SET SGA_TARGET=8G SCOPE=SPFILE;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET=4G SCOPE=SPFILE;
2. Transparent HugePages를 사용하면 실행 중에 메모리 할당 지연이 발생하므로 비활성화 작업
cat /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
3. Hugepages 활성화
SGA 8G 이상 사용하면 설정 권장
1) DB Parameter 를 use_large_pages=only 로 설정
2) grep Hugepagesize /proc/meminfo
Hugepagesize: 2048 kB
grep "hugepage" /etc/sysctl.conf
vm.nr_hugepages=1024
MOS 문서 401749.1 를 참조하여 hugepages 수를 계산하여 반영
vi /etc/sysctl.conf
vm.nr_hugepages=51200 -> 100G 로 설정예시
sysctl -p
4. 오라클 사용계정의 memlock 설정
vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
5. OS kernel 변경적용
vi /etc/sysctl.conf
vm.swappiness = 1 -> 낮을수록 더 많은 스왑을 피할 수 있다.
vm.min_free_kbytes = 131072 -> 128M 를 의미
sysctl -p
이 매개변수는 Linux가 예약해야 하는 "사용 가능한 메모리"의 최소 양(KB)을 지정한다. 즉, 시스템은 이 양 이하로 떨어지지 않도록 메모리를 적극적으로 해제한다.
이 값이 낮으면 커널이 메모리를 더 밀접하게 사용하고 갑작스러운 메모리 수요에 대처할 수 없어 스와핑이 발생할 수 있다.
이 값을 어느 정도 늘리면 예방적으로 메모리를 확보하고 스와핑이 발생할 가능성을 줄이는 효과가 있다.