13
시스템 성능 튜닝 와 메모리 한국 시스템 성능 튜닝 와 메모리 전 성주

AIX DIY(3rd Edit) -성능 튜닝(CPU과 메모리)

  • Upload
    smallake

  • View
    1.209

  • Download
    10

Embed Size (px)

DESCRIPTION

Copyright By 전 성주 [email protected].

Citation preview

Page 1: AIX DIY(3rd Edit) -성능 튜닝(CPU과 메모리)

AIX 시스템 성능 튜닝 (CPU와 메모리)

한국 IBM RS/6000 TSC

AIX 시스템 성능 튜닝 (CPU와 메모리)

전 성주 [email protected]

시스템 Performance Tuning 요소는 CPU, Memory, I/O, Network등으로 구분할 수 있다. 물론 시스

템에 구현된 업무의 성격, Application의 구조, DBMS 및 Middleware등의 Tuning이 시스템

Performance 향상에 더 큰 영향을 미치며, 실제로 시스템의 Tuning 보다 DBMS 및 Application 구성

의 변경 및 Tuning에 의해 전체적인 Performance가 향상 된 경우를 종종 경험하였을 것이다.

AIX가 제공하는 Performance 분석 Tool과 Tuning Tool을 표로 정리하면 다음과 같다.

Performance Analysis Tools

CPUMemory

SubsystemI/O Subsystem

Network

Subsystem

vmstat, iostat vmstat iostat lsattr

ps lsps vmstat netstat

sar svmon lsps nfsstat

gprof/prof/tprof filemon lsattr netpmon

timex/time bf,bfrpt lsdev ifconfig

netpmon lspv/lslv/lsvg iptrace/ipreport

stem fileplace tcpdump

syscalls filemon

lockstat

emstat

performance tool-

box

performance tool-

box

performance tool-

box

performance tool-

box

trace,trcrpt,utld trace,trcrpt trace,trcrpt trace,trcrpt

Page 2: AIX DIY(3rd Edit) -성능 튜닝(CPU과 메모리)

AIX 시스템 성능 튜닝 (CPU와 메모리)

한국 IBM RS/6000 TSC

Performance Tuning Tools

CPUMemory

SubsystemI/O Subsystem

Network

Subsystem

nice/renice vmtune vmtune no

schedtune chps/mkps chdev nfso

bindprocessor fdpr migratepv chdev

chdev chdev chlv ifconfig

setpri rmss reorgvg

앞의 표에서 보여주듯이 AIX는 다양한 종류의 Tool을 각 시스템 요소 별로 제공하고 있다.

이제부터 Tool중 CPU, Memory, I/O Subsystem의 Tuning에 많이 사용 되는 vmtune 및 schedtune

를 중심으로 Tuning Tool의 사용법을 살펴보도록 하겠다.

1. CPU Tuning

1-1. Nice/Renice and priority

각 Process는 MAX 120까지의 Priority 할당을 받는데, 최초 생성 시 다음 연산 방법에

의해 Initial Priority를 지정 받는다.

Priority Value = Base Priority + NICE Value

․Base Priority : 40

․NICE Value : nice command에 의해 0부터 40까지의 값을 지정 할 수 있으며 지정하지 않을

경우 default value 20이 지정 된다(Background 작업인 경우 Default 24) 이 값은 Process 수

행 중에 renice command에 의해 변경 할 수 있다

Priority 는 CPU clock interrupt가 발생(10ms 단위로 발생) 할 때마다 다시 계산이 되는데

AIX Version 별로 계산 방식은 다음과 같다.

AIX Version Recalculated Priority

3.2.5 이전 p_nice + (C * 1/2)

3.2.5 ~ 4.3.1 p_nice + (C * r/32)

4.3.2 x_nice + (C * r/32 * X)

․p_nice = 40 + NICE

․C = 최근의 CPU 사용율 (ps command 출력중 C field 값)

․r = schedtune command에 의해 지정 할 수 있는 SCHED_R(-r)의 값으로 Recalculated

Page 3: AIX DIY(3rd Edit) -성능 튜닝(CPU과 메모리)

AIX 시스템 성능 튜닝 (CPU와 메모리)

한국 IBM RS/6000 TSC

Priority의 등락 폭을 조정 할 수 있다. r 값은 0부터 32 까지 지정 할 수 있다.

0 일 경우 Priority조정이 되지 않으며, 32일 경우 등락 폭이 가장 크게 된다.

(Default 16)

․x_nice : if NICE <= 20 then x_nice = p_nice

if NICE > 20 then x_nice = (p_nice * 2) - 60

즉 NICE Value가 클수록 Recalculated Priority의 변동폭이 커진다.

․X : (x_nice + 4) / 64

Priority의 값이 낮을수록 CPU를 할당받는 우선 순위가 높다.

Command Usage : nice [-n increment] command

nice [-increment] command

renice [-increment] [-g| -p| -u] ID ....

※ r 값이 작을수록 NICE Value가 Process Priority에 영향을 크게 미친다.

1-2 Aging CPU Usage

1-1절에서 보았듯이 Process는 시간이 지날수록 CPU 사용율을 나타내는 C 값이 증가 하기 때

문에 Priority가 떨어지게 된다. 즉 일정시간이 지나면 Process의 Priority가 가장 낮은 값인 126

으로 떨어져, CPU Scheduling을 받지 못할 수도 있다. 이를 방지 하기 위하여 kproc중 하나인

swapper process가 매1초 단위로 기동하여 각 Process의 CPU 사용율인 C 값을 조정한다. 이

값은 다음 계산 방식에 의해 재 지정된다.

Recalculated C Value = C * d / 32.

․d = schedtune command에 의해 지정 할 수 있는 SCHED_D(-d)의 값으로 Recalculated

CPU 사용율의 등락 폭을 조정 할 수 있다. d 값은 0부터 32 까지 지정 할 수

있다.

※ d 값이 작을수록 CPU intensive한 작업이 scheduling을 자주 받는다.

즉 CPU Power를 주로 사용하는 Process일 경우 d 값이 작을수록 유리하다.

Page 4: AIX DIY(3rd Edit) -성능 튜닝(CPU과 메모리)

AIX 시스템 성능 튜닝 (CPU와 메모리)

한국 IBM RS/6000 TSC

예제)

current_effective_priority

| base process priority

| | NICE value

| | | count (time slice consumed)

| | | | (schedtune -r)

| | | | |

time 0 p = 40 + 20 + (0 * 4 / 32 ) = 60

time 10 p = 40 + 20 + (1 * 4 / 32 ) = 60

time 20 p = 40 + 20 + (2 * 4 / 32 ) = 60

time 30 p = 40 + 20 + (3 * 4 / 32 ) = 60

time 40 p = 40 + 20 + (4 * 4 / 32 ) = 60

time 50 p = 40 + 20 + (5 * 4 / 32 ) = 60

time 60 p = 40 + 20 + (6 * 4 / 32 ) = 60

time 70 p = 40 + 20 + (7 * 4 / 32 ) = 60

time 80 p = 40 + 20 + (8 * 4 / 32 ) = 61

time 90 p = 40 + 20 + (9 * 4 / 32 ) = 61

time 100 p = 40 + 20 + (10 * 4 / 32 ) = 61

(skipping forward to 100msec or 1 second)

time 1000 p = 40 + 20 + (100* 4 / 32 ) = 73

swapper가 매초 CPU 사용율 count를 모든 Process에 대해서 다시

계산하여 적용한다. 위의 Process 의 경우

new_CPU_usage_count = 100 * 31/32 = 96 (if d = 31)

따라서 Priority를 다시 계산하면

p = 40 + 20 + (96 * 4 / 32) = 72 가 되며

d = 16일 경우

p = 40 +20 + (100 * (16 / 32) * 4 / 32) = 66이 된다.

1-3 CPU Timeslice

AIX의 CPU Scheduling 정책은 FIFO, RR, Other등 3가지 방법을 사용한다.

- SCHED_FIFO : Non-preemptive scheduling 정책으로 한번 실행 된 작업은 종료 되거나 자

발적으로 CPU를 Release하기 전까지 계속 CPU를 점유하게 하는 정책으로 root user에 의해

서만 생성 될 수 있다.

- SCHED_RR : Fixed priority process에 적용되는 Schedule 정책으로 할당받은 time slice를

다 사용 하면 그 작업은 자신의 priority에 할당된 queue의 제일 뒤에 들어가 다음 time slice

Page 5: AIX DIY(3rd Edit) -성능 튜닝(CPU과 메모리)

AIX 시스템 성능 튜닝 (CPU와 메모리)

한국 IBM RS/6000 TSC

가 할당되기를 기다린다.

- SCHED_OTHER : AIX의 기본적인 정책으로 Non fixed priority process에 적용되는 정책이

다. 1-2절에서 설명한 대로 priority가 일정 한 time slice(default 10ms)마다 새로 정해지며,

time slice를 다 사용시 새로 지정된 priority queue의 뒤에 들어가 다음 time slice가 할당되기

를 기다린다.

때로는 잦은 process switching은 많은 context switching을 발생시키며 (vmstat 출력중 cs

field) 이것이 CPU의 효율을 떨어뜨릴 수 있다. 이 경우 time slice를 늘려 줌으로서 context

switching을 줄일 수 있는데 schedtune parameter중 TIMESLICE(-t) 값을 변경 하면 된다.

예를 들어 # schedtund -t 2는 2 * 10ms = 20ms를 1 timeslice로 사용토록 지정하는 것이다.

1-4 Instruction Emulation

PowerPC Architecture는 그이전의 Processor Architecture인 POWER/POWER2/POWERPC604

processor에서 사용하던 35개의 POWER Instruction set을 지원하지 않게 되었다. 따라서 이

Processor들에서 Compile되고 수행되던 binary code는 PowerPC process에서 사용할 수가 없게

되었다. 이를 해결하기 위해서 PowerPC Archtecture process를 지원하는 AIX 4.2.1 부터는 없

어진 35개의 Instruction set를 emulation 해주는 기능이 추가 되었다. 따라서 과거의 Processor

및 AIX 3.2.5에서 compile된 2진 code도 AIX 4.2.1이상에서 수행 할 수 있게 된 것이다. 그러나

emulation은 AIX S/W에 의해 수행 되는 것이기에 emulation 횟수가 많으면, 그만큼 CPU의 손

실이 크다고 할 수 있다. Emulation의 횟수는 /usr/samples/kernel/emstat 명령으로 확인 할 수

있는데, 그 값이 클 경우 사용할 장비에서 다시 compile하여 사용 하는 것이 좋다.

Usage : /usr/samples/kernel/emstat [interval] [count]

※ C, C++, FORTRAN Compiler의 option에 Processor architecture를 지정하여 compile하면

가장 최적화된 code를 얻을 수 있다 (Ex. cc -q arch=power2 test.c )

1-5 mkpasswd

시스템에 등록된 User가 많을 경우 User-ID 및 password를 확인하는 작업도 Performance에 큰

영향을 줄 수 있다. 일반적으로 User-ID를 확인하는 방법은 /etc/passwd file 및

/etc/security/passwd file을 순차적으로 찾는데 'mkpasswd' 명령을 사용하면 passwd file에 대하

여 hashed 또는 index를 생성하므로 CPU가 User_ID를 찾는데 소요하는 시간을 줄일 수 있다.

< 사용법 >

- AIX 4.3이전 : # mkpasswd /etc/passwd

- AIX 4.3부터 : # mkpasswd -f

이 명령을 사용하면 /etc/passwd.mn.idx, /etc/passwd.id.idx, /etc/security/passwd.idx,

Page 6: AIX DIY(3rd Edit) -성능 튜닝(CPU과 메모리)

AIX 시스템 성능 튜닝 (CPU와 메모리)

한국 IBM RS/6000 TSC

/etc/security/lastlog.idx등의 file이 생성된다.

Application은 일부 subroutine의 변경이 필요하다.

getpwent --> _getpwent

getpwnam (name) --> _getpwnam_shadow (name, 0)

getpwuid (uid) --> _getpwuid_shadow (uid, 0)

2. MEMORY Tuning

2-1 VMM (Virtual Memory Manager)의 구성 및 역할

가상 메모리(Virtual Memory)는 real memory와 디스크 상의 페이징 스페이스, 그리고 디스크상

의 파일 시스템으로 구성된다. 가상 메모리의 각 segment는 4096-byte의 “페이지 프레임(page

frame)"으로 나뉘 어져 관리되며 3가지 Type의 Segment Type으로 분류 할 수 있다.

• Segment Types

Persistent : File system과 Process code segment

Client : remote files & executables

Working : Paging Space와 Private segment로 구성

Real memory는 크게 Computational Memory와 File Memory로 구분된다.

• Computational 대 File memory

Computational : Working stroage segment (Process가 사용하는 working storage와

Program text segment로 구성

File Memory : File Image(cache)로 사용하는 부분

Page 7: AIX DIY(3rd Edit) -성능 튜닝(CPU과 메모리)

AIX 시스템 성능 튜닝 (CPU와 메모리)

한국 IBM RS/6000 TSC

2-2 Page Stealer

aaa1aaa3bbb1bbb3ccc1.....

Real Addr

Free List PFT (Page Frame Table)

aaa2aaa4bbb2bbb4ccc2ccc4......

Real - Addr

aaa1aaa2aaa3aaa4bbb1bbb2bbb3bbb4ccc1ccc2......

Seg Type

WWWWPPPPCC

Ref

+

+

+

+

+

MOD

++

++

++

Paging Space

Permanent

NFS Server

Result PFT

Real - Addr

Seg Type

WWPPC

Ref

+

+

+

MOD

VMM은 Memory의 각 Page가 사용 중인지를 구분하기 위하여 PFT (Page Frame Table)을 관리하

는데, Real Address별로 Segment Type, 현재 참조하여 사용중인지, 변경되었는지 등을 Marking하여

구분한다. Real Memory내의 사용 가능한 Page를 관리하기 위해 Free List table을 관리 하는데 Free

List Table내의 Free page 수가 일정 개수 이하로 떨어지면 Page Stealer가 PFT를 참조하여 Free

Page를 steal 하기 시작한다. Page steal을 하기 위해서는 2 path scanning을 하는데 첫 번째 scan시

reference bit가 ON 되어 있으면 off로 reset을 하고 두 번째 scanning시 까지 off상태면 Page steal을

한다. Ref field가 OFF인 page는 steal하여 Free list에 추가하게 되는데 MOD field가 ON 되어 있는

경우에는 Page steal 하기 전에 Page Out call을 한다. Steal되는 Page의 segment type이 Working인

경우에는 Paging space로 page out되며, Persistent segment인 경우는 DISK로 write 된다.

Page fault는 new page fault와 repage fault로 구분된다.

- new page fault : 최근에 참조된 적이 없는 page가 page out 되는 경우

_ repage fault : 최근에 참조된 page가 page out되는 경우

VMM은 이를 구분하기 위하여, 일정한 양의 page fault history를 buffer로 관리 한다.

VMM은 일정한 량의 Free Page를 유지하려는 속성이 있다. 즉 Free Page가 일정 수준 이하로 떨어지

면, Page stealer를 작동시켜 Free Page를 일정 수준 이상으로 확보를 하게 한다. 이 값을 결정하는

AIX Tuning parameter가 minfree 및 maxfree이며 vmtune으로 변경할 수 있다. (Free page가 minfree

이하로 떨어지면 Page steal을 시작하여 maxfree 만큼 Free page가 확보 될 때까지 계속 한다.

Page 8: AIX DIY(3rd Edit) -성능 튜닝(CPU과 메모리)

AIX 시스템 성능 튜닝 (CPU와 메모리)

한국 IBM RS/6000 TSC

사용법 : vmtune -f #n (minfree page 수 : default 120)

vmtune -F #n (maxfree page 수 : default 128)

AIX VMM은 Process가 종료되면 process가 점유하고 있던 Working storage는 즉시 free list table

에 추가하나 그 process가 open 하여 사용 중이던 file image는 그대로 memory의 File cache 영역에

상주시킨다. 이는 한번 사용된 File은 다시 사용할 확율이 높기 때문에, 매번 동일 File이 Open 될 때

마다 FILE Image가 DISK로 부터 Memory로 Load되는 Overhead를 줄이기 위해서이다.

2-3 Memory load control

VMM은 page replacement algorithm에 의해 향후 재사용 될 가능성이 작은 page를 steal한다. 그런

데 향후 재 사용될 가능성이 작은 page가 없을 경우 재사용 가능성이 높은 Page임에도 불구하고

page steal을 하게 된다. 이런 상황이 발생하면 계속적으로 page in/out이 발생하게 되는데 이런 현상

을 THRASHING이라 한다. AIX는 thrashing 현상이 발생하면 이를 감지하여 thrashing이 현상이 없

어질 때까지 일정기간 동안 new process의 initial을 지연시키고 작업을 suspend queue에 대기시킨다.

Thrashing 현상이 없어지면 suspend queue에 대기하고 있던 Process는 즉시 reactivate 된다. 이런

일련의 작업 과정을 Load control 이라고 하는데 AIX Ver4부터는 Available memory가 128MB 이상

일 경우 Load control 기능을 중단시킨다.

vmstat의 출력중 fr은 free 되는 페이지의 개수를 나타내고 po는 page out되는 개수를 나타내는데

po/fr > 1/h (“h”는 schedtune parameter)인 경우 thrashing현상이 발생하므로 Memory가 부족하다라

고 판단 할 수 있다. schedtune parameter “h” 는 Default가 6인데, AIX Ver4부터는 Real memory가

128 MB 이상인 경우 Default로 0이 setting 된다. “h” 값이 0이라는 것은 load control을 안 한다는

의미다. Load Control을 하지 않을 경우 schedtune parameter중 PROC(-p), MULTI(-m), WAIT(-w),

GRACE(-e) parameter는 사용되지 않는다.

“h" 값이 0이 아닐 경우 다음 parameter가 process의 scheduling에 영향을 준다.

PROC (-p) : (# repages / # page faults) > 1 / p 인 경우 Load control을 시작

default 4

MULTI (-m) :

WAIT (-w) : Load Control에 의해 Suspend로 빠진 process가 reactivate될 때까지

기다리는 시간 (default 1 초)

TICKS (-f) : Memory가 부족할 경우 scheduler는 최대한 5번까지 fork를 retry하는데

-f 값에 지정된 time slice(clock ticks)만큼씩 interval을 가지고

fork를 한다 (default 10). 5번 반복하여도 Memory가 부족 할 경우 ENOMEM

Error message를 Return한다.

GRACE (-e) : suspend 되었던 process가 reactivate 된 후 지정된 시간 (default 2초)동

Page 9: AIX DIY(3rd Edit) -성능 튜닝(CPU과 메모리)

AIX 시스템 성능 튜닝 (CPU와 메모리)

한국 IBM RS/6000 TSC

안 다시 suspend로 빠지는 것을 방지한다.

2-4 vmtune에 의한 System tuning 방법

2-4-1 minperm(-p) 및 maxperm(-P)

Page stealer가 computational pages 및 file pages중 어디서 page steal을 하게 할

것인가를 설정하는 Parameter로서 Real memory중 file pages가 사용하는 비율에 따라

steal 할 영역이 결정된다.

File pages가 사용하는 비율 < minperm

- Computational pages 및 File pages에서 임의로 Page steal

File pages가 사용하는 비율 > maxperm

- File pages에서만 Page steal

minperm < File pages가 사용하는 비율 < maxperm

- 기본적으로 File pages에서 Page steal을 하는데 File pages의 repaging rate가

Computational pages의 repaging rate보다 높을 경우 Computational pages에서

page steal을 한다.

2-4-2 minpgahead (-r)및 maxhgahead(-R)

Sequential read를 할 경우 VMM은 미리 다음에 읽을 page를 memory로 load하는데 미리 읽어 들이

는 양을 결정해 주는 parameter다. minpgahead는 최초로 load하는 page 양을 지정하는 것이며, 두 번

째부터는 첫 번째 load한 page의 두 배씩 읽어 들인다.

maxpgahead는 미리 읽을 최대 page수를 지정한다. ADSM data backup등 대량의 file을 sequential

하게 읽을 경우 maxpgahead를 크게 하는 것이 좋다.

예제) minpgahead가 2이고 maxpgahead가 8인 경우

Page 0 accessed :

read in

Page 1 accessed :

read in

Page 2 accessed :

read in

Page 4 accessed :

ꋗꋠꋗꋡꋗꋢꋗꋣꋗꋤꋗꋥ read in

Page 8 accessed :

Page 10: AIX DIY(3rd Edit) -성능 튜닝(CPU과 메모리)

AIX 시스템 성능 튜닝 (CPU와 메모리)

한국 IBM RS/6000 TSC

ꋗꋦꋗꋧꋗꋨꋗꋩꋘꋠꋘꋡꋘꋢꋘꋣ read in

2-4-3 minfree (-f)및 maxfree(-F)

Real memory의 free list에 minfree 보다 free page 수가 작으면 page stealer가 작동하여 page steal

을 시작하여 maxfree 만큼 확보 될 때까지 계속 한다. maxfree는 minfree와 maxpgahead를 합한 값

보다 크거나 같아야 한다. 상세한 사항은 2-2절의 Page stealer를 참조 바랍니다.

2-4-4 pd_npages (-N)

File delete시 real memory로부터 지워질 page 수를 지정한다.

Default : Possible file size / page size

2-4-5 maxrandwrt(-W) 및 numclust(-c)

Dirty page(내용이 수정 된 page)를 줄이기 위해 사용되는 parameter다. 기본적으로 dirty page는 다

음의 경우에 disk로 write 된다.

1) 주기적으로 기동되는 sync daemon(보통 crontab에 등록 되어 1분에 한번 기동한다)

또는 sync command에 의해

2) minfree 값에 의해 page steal시 또는 page replacement가 발생 시

3) random-write-behind에 의해

sync daemon이 기동 될 때까지 dirty page가 memory에 상존하고 있다면 sync daemon에 의해

DISK write되는 page수가 많아 disk I/O bottleneck현상을 보이게 된다. 이를 방지하기 위하여 일정

수의 dirty page가 발생하면 VMM이 DISK write 작업을 하게 되는데, numclust 및 maxrandwrt에

의해 write 작업 시기가 결정된다.

File partition은 보통 4개의 page(16K)로 구성 되는데 이를 cluster라 한다. 한 cluster가 변경되고 그

다음 cluster의 변경이 시작 될 때 VMM은 이전에 변경된 cluster를 DISK에 write한다. cluster의 수

를 증가 시킴으로서 write 주기를 지연 시킬 수 있다.

numclust는 sequential write behind의 수를 지정하는 반면에, maxrandwrt는 random write behind의

수를 지정한다. 즉 maxrandwrt에 지정된 page수까지 dirty page가 발생시에는 DISK write가 발생하

지 않으나 그다음에 발생하는 dirty page는 즉시 disk에 write 된다. 그 이전에 발생한 maxrandwrt

수만큼의 dirty page는 sync daemon에 의해 DISK write가 된다.

2-4-6 maxpin (-M)

Real memory중 pinned memory로 사용할 수 있는 최대 memory량을 %로 지정 할수 있다. 최소한

Page 11: AIX DIY(3rd Edit) -성능 튜닝(CPU과 메모리)

AIX 시스템 성능 튜닝 (CPU와 메모리)

한국 IBM RS/6000 TSC

4MB 이상을 unpinned memory로 사용할 수 있도록 해야 한다.

Default 80%

2-4-7 npswarn (-w) 및 npskill (-k)

AIX는 free paging-space가 npswarn 보다 작으면 Process에 SIGDANGER signal을 보낸다. default

value는 AIX 3.2일 경우 512며 AIX Ver4부터는 MAX(512, 4*npskill)로 결정한다. 또한 free

paging-space가 npskill보다 작으면 Process를 가장 늦게 생성된 process를 kill하는데 deefault value

는 AIX 3.2일 경우 128이며 AIX Ver4부터는 MAX(64, number_of_paging_space/128) 로 결정한다.

2-4-8 numfsbufs (-b) 및 lvm_bufcnt (-u)

File system 및 raw I/O에서 사용하는 buffer의 개수를 지정하는 parameter로 동시에 많은 I/O 요청

이 있을 경우 buffer의 수가 부족하여 대기하는 현상이 발생 할 수 있다.

이런 경우 buffer의 수를 늘려 줌으로서 performance 향상을 가져 올 수 있다.

numfsbufs : filesystem에서 사용하는 buffer수를 지정. Default value는 AIX 3.2인 경우 64, AIX

Ver4는 93이다. 이 값을 변경한 경우 filesystem을 unmount 하였다가 다시 mount해야 효력이 발생한

다.

lvm_bufcnt : raw I/O device에서 사용하는 buffer 수를 지정. AIX Ver4이상에서만 적용되며 Default

value는 9이다.

2-4-9 deffs (-d)

AIX 의 Page Space allocation 방법은 3가지가 있다.

1) Early Page Space Allocation

Process가 memory를 요청하면 즉시 paging space를 reserve 또는 assign한다.

- 환경변수 PSALLOC에 early를 지정하여 바꿀 수 있다.

- lsps -s로 reserve/assign된 page양을 확인 할 수 있다.

2) Late Page Space Allocation

Process가 RAM상의 Memory를 touch할 때 paging space를 allocate한다.

- AIX 4.3.2이전에서 default로 적용된 정책이다.

- EPSA에 비해 더 좋은 Performance를 제공한다.

- lsps -a로 allocate된 page양을 확인 할 수 있다.

3) Deferred Page Space Allocation

RAM에 할당된 memory page가 page out될 때 allocation한다.

이는 Real memory가 큰 경우 paging이 필요 없음에도 불구하고 paging space가 할당 되는 것을

방지해 주므로 가장 효율적인 정책이라 할 수 있다.

- AIX 4.3.2부터 채택된 기본 정책이다.

- vmtune -d 0/1 DPSA 정책을 off/on할 수 있다.

Page 12: AIX DIY(3rd Edit) -성능 튜닝(CPU과 메모리)

AIX 시스템 성능 튜닝 (CPU와 메모리)

한국 IBM RS/6000 TSC

2-4-10 sync_release_ilock (-s)

sync system call을 하면 sync 종료 시까지 inode에 lock이 걸리게 되어 inode를 access 하려던

process가 wait하게 되는데 sync_release_ilock을 1로 지정하면 inode lock을 하지 않는다.

2-4-11 lrubucket (-l)

Page replace algorithm은 real memory를 일정한 page를 bucket이라는 frame으로 나누어 관리를 하

는데, page steal을 위한 scanning시에 전체 memory를 scan하지 않고 bucket별로 scan을 한다. 2-2

절에서 언급하였듯이 scan은 2path로 나누어 scanning을 한다.

Default value는 131072로 512MB다

별첨 1. schedtune sample output

# /usr/samples/kernel/schedtune

THRASH SUSP FORK SCHED

-h -p -m -w -e -f -d -r -t -s

SYS PROC MULTI WAIT GRACE TICKS SCHED_D SCHED_R TIMESLICE MAXPIN

0 4 2 1 2 10 16 16 1 1

별첨 2. vmtune sample output

# /usr/samples/kernel/vmtune

vmtune: current values:

-p -P -r -R -f -F -N -W

minperm maxperm minpgahead maxpgahead minfree maxfree pd_npages maxrandwrt

26009 104038 2 8 120 128 524288 0

-M -w -k -c -b -B -u -l

maxpin npswarn npskill numclust numfsbufs hd_pbuf_cnt lvm_bufcnt lrubucket

104858 4096 1024 1 93 112 9 131072

-d -s

defps sync_release_ilock

1 0

number of valid memory pages = 131072 maxperm=79.4% of real memory

maximum pinable=80.0% of real memory minperm=19.8% of real memory

number of file memory pages = 46292 numperm=35.3% of real memory

별첨 3. Parameter 설명 빨리 찾기 Index

Page 13: AIX DIY(3rd Edit) -성능 튜닝(CPU과 메모리)

AIX 시스템 성능 튜닝 (CPU와 메모리)

한국 IBM RS/6000 TSC

가. schedtune

Parameter Ref Parameter Ref Parameter Ref Parameter Ref

-p 2-4-1 -P 2-4-1 -r 2-4-2 -R 2-4-2

-f 2-2 -F 2-2 -N 2-4-4 -W 2-4-5

-M 2-4-6 -w 2-4-7 -k 2-4-7 -c 2-4-5

-b 2-4-8 -B -u 2-4-8 -l 2-4-11

-d 2-4-9 -s 2-4-10

나. vmtune

Parameter Ref Parameter Ref Parameter Ref Parameter Ref

-h 2-3 -p 2-3 -m 2-3 -w 2-3

-e 2-3 -f 2-3 -d 1-2 -r 1-1

-t 1-3 -s