본문 바로가기

IBM/AIX

AIX 6.1 최적화와 성능 튜닝 (한글)

방법론 튜닝, 일반적인 개선, 모니터링, 튜닝

Ken Milberg, 대표와 컨설턴트, 기술 편집자, 지역 전문가, techtarget.com

요약: AIX® 버전 5.3에서 성능 튜닝 기법을 이해했다는 생각이 들자마자, AIX 6.1이 커브볼을 던지며 바로 따라붙고 말았습니다. 이 기사에서는 CPU, 가상 메모리, I/O(디스크와 네트워크)를 포함해 AIX 6.1에서 최근에 성능 모니터링과 튜닝에 가해진 따끈따끈한 변경 사항을 짚고 넘어가겠습니다. 이 중 상당수는 실제로 커널 자체 변화라기보다는 실생활에서 자료 처리를 좀더 정교하게 반영하기 위한 기본 매개변수 변경과 같은 부수적인 변화였습니다. 다른 변경 사항은 특정 하위 시스템에 대한 다양한 개선과 제한적인 조율값, 조율값 문서화를 포함합니다. 이 기사를 통해 여러분은 튜닝 전략의 일부로 필요한 성능 튜닝 방법론에 대해 여러 가지를 배울 것입니다.

원문 게재일:  2008 년 4 월 01 일
난이도:  중급 영어로:  보기
페이지뷰: 841 회
의견: 0 (의견 추가)

1 star2 stars3 stars4 stars5 stars 평균 평가 등급 (총 0표)

도입

AIX® 6.1에는 다음과 같은 중요한 새로운 기능과 개선 사항이 포함되었다.

  • 가상화: 작업 부하 파티셔닝과 라이브 애플리케이션 모빌리티와 같은 기능
  • 보안: 암호화된 파일 시스템, 신뢰할 수 있는 AIX, 역할 기반 접근 제어(RBAC, role-based access control) 같은 기능
  • 가용성: AIX 동시 갱신과 동적 추적과 같은 기능
  • 관리성: 신형 시스템 디렉터 콘솔과 작업 부하 파티션 관리자와 같은 기능

또한 SMT(simultaneous multithreading), 공유된 전용 프로세서, 가변 페이지 크기와 같은 POWER6에서 제공하는 성능 확장을 위한 신기능을 지원한다. POWER6나 AIX 6.1이 등장하면서 반영된 새로운 기능과 개선 사항을 완전히 이해하는 과정이 중요하다. 예를 들어, 순수한 운영체제 관점에서 바라보면 AIX는 다음에 요소에 대한 기본 조율값을 강화했다.

  • vmo
  • ioo
  • aio
  • no
  • nfso
  • schedo

I/O 페이싱(pacing)과 AIO 서버 구현 같은 AIX 6.1에서 좋아진 몇 가지 진짜 성능 향상을 제외하고는, 깜짝 놀랄만한 기능 개선은 없다. 사실상 (새로운 감시 도구, VMM(Virtual Memory Manage) 설정 방법, 동시 I/O 개선을 포함한) AIX 5.1에서 AIX 5.2, 5.3으로 옮겨가면서 일어난 성능 변화가 AIX 5.3에서 AIX 6.1로 옮겨가면서 일어난 성능 변화보다 훨씬 더 범위가 넓다. (I.E.와 aioo 같은) 없어진 몇몇 구성요소를 제외하고 AIX 6.1에서 모든 튜닝 명령은 옛날 상태 그대로다. 작업 부하 파티셔닝 기능을 지원하기 위해 변경된 유틸리티는 다음과 같다.

  • curt
  • filemon
  • iostat
  • netpmon
  • pprof
  • procmon
  • proctree
  • svmon
  • topas
  • tprof
  • vmstat

WPAR(Workload partition)을 이용하면 AIX 이미지 하나에 독립적인 가상 파티션을 사용할 수 있다. WPAR은 LPAR(Logical partition)을 대체하기보다는 보완하는 기능이다. 실제로 WPAR은 LPAR 내부에서 동작하며, 솔라리스 컨테이너와 아주 비슷한 개념이다. WPAR 생성에는 15분도 채 안 걸린다. 실제로 WPAR 내부를 분석해 보면 이제 WPAR을 지원하는 개선된 몇몇 도구를 확인할 수 있다. WPAR은 AIX 6.1만 있으면 되며, POWER6는 필요하지 않다. 몇몇 명령어는 WPAR에서 다르게 동작하거나 동작이 불가능한 경우도 있다. 여기서 관련된 명령 몇 가지를 소개하겠다. 다른 AIX 6.1 성능 개선은 조율값 문서화와 제한적인 조율값을 포함한다.

튜닝 방법론

이 절에서는 시스템을 튜닝하기 위해 사용해야 하는 튜닝 기법을 요약한다. 이런 방법론을 사용해야만 하는 강제 조항은 없으며 다른 방법론도 많이 나와있지만, 어떻게 되었거나 튜닝 방법론이나 구조적인 프로그램은 반드시 사용해야 한다.

  1. 비교 기준 확립
  2. 스트레스 테스트와 감시
  3. 병목 확인
  4. 병목 튜닝
  5. 반복(2단계부터 시작)

각 단계를 좀더 깊숙하게 알아보자.

  1. 비교 기준 확립: 튜닝을 수행하고 감시에 앞서, 반드시 기준을 확립해야 한다. 비교 기준은 제대로 동작할 때 시스템이 어떻게 보이는지를 찍어 놓은 스냅 사진이다. 이런 비교 기준은 단순히 성능 관련 유형 통계뿐만 아니라 시스템의 실제 환경(메모리 양, CPU, 디스크)도 문서화해 놓아야 한다. 이렇게 해야 하는 이유는 사용자가 불평할지도 모르는 성능 문제 해결에 앞서 제대로 동작하는 시스템이 무엇인지 알아야 할 필요가 있기 때문이다. 이렇게 하면 수집한 자료를 넘겨 SLA 서비스 계약에 따른 지원을 받는 데 도움을 준다.
  2. 스트레스 테스트와 감시: 이제 최고 작업 부하 상황으로 시스템에 스트레스를 걸어 감시한다. 여러 감시 도구를 사용해 발견한 내용을 검증해야 한다. 감시 작업이 중요한 이유는 특히 스트레스가 주어진 상황에서 시스템에서 어떤 일이 일어나고 있는지 정확한 역사적인 기록이 없으면 효과적인 튜닝이 불가능하기 때문이다.
  3. 병목 확인: 시스템에 스트레스를 주고 감시하는 이유는 병목 지점을 찾기 위해서다. 적절한 진찰 없이는 올바른 약을 처방하지 못한다. 시스템이 실제로 CPU에 묶여 있다면 trace, curt, splat, tprof, ps와 같은 추가 도구를 돌려서 병목을 초래하는 진짜 프로세스가 무엇인지 확인해야 한다.
  4. 병목 튜닝: 병목을 찾은 다음에는 튜닝할 시점이 온다. 튜닝은 CPU, 가상 메모리, I/O와 같은 병목 지점에 따라 달라진다. 가상 메모리와 같은 몇몇 하위 시스템은 vmo 같은 도구로 좀더 활동적인 튜닝을 요구하는 반면에 CPU 관련 병목을 치료하려면 작업 부하를 좀더 효율적으로 관리하거나 (DLPAR(dynamic LPAR), 파티션 부하 관리자를 활용해) 더 많은 자원을 시스템에 할당해야 한다.
  5. 반복: 두 번째 과정부터 전체 과정을 다시 한번 반복할 시기다. 튜닝이 정말로 영향을 주는지 확인하려면 테스트를 반복해 일관성있게 감시해야 한다.

AIX 6.1: 메모리

이 절은 가상 메모리 하위 시스템에 일어난 변화를 설명한다.

여러 해 동안, AIX의 기본 매개변수에 대한 불평이 끊이지 않았다. 예를 들어 오라클과 같은 업무 수행에 중요한 데이터베이스 응용 프로그램과 같이 AIX 상위에서 사용자가 가장 많이 돌리는 프로그램을 현실적으로 반영하지 못했기 때문에 이런 불평이 터져나왔다. 이런 이유 때문에 시스템 관리자는 대다수 하위 시스템 설정 값을 변경해야 했었다. 대부분 가상 메모리와 관련한 설정이다(쉽게 말해 minpermmaxperm이 주범이다). IBM®은 고객 목소리에 귀를 기울여 이런 매개변수를 현실에 맞게 조정했다. 하지만 이런 설정값을 곧이곧대로 받아들이면 곤란하며, 항상 ISV와 함께 AIX 6.1이 제안하는 권장 설정값과 변경 사항에 대해 점검해야 한다.

AIX 5.3과 AIX 6.1을 위한 vmo 매개변수를 표 1에 서 나란히 비교해 보았다. 몇몇 매개변수는 이제 제약이 가해진 모드라는 사실이 눈에 들어온다. 가장 중요한 변화는 주소 페이징 관련 내용이며, 시스템에 충분한 메모리가 여분으로 남아있음에도 불구하고 데이터베이스 서버가 끊임없이 계산된 페이지를 스왑 아웃하던 주범이었다. 튜닝과 관련한 직전 기사(참고자료 참조)에서, 이 매개변수를 표에서 지시한 값에 아주 근사하게 변경하도록 권장되었다. 이런 변화는 AIX 5.3 튜닝 권장 열에서 확인하자. 많은 조율값은 이제 특별 매개변수로 바꾸지 못하게 만드려는 시도로 제약을 가해 별도로 구분하고 있다. 전반적으로 vmo 조율값 29개만 경고 없이 바꿀 수 있으며, 30개는 이제 제약이 가해진 조율값으로 변했는데, IBM에서 공식적으로 발표한 내용에 따르면 "IBM 지원 전문가"가 지도하지 않은 상황에서 이런 조율값을 변경해서는 안 된다고 한다. IBM은 초급 관리자가 제약을 가하도록 분류할만큼 충분히 위험한 특정 매개변수를 바꾸지 못하도록 하기 위해 이런 변경을 가했다.


표 1. vmo 매개변수와 튜닝 권장 목록
TypeAIX 5.3AIX 5.3 튜닝
변경 권장사항
AIX 6.1제약이 가해진
cpu_scale_memp = 8 8
8 Yes
data_stagger_interval = 161 161
161 Yes
defps = 1 1


force_relalias_lite = 0 0
0
framesets = 2 2 2 더 이상 유효하지 않음 Yes
htabscale = n/a n/a
n/a Yes
kernel_heap_psize = 4096 4096
4096
kernel_psize = 4096 4096
65536 Yes
large_page_heap_size = 0 0
0 Yes
lgpg_regions = 0 0
0
lgpg_size = 0 0
0
low_ps_handling = 1 1
0
lru_file_repage = 1 1 0 0 Yes
lru_poll_interval = 10 10
10 Yes
lrubucket = 131072 131072
131072 Yes
maxclient% = 80 80 90 90 Yes
maxfree = 1088 1088
1088
maxperm = 598781 598781
442683
maxperm% = 80 80 90 90 Yes
maxpin = 635249 635249
423471
maxpin% = 80 80
80
mbuf_heap_psize = 65536 65536
64436 Yes
memory_affinity = 1 1
1 Yes
memory_frames = 786432 786432
524288
memplace_data = 2 2
2
memplace_mapped_file = 2 2
2
memplace_shm_anonymous = 2 2
2
memplace_shm_named = 2 2
2
memplace_stack = 2
2
2
memplace_text = 2 2
2
memplace_unmapped_file = 2 2
2
mempools = 5 5


minfree = 960 960
960
minperm = 149694 149694
14756
minperm% = 20 20 5 3
nokilluid = 0 0
0
npskill = 3072 3072
3072
npsrpgmax = 24576 24576
8192 Yes
npsrpgmin = 18432 18432
6144 Yes
npsscrubmax = 24576 24576
8192 Yes
npsscrubmin = 18432 18432
6144 Yes
npswarn = 12288 12288
12288
num_spec_dataseg = 0 0
0 Yes
numpsblks = 393216 393216
393216
page_steal_method = 0 0
1 Yes
pagecoloring = n/a n/a


pinnable_frames = 675516 675516
349814
pta_balance_threshold = n/a n/a


relalias_percentage = 0 0
0
rpgclean = 0 0
0 Yes
rpgcontrol = 2 2
2 Yes
scrub = 0 0
0
scrubclean = 0 0
0 Yes
soft_min_lgpgs_vmpool = 0 0


spec_dataseg_int = 512 512
512 Yes
strict_maxclient = 1 1
1 Yes
strict_maxperm = 0 0
0 Yes
v_pinshm = 0 0
0
vm_modlist_threshold = -1 -1
-1 Yes
vmm_fork_policy = 1 1
1 Yes
vmm_mpsize_support = 1 1
2 Yes
vmm_default_pspa

-1

새로운 vmo 플래그인 -F는 제약이 가해진 매개변수는 물론이고 모든 매개변수를 제공한다. 여기 소개하는 내용 대다수는 불필요한 부분을 쳐내고 제약이 가해진 부문을 포함하는 샘플만 정리해놓았다(Listing 1 참조).


Listing 1. vmo-F 플래그를 붙여서 모든 조율값을 살펴본다
                
lpar9ml162f_pub[/] > vmo -F -a
force_relalias_lite = 0
vmm_default_pspa = -1
##Restricted tunables
maxperm% = 90

심지어 제약이 가해진 조율값도 변경이 가능하다. 변경을 할 때 강력한 경고 메시지를 받게 된다(Listing 2 참조).


Listing 2. 변경 과정에서 등장하는 조율값 경고
                
lpar9ml162f_pub[/] > vmo -o maxperm%=99
Setting maxperm% to 99
Warning: a restricted tunable has been modified

다시 부팅한 다음에 매개변수를 바꿀 때, 한 번 더 경고가 나오면서 정말로 이런 변경을 가해도 될지를 확실하게 확인해달라는 요청이 들어온다. 물리적으로 "yes"라고 입력해야만 변경이 반영된다(Listing 3 참조).


Listing 3. 제약이 가해진 조율값: yes라고 답해야 변경이 가능하다.
                
lpar9ml162f_pub[/] > vmo -p -o maxperm%=99
Modification to restricted tunable maxperm%, confirmation required yes/no yes
Setting maxperm% to 99 in nextboot file
Setting maxperm% to 99
Warning: a restricted tunable has been modified
lpar9ml162f_pub[/] >

두드러지게 가장 중요한 변화는 다음과 같은 새로운 성능 값을 조정하는 항목이다.

  • minperm
  • maxperm
  • maxclient
  • strict_maxclient

더 이상 strict_maxclient를 끄고, minfrreemaxfree를 증가시키고 minperm, maxperm, maxclient를 줄일 필요가 없어진 AIX 5.3에서 처음으로 등장한 변화에 기초를 두고 있다. (이제 AIX 6.1에 기본 값으로 통합된) 새로운 권장 값은 작업 저장소를 페이지로 관리하지 않고 단순히 파일 페이징으로 고려하도록 만들기 위해 페이지 변경 비율 검사 항목인 lru_file_repage를 꺼버린다. AIX 6.1에서 VMM 대체 기본값은 계산된 페이지를 파일 페이지보다 선호하도록 파일 캐싱을 위한 실제 메모리를 90%까지 활용하도록 바뀌었다. 활성 가상 메모리가 실제 메모리 크기의 97%가 되지 않은 이상 minperm은 3%로 줄어들어(Listing 4 참조) 계산된 페이지를 더 이상 훔치지 않도록 만들어준다.


Listing 4. minperm이 3%까지 줄어든 모습
                
# vmo -o minperm%=97
Value of the tunable minperm% cannot be changed in a WPAR

몇몇 변경 내역은 WPAR에서 동작하지 않을 것이다. WPAR은 LPAR의 부분집합이며, 여전히 단일 운영체제 이미지의 일부다.

또 다른 중요한 변화는 VMM 동적 페이지 크기 지원(VPSS)이다. 페이지는 길이가 고정된 자료 블록이며 가상 메모리에 위치한다. AIX 6.1(POWER6 프로세서에만 해당한다)에서, VMM은 이제 동적으로 응용 프로그램 메모리 사용에 기반을 두고 더 큰 페이지 크기를 활용할 수 있는데, 미묘하지만 성능 개선에 도움을 준다. 이런 기능은 응용 프로그램에 완벽하게 투명하다. AIX는 프로세스 메모리 사용을 늘이는 결과를 가져오지 않을 때만 더 큰 페이지를 활용한다. 더 큰 페이지를 사용하면 성능이 개선되는 이유는 하드웨어 변환 과정이 줄어들기 때문이다. 작업 저장소 메모리에서만 이런 기능을 지원하며 영구 저장소 메모리에는 해당하지 않는다. 새로운 매개변수는 vmm_default_pspa다(vmm_mpsize_support 조율값과 함께 동작한다).


Listing 5. lsattr 결과는 프로세서 아키텍처를 보여준다.
                
lpar9ml162f_pub[/usr/samples/tcpip] > lsattr -El proc0
Frequency 1654344000 Processor Speed False
smt_enabled true Processor SMT enabled False
smt_threads 2 Processor SMT threads False
state enable Processor state False
type PowerPC_POWER5 Processor type False
lpar9ml162f_pub[/usr/samples/tcpip] >

VPSS를 위한 조율 설정 값을 살펴보자.


Listing 6. POWER5 시스템에서 VPSS는 자동으로 비활성화된다.
                
lpar9ml162f_pub[/usr/samples/tcpip] > vmo -a | grep pspa
vmm_default_pspa = -1

AIX 6.1: CPU

이 절은 CPU 하위 시스템에 가해진 변경 사항을 살펴본다.

schedo 역시 페이지 부하 조절과 같은 특정 메모리 기능을 튜닝하기 위해 사용하지만, 대부분 CPU 스케줄러 튜닝이 더 중요하다. AIX 6.1에서 조율값 42개 중 27개만 제약이 가해져 있으며, 조율값 15개는 명시적인 경고 없이 변경이 가능하다. 비록 몇몇 기본값은 변경되었지만, AIX 6.1에서 CPU를 감시하고 튜닝하기 위해 일어난 변화는 많지 않다(Listing 7 참조).


Listing 7. 제약이 가해진 조율값
                
lpar9ml162f_pub[/] > schedo -F -a
##Restricted tunables
%usDelta = 100
allowMCMmigrate = 0
fast_locks = n/a
hotlocks_enable = 0
idle_migration_barrier = 4
krlock_confer2self = 1
krlock_conferb4alloc = 1
krlock_enable = 1
krlock_spinb4alloc = 1
krlock_spinb4confer = 1024
n_idle_loop_vlopri = 100
search_globalrq_mload = 256
search_smtrunq_mload = 256
setnewrq_sidle_mload = 384
shed_primrunq_mload = 64
sidle_S1runq_mload = 64
sidle_S2runq_mload = 134
sidle_S3runq_mload = 134
sidle_S4runq_mload = 4294967040
slock_spinb4confer = 1024
smt_snooze_delay = 0
smtrunq_load_diff = 2
v_exempt_secs = 2
v_min_process = 2
v_repage_hi = 0
v_repage_proc = 4
v_sec_wait = 1
lpar9ml162f_pub[/] >

AIX 6.1: 디스크 I/O

이 절은 디스크 I/O 하위 시스템에 가해진 변경 사항을 살펴본다.

AIX 6.1에서 ioo로 조절할 수 있는 조율값 48개에는 이제 제약이 가해졌고, 조율값 21개는 명시적인 경고 없이 변경할 수 있다. 가장 중요한 변경 내역은 I/O 페이싱과 AIO 동적 조율값이다(Listing 8 참조).


Listing 8. 제약이 가해진 ioo 조율값
                 
# ioo -F -a
##Restricted tunables
aio_fastpath = 1
aio_fsfastpath = 1
aio_kprocprio = 39
aio_multitidsusp = 1
aio_sample_rate = 5
aio_samples_per_cycle = 6
j2_maxUsableMaxTransfer = 512
j2_nBufferPerPagerDevice = 512
j2_nonFatalCrashesSystem= 0
j2_syncModifiedMapped = 1
j2_syncdLogSyncInterval = 1
jfs_clread_enabled = 0
jfs_use_read_lock = 1
maxpgahead = 8
maxrandwrt = 0
memory_frames = 524288
minpgahead = 2
numclust = 1
numfsbufs = 196
pgahd_scale_thresh = 0
posix_aio_fastpath = 1
posix_aio_fsfastpath = 1
posix_aio_kprocprio = 39
posix_aio_sample_rate = 5
posix_aio_samples_per_cycle = 6
pv_min_pbuf = 512
sync_release_ilock = 0

JFS2

JFS2(Enhanced Journaling File Syste)를 변경한 결과, 이제 JFS2 파일 시스템을 로깅 없이 마운트하도록 허용한다. 이렇게 하면 성능을 약간 개선할 수 있지만 권장하지는 않는다. 자료를 복구할 필요가 있을 때 무시무시한 fsck를 돌려야 한다. fsck는 저널링 파일 시스템이 등장한 이후로 기억 속에서 사라져 버렸다. 하지만 백업에서 자료를 복구하거나 아주 짧은 기간 동안 활동 과정에서 시간을 절약해야 하는 몇몇 유용한 상황에서 fsck는 문제가 되지 않는다.

iSCSI

대상 소프트웨어 드라이버는 기가바이트 이더넷 어댑터 위에서 동작하므로 이런 환경에서 동작할 경우 확실한 성능 개선이 이뤄졌다. 대상 드라이버는 지역 디스크나 논리 볼륨을 iSCSI 요청자에게 공개해 iSCSI 프로토콜을 사용해서 AIX에 연결하도록 만든다. iSCSI가 확산됨에 따라 광 기반 저장장치를 넘어서 확실한 대체품으로 자리잡았으며 중요한 발전을 가져왔다.

I/O 페이싱

디스크 I/O 페이싱은 파일에 대한 I/O 요청 개수를 제약하는 메커니즘이다. 이렇게 하면 (일반적으로 대규모 연속 쓰기 형태를 보여주는) 디스크 I/O에 밀접한 프로세스가 CPU를 다 차지하는 현상을 막아준다. AIX 6.1은 기본값으로 I/O 페이싱 기능을 활성화해 놓았다. AIX 5.3에서 이 기능을 명시적으로 켤 필요가 있었다. 이렇게 하기 위해 sys0 관련 설정에서 minpoutmaxput 매개변수를 각각 4096과 8193으로 설정하면 된다.

lpar9ml162f_pub[/] > lpar9ml162f_pub[/] > lsattr -El sys0


그림 1. lsattr 출력은 새로운 I/O 설정을 보여준다.
lsattr 출력

비동기 I/O(AIO)

AIO는 AIX 소프트웨어 하위 시스템으로 프로세스가 I/O가 종료되기를 기다리지 않고 I/O 연산을 수행하도록 만든다. I/O 연산과 응용 프로그램 처리가 동시에 진행되므로 두 프로세스는 실제로 배경 작업으로 동작하며 성능 개선을 가져온다. AIO는 특히 데이터베이스 환경에서 중요하다. AIX 하위 시스템에는 두 가지 종류가 있는데, 전용 AIO와 POSIX AIO가 있다. 양쪽 차이점은 응용 프로그램 층에 전달하는 매개변수다. 바꿔 말하면 응용 프로그램이 사용하는 인터페이스에 맞춰 두 가지 구현 중 하나를 선택하면 된다. 어떤 하위 시스템을 선택하거나 상관없이 AIX에서 병렬로 동작한다. AIX 5L에서 응용 프로그램이 AIO를 사용할 경우 하위 시스템은 명시적으로 autoconfig 항목을 활성화해야 한다. 또한 시스템을 재시동해야 하는 이유는 커널 확장을 메모리에 올릴 필요가 있기 때문이다. 실제로 AIX 5.3 TL5 전에 나온 운영체제는 다음에 소개하는 조율값 중 하나라도 바꾸면 재시동이 필요했다.

  • maxreqs
  • maxservers
  • minservers

AIX 5.3에서는 또한 aioo 명령을 사용해 재시동 없이 동적으로 변경이 가능하다. 이 명령은 ODM(Object Data Manager) 속성을 변경하지 않으므로 재시동을 하더라도 영속적으로 옵션을 설정하지 않음에 유의해야 한다.

AIX 6.1에서는 조율값 fastpathfsfastpath가 이제 제약이 가해진 조율값으로 바뀌었으며 기본값이 1로 설정되어 있다. 속성값에 대한 효과는 다음과 같다(Listing 9 참조).

  • fastpath: 가공되지 않은 논리 볼륨이 직접 디스크 층으로 전파되록 만드는 AIO 요청
  • fsfastpath: JFS2에서 병렬 I/O로 열린 파일을 LVM이나 디스크로 전파되도록 AIO 요청

Listing 9. JFS2에서 병렬 I/O로 열린 파일을 LVM이나 디스크로 전파되도록 AIO 요청
                
##Restricted tunables
aio_fastpath = 1
aio_fsfastpath = 1

한걸음 더 나가, AIO 하위 시스템은 이제 기본으로 메모리에 올라오며 활성화되지는 않는다. AIO 하위 시스템은 응용 프로그램이 AIO I/O 요청을 시작할 때 자동으로 활성화된다. 더 이상 aioo 명령이 필요없으며(인생은 짧다), 이제 설정값만 ioo 명령으로 변경할 뿐이다(Listing 10 참조).


Listing 10. 예전 AIX 방법(AIX 5.3)
                
lpar9ml24f_pub[/] > # aioo -a

minservers = 1
maxservers = 1
maxreqs= 4096
fsfastpath = 0

Listing 11은 AIX 6.1에서 제공하는 새로운 방법을 보여준다.


Listing 11. 새로운 AIX 방법(AIX 6.1)
                
lpar9ml162f_pub[/] > ioo -a | grep active
aio_active = 0
posix_aio_active =

또한 더 이상 ODM에 AIO 디바이스가 존재하지 않음에 주의하기 바란다.

살펴보면 알겠지만, aio_activeposix_aix_active라는 새로운 매개변수 두 개가 ioo에 추가되었다. 이 매개변수는 AIX가 변경하며 AIO 커널 확장을 사용하도록 고정된 상황에서만 1로 설정된다. grep을 좋아한다면 더 이상 AIO 서버를 찾아 해맬 필요가 없다. 이제 aioLpoolsaioPpools를 찾을 수 있는데, 이 둘은 전용 AIO 하위 시스템과 POSIX AIO 하위 시스템을 관리하는 커널 프로세스다. 이렇게 변경된 결과로 인해 고정된 메모리 사용이 줄어들고 시스템에서 돌아가는 프로세스도 줄어들었다. 둘 다 전반적인 시스템 성능에 긍정적인 효과를 가져온다(Listing 12 참조).


Listing 12. 새로운 AIO 커널 프로세스
                
lpar9ml162f_pub[/] > pstat -a | grep aio
39 a 2704e 1 2704e 0 0 1 aioLpool
40 a 28050 1 28050 0 0 1 aioPpool
lpar9ml162f_pub[/] >

AIO 서버와 밀접한 관련이 있는 minservermaxserver 매개변수는 이제 각 CPU 조율값으로 조율이 가능해졌다. 이런 조율값 변경은 시스템에 있는 가용 서버 숫자를 변경하지 않는다. 전체 변화량은 동시에 수행하는 I/O 요청 숫자와 관련이 있다(Listing 13 참조).


Listing 13. minserversmaxservers를 위한 기본 매개변수 변화
                
lpar9ml162f_pub[/] > ioo -a | grep minservers
aio_minservers = 3
posix_aio_minservers = 3
lpar9ml162f_pub[/] > ioo -a | grep maxservers
aio_maxservers = 30
posix_aio_maxservers = 30
lpar9ml162f_pub[/] >

AIX 6.1: 네트워크와 네트워크 파일 시스템(NFS, Network File System) I/O

이 절에서는 NFS를 포함한 네트워크 I/O에 가해진 변경 내역을 정리한다.

133개에 걸친 no 조율값 중 단지 다섯 개만 제약이 가해진 조율값으로 분류되었다(Listing 14 참조).


Listing 14. 제약이 가해진 조율값
                 
#no -F -a
##Restricted tunables
extendednetstats = 0
inet_stack_size = 16
net_malloc_police = 16384
pseintrstack = 24576
use_isno = 1
lpar9ml162f_pub[/] >

DNS를 사용해 이름을 풀어낼 때 성능을 높이기 위해 새로운 네트워크 캐시 데몬이 또한 도입되었다.

이 데몬은 SRC(System Resource Controller)에서 시작될 수 있다.

주요 환경 설정 파일은 /etc/netcd.conf이며, /usr/samples/tcpip에서 /etc로 하나를 복사한 다음에 견본으로 사용하자. 데몬을 관리하기 위한 명령은 netcdctrl이다. 이 명령을 사용해 캐시 내용을 파일로 덤프하거나, 캐시 사용 통계를 출력하거나, 캐시 테이블을 비우거나, 데몬 로깅 단계를 변경한다. Listing 15에 통계 출력 예를 보여준다.


Listing 15. 캐싱 통계를 netcdctrl로 출력하기
                
lpar9ml162f_pub[/usr/samples/tcpip] > netcdctrl -t dns -e hosts -s /tmp/netcd.stats
lpar9ml162f_pub[/usr/samples/tcpip] > more /tmp/netcd.stats
CACHE dns, hosts, name
Hash index : 0, Max number of entries : 0, Current number of entries : 0
Hash index : 1, Max number of entries : 0, Current number of entries : 0
Hash index : 2, Max number of entries : 0, Current number of entries : 0
Hash index : 3, Max number of entries : 0, Current number of entries : 0

R/etc/netsvc.conf 파일에 대한 변경 사항은 없다. 이 파일은 여전히 DNS 이름을 풀어내기 위해 필요하다.

NFS

O24개 NFS 조율값 중에 21개가 제약이 가해진 조율값으로 분류된다(Listing 16 참조).


Listing 16. 제약이 가해진 조율값
                
#nfso -a

##Restricted tunables
lockd_debug_level = 0
nfs_allow_all_signals = 0
nfs_auto_rbr_trigger = 0
nfs_dynamic_retrans = 1
nfs_gather_threshold = 4096
nfs_iopace_pages = 0
nfs_max_threads = 3891
nfs_repeat_messages = 0
nfs_socketsize = 600000
nfs_tcp_duplicate_cache_size = 5000
nfs_tcp_socketsize = 600000
nfs_udp_duplicate_cache_size = 5000
nfs_v2_pdts = 1
nfs_v3_pdts = 1
nfs_v4_pdts = 1
nfs_v2_vm_bufs = 10000
nfs_v3_vm_bufs = 10000
nfs_v4_vm_bufs = 10000
statd_debug_level = 0
statd_max_threads = 50
udpchecksum = 1
lpar9ml162f_pub[/] >

주목할 만한 유일한 변경으로 RFC1323(TCP/IP 스택)이 이제 기본값으로 활성화되었다. 이렇게 되면 NFS 연결을 위해 TCP 접속을 진행할 때 TCP 스케일링 윈도우를 사용한다. 또한 biod 데몬에 대한 기본 숫자가 각 NFS V3 마운트 지점을 위해 32로 늘어났다.

요약

AIX 6.1은 WPAR 활용과 라이브 애플리케이션 모빌리티 같은 많은 신기능을 제공한다. AIX 6.1은 또한 성능 튜닝과 관련해 많은 변화가 있었다. 아주 중요한 몇몇 변화는 실제 자료 처리를 반영한 더 정교한 기본 매개변수 향상, 조율값 문서화, 제약이 가해진 조율값, I/O 페이싱과 AIO 서버 등을 포함한다. AIX 6.1은 정말 환상적이지만 IBM 세상에서 바라보면 AIX 6.1은 새롭게 나온 6.0이다. 기억하겠지만 AIX 5.2는 AIX 5.1보다 훨씬 뛰어나며 더 안정적이었다. 운영체제 판올림에 앞서 모든 사항을 고려해야 하지만 응용 프로그램이 운영체제를 완벽하게 지원할지 새로운 기능이 이주를 할만큼 환경에 기여하는 바가 클지 노심초사하는 바람에 이주를 겁내지는 말자.


참고자료

교육

제품 및 기술 얻기

토론

필자소개

Ken Milberg, PMP는 IBM Systems Magazine, Power Systems을 위한 기술 편집자이자 작가다. Milberg는 Unix-Linux Solutions 대표이자 컨설턴트를 관리하고 있다. Milberg는 매릴랜드 대학교 컴퓨터와 정보 과학 학사 과정에 이어 정보 관리 석사 과정을 마쳤다. Milberg는 뉴욕 시 파워-AIX/리눅스 사용자 그룹 발기인이자 그룹 리더다. 여러 해 동안 Milberg는 다양한 규모의 조직에서 일했고, CIO부터 선임 AIX 엔지니어에 이르기까지 다양한 직책을 맡았다. Milberg는 PMI 인증 프로젝트 관리 전문가이며, IBM 인증 첨단 기술 전문가(IBM System p5 2006년)이며, IBM Scon 인증을 획득했다. 연락이 가능한 전자편지 주소는 ken@unix-linux.org다.

'IBM > AIX' 카테고리의 다른 글

AIX IPL progress codes  (0) 2011.03.28
Programming Language Products for AIX: C and C++ Compilers  (0) 2011.03.28
NFS DIO and CIO support  (0) 2010.12.29
I/O completion ports error when attempting to set up Domino 6.x on AIX  (0) 2010.12.29
Upgrade to IPv6 with IPv4 configured  (0) 2010.11.03
GPFS  (0) 2010.10.14
FTP  (0) 2010.08.22
chmod  (0) 2010.08.21
etherchannel  (0) 2010.08.12
Storage Management in AIX 5L Version 5.3  (0) 2010.08.10