원문 : 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가 먹는 것은 설정이 잘못됨이 아니라 정상.

 

 

 

 

 

 

(*.158.142.101)