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)을 지정한다. 즉, 시스템은 이 양 이하로 떨어지지 않도록 메모리를 적극적으로 해제한다.
이 값이 낮으면 커널이 메모리를 더 밀접하게 사용하고 갑작스러운 메모리 수요에 대처할 수 없어 스와핑이 발생할 수 있다.
이 값을 어느 정도 늘리면 예방적으로 메모리를 확보하고 스와핑이 발생할 가능성을 줄이는 효과가 있다.

Posted by pat98

07-13 09:30
Flag Counter
Yesterday
Today
Total

글 보관함

최근에 올라온 글

달력

 « |  » 2025.7
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

최근에 달린 댓글