http://jkkang.net/unix/system/kernel-tuning.txt
#
# Kernel Tunning 방법, IPC Parameter 정리
#
Kernel Tunning 및 IPC Parameter
■ Solaris2.x에서의 Kernel tuning에 대해 알아보겠습니다.
Solaris 2.x는 solaris1.x와 비교할 때 dynamic kernel 구조를 갖기 때문에 tuning에 있어
직접 kernel을 compile하지 않고 부팅시에 해당되는 module을 loading하도록 되어있습니다.
■목차
1. Kernel tuning의 의의
2. "maxusers"에 의해 변동되는 parameter의 값설정 방법
3. Solaris 2.x에서의 kernel parameter 변경
4. 기타 Tuning이 가능한 parameter들
1) Buffer Cache Parameters
2) Streams Parameters
3) Interprocess Communication (IPC) Parameters
4) TPI Loopback Pseudo-driver Parameters
5) Miscellaneous Parameters
1. Kernel tuning의 의의
● Solaris 2.x에서의 kernel은 booting시 자동적으로 load되며 recompiling의 단계를 거치지
않고 동적으로 구동된다. 따라서 Solaris2.x에서는 필요한 경우에만 kernel의 resource를
참조하게 된다.
또한 특별한 상황이 아닌 경우의 Solaris2.x에서의 kernel tuning은 삼가하는 것이 좋다.
● 또한 Solaris2.x에서의 kernel tuning은 "maxusers"의 세팅을 어떻게 했는가 하는 것에 의해
대부분의 parameter들의 값이 자동적으로 계산되며 /etc/system file에 해당되는 parameter
setting을 함으로써 booting시 kernel이 이 화일을 참조하여 kernel 상으로 강제적인
loading을 하게된다.
● 결론적으로 Solaris 2.x에서의 kernel tuning은 해당되는 kernel parameter의 값에 대한 정확한
이해를 바탕으로 진행할 수가 있으며 시스템과 조화를 이루지 않는 parameter 값을 설정시에는
오히려 시스템의 성능저하를 가져올 수도 있다는 것을 명심해야 할 것이다.
2. "maxusers"에 의해 변동되는 parameter의 값설정 방법
Kernel Table Variable Default Setting
Inode ufs_ninode max_nprocs + 16 + maxusers + 64
Name Cache ncsize max_nprocs + 16 + maxusers + 64
Process max_nprocs 10 + 16*maxusers
Quota table ndquot (maxusers * NMOUNT)/4 + max_nprocs
user process maxuprc max_nprocs - 5
pseudo devcies pt_cnt default 48
3. Solaris 2.x에서의 kernel parameter 변경
○ solaris 2.x에서의 kernel tuning은 /etc/system file에서 해당되는 parameter를
변경함으로써 수정이 가능하다.
다음의 예제를 참고로 maxuser의 변경시 변화되는 parameter를 살펴보기로 한다.
system: SPARCstation ss2
M/M : 52MB
Disk : 4G
OS : Solaris 2.4
○ 위와 같은 사양에서 maxusers를 64명으로 늘리고자 함.( max user 를 기준으로 다른
kernel parameter 를 수정하도록 함.
# cp /etc/system /etc/system.org
# vi /etc/system
set maxusers=64
set max_nprocs=1034
set ncsize=1178
set ndquot=1194
set maxuprc=1029
set ufs_ninode=1178
set pt_cnt=100 -----> 100 개의 psudo device를 구성함 ( default 48 )
# reboot -- -r ( -r option으로 kernel을 rebuild 시켜줌 )
○ 만약 /etc/system의 설정이 잘못되어 booting이 되지 않을 때는 미리 copy 해둔
/etc/system.org로 system을 부팅하여 /etc/system file을 수정하도록 한다.
진행순서는 다음과 같다.
OK boot -a ---> -a option을 사용하여 interactive하게 시스템을 booting
Rebooting from -a
Boot device: /sbus/esp@0,800000/sd@3,0 File and args: -a
Enter filename [/kernel/unix]: (return)
:
Name of system file [etc/system]: etc/system.org
Name of default directory for modules [/kernel /usr/kernel]: (return)
root filesystem type [ufs] (return)
:
○ booting을 한 후 "sysdef -i" option으로 kernel parameter를 비교해 보면
/etc/system file을 수정한 후와 수정전의 차이점을 알 수가 있다.
수정전:
826 maximum number of processes (v.v_proc)
821 maximum processes per user id (v.v_maxup)
수정후:
1034 maximum number of processes (v.v_proc)
1029 maximum processes per user id (v.v_maxup)
4. 기타 Tuning이 가능한 parameter들
1) Buffer Cache Parameters
Parameter default Description
bufhwm 2% of physical memory 1Kbytes 단위로 표현되는 buffer
cache memory 사용량의 최대값
○ 만약 physical memory size가 52MB 인 경우 2%에 해당되는 buffer cache
parameter 값이 자동으로 부팅시에 세팅되며 확인은 다음의 명령어를 이용한다.
# /usr/sbin/sysdef -i |grep bufhwm
1069056 maximum memory allowed in buffer cache (bufhwm)
( 52Mbyte physical memory에 대한 2%의 buffer cache가 자동설정됨 )
# vi /etc/system
set bufhwm=2088 --> buffer cache size를 두배로 늘리고자 할때
: 2088*1024byte = 2138112byte로 기존의 1069056
보다 두배의 buffer cache size를 갖게됨.
# reboot - -r
# /usr/sbin/sysdef -i |grep bufhwm
2138112 maximum memory allowed in buffer cache (bufhwm)
2) Streams Parameters
Parameter Default Description
nstrpush 9 허용된 pushes streams의 최대값
strmsgsz 65536 사용자가 만들수 있는 최대의 streams
message size로 0 일 경우 최대값의 상한
을 두지 않음을 의미하며 Solaris 2.4의
경우 65536이 default value이다.
strctlsz 1024 message의 ctl part의 최대값 의미
○ 현재 사용하고 있는 시스템의 STREAM resource를 알아보는 방법
# uname -a
SunOS cupid 5.4 generic sun4c sparc
# /usr/sbin/sysdef -i |grep STR
9 maximum number of pushes allowed (NSTRPUSH)
65536 maximum stream message size (STRMSGSZ)
1024 max size of ctl part of message (STRCTLSZ)
○ 현재의 STREAM parameter를 변경하고자 할 때
# vi /etc/system
set nstrpush=18 --> default 9
set strmsgsz=0 --> default 65536 ( 0 는 unlimit의 의미를 가짐 )
set strctlsz=2048 --> default 1024
:
:wq
# reboot -- -r
# /usr/sbin/sysdef -i |grep STR
18 maximum number of pushes allowed (NSTRPUSH)
0 maximum stream message size (STRMSGSZ)
2048 max size of ctl part of message (STRCTLSZ)
3) Interprocess Communication (IPC) Parameters
○ 주로 Database에서의 semaphore와 shared memory size 설정시 사용되며
다음과 같은 여러가지 parameter 값을 가진다.
setting시에는 어떠한 application이 수행되는지 확인하여야 하며 해당되는
전문가와 상의하여 적절하게 parameter 값을 설정하도록 한다.
◎ IPC Messages Parameters
syntax: set msgsys:msginfo_variable=value
Parameter default Description
msginfo_msgmap 100 message map의 entry 수
msginfo_msgmax 2048 message size의 최대값
msginfo_msgmnb 4096 queue의 최대 byte 수
msginfo_msgmni 50 message queue identifier의 갯수
msginfo_msgssz 8 message의 segment size로 반드시 word
size의 곱이되어야 함.
msginfo_msgtql 40 system message header의 갯수
msginfo_msgseq 1024 message segment의 갯수로 32768 보다
작아야함.
◎ IPC Semaphores Parameters
Systax: set semsys:seminfo_variable=variable
Parameter default Description
seminfo_semmap 10 semaphore map의 entry 갯수
seminfo_semmni 10 semaphore identifier의 갯수
seminfo_semmns 60 system의 semaphore 갯수
seminfo_semmnu 30 system의 undo structure의 개수
seminfo_semmsl 25 각 id 별 semaphore의 최대값
seminfo_semopm 10 각 semaphore call마다의 최대
operation의 갯수
seminfo_semume 10 각 process마다의 undo entry의 최대값
seminfo_semvmx 32767 semaphore의 최대값
seminfo_semaem 16384 Adjust on exit maximum value
◎ IPC Shared Memory
Syntax: set shmsys:shminfo_variable=value
Parameter default Description
shminfo_shmmax 1048576 Shared memory segment의 최대 크기
shminfo_shmmin 1 Shared memory segment의 최소 크기
shminfo_shmmni 100 Shared memory의 identifier의 개수
shminfo_shmseg 6 각 process당 Segments
4) TPI Loopback Pseudo-driver Parameters
syntax: set tune:variable=value
Parameter Default Description
tune_t_gpgslo 25 freemem이 t_getpgslow보다 작아질 경우
process로 부터 pages를 빼앗아 옴
tune_t_fsflush 30 초 단위로 언제 fsflush가 run되는지를 정의
fsflush는 항상 memory에 상주하면서 정기적
으로 fsflush를 진행시킴
tune_t_minarme 25 page에 있어서의 deadlock을 피하기위한 최소
한의 이용가능한 resident memory
( not swapable )
tune_t_minasme 25 page에 있어서의 deadlock을 피하기위한 최소
한의 이용가능한 swapable memory.
tune_t_flckrec 512 frlocks의 active한 최대값
putbufsz 2000 putchar buffer의 크기
pt_cnt 48 pseudo-ttys로 구성된 total 갯수
sadcnt 16 sad device의 갯수
5) Miscellaneous Parameters
Parameter Default Description
lwp_default_stksize 8192 lwps에 대한 kernel stack의 크기로 kernel
stack의 overflow가 발생시에 적용되게됨.
byte 단위로 표현되며 반드시 PAGESIZE의
배수가 되어야 함
'UNIX > SUN' 카테고리의 다른 글
[스크랩] 커널 파라미터 on Solaris 10 (0) | 2014.09.18 |
---|---|
[스크랩] prctl 명령 사용 (기본 리소스 제어값) (0) | 2014.09.18 |
[스크랩] 솔라리스 IOPS 확인 (0) | 2014.07.25 |
[스크랩] 솔라리스 정보 확인 최종본 (0) | 2014.07.25 |
[스크랩] 솔라리스10 u10 기본 설정 - 윈디하나의 솔라나라 (0) | 2014.06.19 |