1. Kernel Parameter 설정
아래 파라메터을 설정 해 주십시오. 이후에 파라메터 변경은 표 아래 절차를 따르시면 됩니다.
SunOS Name |
Traditional Name |
Defaults |
shmsys:shminfo_shmmax |
SHMMAX |
131072 |
shmsys:shminfo_shmseg |
SHMSEG |
6 |
shmsys:shminfo_shmmni |
SHMMNI |
100 |
semsys:seminfo_semmns |
SEMMNS |
60 |
semsys:seminfo_semmni |
SEMMNI |
10 |
semsys:seminfo_semmsl |
SEMMSL |
25 |
semsys:seminfo_semmap |
SEMMAP |
10 |
semsys:seminfo_semmnu |
SEMMNU |
30 |
semsys:seminfo_semume |
SEMUME |
10 |
msgsys:msginfo_msgmni |
MSGMNI |
50 |
msgsys:msginfo_msgmap |
MSGMAP |
100 |
msgsys:msginfo_msgmax |
MSGMAX |
2048 |
msgsys:msginfo_msgmnb |
MSGMNB |
4096 |
msgsys:msginfo_msgssz |
MSGSSZ |
8 |
msgsys:msginfo_msgtql |
MSGTQL |
40 |
msgsys:msginfo_msgseg |
MSGSEG |
1024 |
maxusers |
maxusers |
32 |
max_nprocs |
NPROC |
10+16*maxusers |
maxuprc |
MAXUP |
max_nprocs-5 |
2. Kernel Parameter 설정 절차
2.1 semaphore parameter 개략 설명
Name Default Max Brief Description ------ ------- -------------- ------------------------------------- semmap 10 2147483647 semaphore map에 있는 entry의 갯수 semmni 10 65535 semaphore set (identifier)의 갯수 semmns 60 2147483647 시스템에 있는 semaphore의 갯수 65535 (usage) semmnu 30 2147483647 시스템이 있는 "undo" structure의 갯수 semmsl 25 2147483647 하나의 semaphore ID에 있는 semaphore 최대 갯수 65535 (usage) semopm 10 2147483647 하나의 semaphore call당 최대 operation 최대 갯수 semume 10 2147483647 하나의 프로세서당 "undo" entry 최대 갯수 semusz 96 *see below* "undo" structured의 크기(byte) semvmx 32767 2147483647 semaphore 최대값 65535 (usage) semaem 16384 2147483647 exit시에 보정될 최대값 32767 (usage)
|
2.2 semaphore parameter 세부 설명
semmap
semaphore resource map의 크기를 정의한다. 이 map에 있는 하나의 entry는 연속적인 가용한 semaphore를 차지한다. semget(2) 시스템 콜에 의해 얻어지는 semaphore set을 위한 공간이다.
semmni
시스템에서 사용할 수 있는 최대 semaphore sets (identifiers)를 정의한다. 시스템에 있는 모든 semaphore set은 유일한 ID와 제어구조를 갖는다. 각 semaphore set에 대하여 84 바이트의 커널 메모리가 미리 할당된다.
semmni의 값을 65535 보다 크게 지정하면, 시스템은 경고 메세지를 출력하고 이 값은 65535로 설정한다.
semmns
시스템에 있는 semaphore의 갯수를 정의한다. 각 semaphore에 대하여 16 바이트의 커널 메모리가 미리 할당된다.
semmnu
시스템이 있는 semaphore undo structure를 정의한다. 각 undo structure에 대하여 semusz 크기 만큼의 커널 메모리가 미리 할당된다. 하나의 프로세스에 대하여 undo 정보를 기록하기 위하여 하나의 undo structure가 필요하다.
semmsl
하나의 semaphore ID에 대하여 생성될 수 있는 semaphore의 갯수를 제한한다. 논리적으로 semmsl는 semmns의 값과 같거나 적어야 한다. 만일 이 값을 너무 크게 잡으면, 몇개의 semaphore ID가 시스템 전체에 있는 semaphore를 독식할 수 있다.
semopm
하나의 semop(2) 시스템 콜에서 처리할 수 있는 operation 수를 제한한다.
semume
하나의 프로세스가 가질 수 있는 undo record의 수를 제한한다.
semusz
semaphore undo structure의 크기를 정의한다. 이 값은 사용자가 변경하는 것이 아니고, 시스템에 의해 계산된다.
semusz = 8 * (semume + 2)
semvmx
하나의 semaphore의 최대값을 제한한다. undo structure와 semaem과의 연관관계가 있으므로 이 값의 디폴트 32767 보다 크게 지정하지 말아야 한다. 만일 디폴트 보다 크게하면, SEM_UNDO 기능을 사용할 수 없다.
semaem
adjust-on-exit undo element의 최대값을 제한한다.
|
2.3 semaphore parameter 설정하기
semaphore parameter를 시스템에 설정하려면 /etc/system 파일에 다음과 같은 라인을 추가하고, 시스템을 rebooting하면 변경사항이 반영된다.
set semsys:seminfo_variable = value |
여기서 'variable'은 위에서 설명한 Name 필드에 있는 값이다. 예를 들면,
set semsys:seminfo_semmap = 15 |
semmap(semaphore resource map)의 값을 15으로 변경한다.
2.4 semaphore parameter 값을 조사하기
시스템에 설정되어 있는 semaphore parameter의 값은 'sysdef' 명령어로 확인할 수 있다.
$ sysdef .... Skip .... * * IPC Semaphores * 10 entries in semaphore map (SEMMAP) 10 semaphore identifiers (SEMMNI) 60 semaphores in system (SEMMNS) 30 undo structures in system (SEMMNU) 25 max semaphores per id (SEMMSL) 10 max operations per semop call (SEMOPM) 10 max undo entries per process (SEMUME) 32767 semaphore maximum value (SEMVMX) 16384 adjust on exit max value (SEMAEM) .... Skip .... |
위에 있는 값들이 0로 보일 수 도 있다. 이 경우는 semaphore module이 커널에 올라와 있지 않기 때문이다. Solaris 2.x에서는 dynamic kernel을 사용한다. 이는 kernel module들이 사용될 때, kernel에 결합되고, 사용하지 않으면 커널에서 제거된다는 것을 의미한다. 강제적으로 semaphore module을 커널에 load하려면 다음과 같이 'modload'명령어를 사용할 수 있다.
# modload -p sys/semsys |
그리고 다시 sysdef 명령어는 사용하면, semaphore parameter를 확인할 수 있다.
2.5 커널 메모리의 제약
Solaris 2.5 이상 버전에서는 semaphore가 메모리의 1/4 이상이 할당되지 못하도록 하며, 그 이상이 할당되면 경고 메세지를 출력하고, semaphore module을 load하지 않는다.
2.6 참고 문헌
시스템에 설치된 메뉴얼 페이지를 참고한다.
semget(2), semctl(2), semop(2)
예제)
man semget
'▶ Tuxedo > 기술자료' 카테고리의 다른 글
Tuxedo에서 MySQL 연동(NonXA)하는 방법 (0) | 2012.02.22 |
---|---|
Tuxedo 관련 Message Queue, Shared memory, Semaphore 관련 Parameters (0) | 2012.02.22 |
keepalive란 ? (0) | 2012.02.09 |
IBM FIN_WAIT_2 상태에 대하여 (0) | 2012.02.09 |
Tuxedo Buffer Type 비교 (0) | 2011.11.11 |