AIX 튜닝포인트 - CPU,MEM,VG + FAQ
2012.11.20 22:54
원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어
Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
1. CPU 튜닝
1-1. CPU 스케줄링 튜닝
- 기본적으로 튜닝할 필요가 없음.
- polling등을 하는 프로세스의 응답시간 단축을 위해 할 수 있는 튜닝
# schedo –p –o smt_snooze_delay=-1
:: smt_snooze_delay 값에 지정된 시간동안 CPU 부하가 없을 경우 SMT thread가 snooze 상태로 들어가는 것을 의미함.
-1 값은 disable을 의미하며 이 경우 SMT thread가 항상 깨어있게됨. micro-partition 처럼 공유 CPU pool 을 사용하는 시스템에서는
사용하지 않는 것이 좋음. 공유CPU가 아닌 전용 CPU가 될 것이기 때문에...
- Power7에서는 smt_snooze_delay를 무조건 0 으로 놓아야 함. 성능악화됨.
1-2. CPU folding 이슈
- CPU folding : 선택된 가상 CPU에 물리적 core의 computing power를 몰아줘서 성능을 높일 수 있음
# schedo –p –o vpm_xvcpus=0 으로 활성화 가능 (default)
- 그러나 ORACLE, Sybase 등에서는 CPU folding 으로 인한 성능악화로 비활성화 할것을 권고.
# schedo –p –o vpm_xvcpus=-1 으로 비활성화
2. MEM 튜닝
2-1. 파일시스템 캐시쪽으로 메모리가 몰려 어플리케이션 구동에 필요한 메모리가 부족해 지는 이슈
- AIX 5.3 까지의 default 값에 의하여
: minperm% = 20
: maxperm% = 80
: maxclient% = 80
: strict_maxperm = 0
: strict_maxclient = 1
: lru_file_repage = 1
: page_steal_method = 0
파일시스템 I/O가 많이 발생할 경우 파일시스템 캐시를 위한 메모리가 많이 사용되어 정작 어플리케이션 등이
사용해야할 메모리가 부족한 일이 발생하게 됨.
이를 방지하기 위하여 강제로 파일시스템캐시로 사용할 메모리영역을 제한함으로써 메모리를 확보할 수 있음.
대개 아래와 같은 권장값으로 구현.
# vmo –p –o maxclient%=20 –o maxperm%=20 –o minperm%=10 –o lru_file_repage=0
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- AIX 6.1 에서부터 나온 신규 방식에서는 파일캐시와 연산용 메모리 풀을 별도로 관리함.
이 방식에서는 연산용 메모리가 전체 메모리의 97% 이상을 사용하지 않는 한 페이징스페이스 out이 발생하지 않게됨.
- lru_file_repage 값이 1이면 파일캐시/연산용메모리 중에서 많이 사용하는 쪽에 우선권을 주고, 0이면 연산용메모리에 우선권을 줌.
- page_steal_method 값이 0 이면 파일캐시와 연산용메모리를 하나의 풀에서 관리, 1이면 별도의 풀에서 각각 관리.
- 다음 명령어로 구현할 수 있음.
# vmo –p –o maxclient%=90 –o maxperm%=90 –o minperm%=3 –o lru_file_repage=0
# vmo –r –o page_steal_method=1 (리부팅 필요)
3. VG 이슈
- VG 별 사양
Standard VG |
BIG VG |
Scalable VG | |
MAX PVs |
32 |
128 |
1024 |
MAX LVs |
255 |
511 |
4095 |
MAX active VGs |
255 |
255 |
255 |
LVM 작업속도 |
fast |
slow |
slow (by number of LVs) |
* LVM 작업속도란 lvcreate 등의 LVM관련 작업에 대한 속도로써 파일시스템 I/O속도를 의미하는것이 아님.
* BIG VG에서 raw-device를 사용하기 위해 mklv 옵션에 -TO 를 사용하게 되어있는데 이는 BIG VG 설계시 오라클을 위한 옵션으로
Standard VG나 Scalable VG에서는 사용할 필요 없음.
- 특별한 이유가 없는한 Scalaeble VG를 사용하는 것이 좋음.
4. 네트웍 튜닝
4-1. 기본 네트웍 파라미터 조정
- 기본적으로는 기본값으로 운영하는 것이 좋으나, 웹서버 등 집중된 부하를 사용하는 서버들을 위하여 다음의 값들을 조정하여 사용.
# no –p –o tcp_recvspace = 65536 –o tcp_sendspace = 131072 –o udp_recvspace = 655360 –o udp_sendspace = 65536 –o rfc1323 = 1 –o tcp_nodelayack=1 –o tcp_nagle_limit=0
- 10Gbit Ethernet의 경우는 좀 더 큰 값으로 조정함.
# chdev –l en# -a tcp_recvspace=655360 -a tcp_sendspace=262144 –a tcp_nodelay=1 -o rfc1323=1
- 시세 서버와 같이 균일한 브로드캐스팅 성능이 필요한 경우 ethernet 에서 과도한 버퍼링을 하지 않도록 다음과 같이 조정.
버퍼링을 작게 해줌으로써 데이터가 밀려있다가 한번에 내려오는 현상을 방지하는 튜닝.
# chdev -l ent# -a large_send=no -a chksum_offload=no -a tx_que_sz=4096 -a txdesc_que_sz=256 –P
# no –p –o udp_recvspace=42080 –o udp_sendspace=9216 –o tcp_nodelayack=1
4-2. 방화벽/L4 사이의 서버에서 에러가 발생할 경우
- 대부분의 트랜잭션 처리 어플리케이션에서는 connection pool을 이용하여 기존 접속된 connection을 ESTABLISHED 상태에 두고
데이터를 전송함 (TCP OPEN/CLOSE 단계를 거치지 않아도 되므로 유리)
- ESTABLISHED에서 CLOSE 가 될때까지의 시간은 tcp_keepidle, tcp_keepcnt, tcp_keepintvl 파라미터로 조정가능함.
- L4 등의 네트웍스위치 밑에서 두개의 서버가 운영중인 경우 각 서버에서 설정된 tcp_keepidle 보다 L4에서 설정된 tcp_keepidle 값이
더 짧을 경우 서버에서는 ESTABLISHED 되어있는 소켓이 L4에서는 먼저 CLOSE되어 끊어져버리는 경우가 발생할 수 있음.
- 이 경우 서버의 tcp_keepidle 값을 L4 보다 낮게 잡아주어야 함.
# no -p -o tcp_keepidle=1080 -o tcp_keepcnt=4 -o tcp_keepintvl=10
(default)
tcp_keepcnt = 8 probe 발송 회수
tcp_keepidle = 14400 idle 유지 기간 (half second)
tcp_keepintvl = 150 probe 발송 주기 (half second)
5. TimeZone
- AIX 6.1 에서 새로 변경된 Timezone 설정에 버그가 존재.
- 이상이 있을 경우 AIX 5.3 과 동일한 방법으로 설정하면 됨.
# smitty chtz_date
Standard Time ID(only alphabets) --> KORST
Standard Time Offset from CUT([+|-]HH:MM:SS) ---> -9 로 설정. 나머지는 그대로 둠.
[ 재부팅 필요 ]
6. 기타 FAQ
- SMT 기능을 사용하면 성능이 향상?
SMT는 CPU 사용률 (특히 logical CPU 사용률)이 대략 40~50%를 넘어설 때부터 본격적으로 성능 향상 효과를 발휘.
SMT의 성능 향상 효과는 최대 60%까지이지만, 이는 application 특성과 시스템 환경에 따라 변화.
- AIX OS에서만 12GB의 메모리를 잡아먹음?
실제로 kernel heap, other kernel segments 에서 12GB의 메모리를 사용함.
Lab의 설명: 주로 process and thread tables, i/o buffers, pinned code, kernel data structures, filesystem metadata, RAS requirement에서 사용함.
: device가 많거나 I/O가 심하거나, 물리메모리가 많을 경우 kernel 메모리 사용이 증가함.
: 12GB이상의 많은 메모리가 OS가 먹는 것은 설정이 잘못됨이 아니라 정상.
큰 도움이 되는 좋은 정보 감사합니다.