큐(queue)
- 대기행렬이라 한다
- 하드웨어, OS, 데이터 베이스, 애플리케이션 등 모든 곳에서 사용
- FIFO(First In First Out) 선입선출
1. 어디에 사용되나
1_1 웹 서버
0) 상황설명
- CPU에 코어가 두개 있으며 아파치 프로세스는 네개이다
1) 처리중 상태
- 프로세스 두개는 CPU의 (각각)코어에 의하여 처리 중에 있다
2) 처리 대기
- 프로세스 두개는 CPU 처리를 기다리고 있다
- 런큐에 두개의 프로세스가 있다
런큐(run-queue)
- CPU를 기다리는 프로세스 행렬을 런큐라고 한다
- 런큐에 쌓인 프로세스 수 / 코어 수 = 1 = 문제 없다
- 리눅스 : CPU에 처리 중인 프로세스도 런큐로 인식(앞에 상황에서 런큐는 4)
- OS 커널에 프로세스 스케출러 기능이 있어서 런큐를 관리한다
- CPU 처리를 기다리는 프로세스나 스레드 확인
a. 유닉스 계열 : vmstat 5(5초 간격의 리눅스 데이터) 명령어 입력
- 현재는 런큐가 0이다
- 만약 10이고 1CPU의 2코어라면 1코어당 네개의 프로세스 또는 스레드가 대기중 상태(처리지연 가능성)
b. window : 검색에 performance monitoring
- 1CPU 2코어에서 1코어당 16개의 프로세스 혹은 스레드가 대기중이다
1_2. 데이터베이스의 디스크 I/O
- 프로세스의 처리 대상이 CPU가 아닌 HDD 라는 점이 다르다
- vmstat 5의 b 열로 대기중인 프로세스가 스레드 수를 확인가능 하다
'IT_Infra > Architecture' 카테고리의 다른 글
[IT_Infra]배타적제어(2) - DBMS, OS (0) | 2016.10.25 |
---|---|
[IT_Infra] 배타적제어(1) - 정의 (0) | 2016.10.25 |
[IT_Infra] C10K 문제 (0) | 2016.10.12 |
[IT_Infra] 동기/ 비동기(synchronous/asynchronous) (0) | 2016.10.12 |
[IT_Infra] monolithic kernel(모놀리식) vs micro kernel(마이크로) (0) | 2016.09.19 |