1. 공유 자원 보호
2. 동기화(Synchronization)
3. 카운터 기반 제어
Oracle Database에서는 백그라운드 프로세스 간 동기화를 위해 세마포어를 사용한다.
SGA 접근 제어에도 사용되며, 프로세스드이 동시에 공유 메모리를 안전하게 사용할 수 있도록 보장한다.
ipcs -ls :세마포어 시스템에 대한 상세 정보를 출력
(oracle)$ ipcs -ls :세마포어 시스템에 대한 상세 정보를 출력
------ Semaphore Limits --------
max number of arrays = 128 👈SEMMNI
max semaphores per array = 250 👈SEMMSL
max semaphores system wide = 32000👈SEMMNS
max ops per semop call = 100👈SEMOPM
semaphore max value = 32767 : 각 세마포어가 가질 수 있는 최대 값(정수값)
$ cat /proc/sys/kernel/shmmax
4012533760 (약 3.74GB)
- SGA는 공유 메모리로 구성되어 여러 Server Process들이 공유해서 사용된다.
많은 프로그램들이 동시에 공유 메모리를 사용, 공유 메모리의 용량 또한 아주 큰 경우가 많기에 kernel이 응용 프로그램들에게 메모리를 할당해 줄 때 작게 여러 번 할당하지 않고 큰 덩어리로 한꺼번에 주게 된다. 이를 세그먼트(큰 덩어리)라고 한다.
세그먼트의 최대 개수
; default : 4096[root@cowjin1 20250330-15:42:52]:+ASM1:[/root]
$ cat /proc/sys/kernel/shmmni
4096
ceil(SHMMAX/PAGE_SIZE)
: 이 값보다 큰 값을 사용할 것을 권장$ cat /proc/sys/kernel/shmall
1959245
SHMMIN
SHMSEG
SEMVMX : Semaphore Maximum Value
각 세마포어가 가질 수 있는 최대 값을 의미한다.
(일시적)sysctl -w
: 커널 파라미터 값을 즉시 변경하지만, 재부팅 후에는 원래 값으로 복원됨.
(영구적)sysctl -p
: 파일에서 설정값 로드, 영구적 적용 가능
/etc/sysctl.conf: 영구적인 커널 설정 저장
/proc/sys/kernel: 현재 실행 중인 커널 값 저장 ,즉시 반영되지만 재부팅 시 초기화된다.