LINUX I/O ELEVATOR
|
|
|
|
|
|
|
|
|
* 아래의 내용은 http://www.gnutoolbox.com/linux-io-elevator/
를 번역한 내용입니다.
1. What is I/O elevator ?
Linux 2.6 kernel 부터 새로운 I/O Elevator 모델을 도입했다. 2.4가 single, general-purpose 를 위한 I/O elevator 를 사용한 반면, kernel 2.6은 네가지
타입의 모델을 제공한다. 그 이유는 리눅스가 다양한 목적을 위해 사용되고 있기 때문으로 이로인해 I/O device 와 일량 특징이 크게 변화하였다. 노트북은 100,000 유저가 사용하는 데이터베이스와는 다른 I/O 요구사항을
가질것이다. 이러한 이유로 네가지 I/O elevators 가
사용가능하다.
Anticipatory ( 예상하는, 선행하는)
이는 오직 하나의 물리적인 헤드 탐색(예를 들면 하나의 SATA Drive) 을 전제로 만들어졌다. Anticipatory 는 deadline 을 사용하며 아래에 추가적으로
anticipation heuristic 에 대해 설명하였다. 이름에서
알 수 있듯이, anticipatory I/O elevator 는 싱글 디바이스에서 어디에 쓸지를 예측하며, 복수의 작은 랜덤엑세스 대신에 보다 큰 스트림을 사용한다. 이 모델은 write I/O 에 지연을 발생시킨다. 이는 평범한 개인 컴퓨터와
같은 사용에 최적화 되어 있다. Kernel 2.6.18 까지
anticipatory elevator 는 기본 I/O scheduler 이다. 그러나 대부분의 Enterprise Linux 는 CFQ elevator 를 기본으로 사용한다.
Complete Fair Queing (CFQ)
CFQ 는 per-process I/O queues 를 이용해 Process 에 대해 QoS 를 지향한다. 이는 프로세스 경합이 벌어지는 복수 사용자의 대형 시스템에 적합하다. 또
이 모델은 Starvation of Processes 상황을 회피를 하며 적은 지연을 특징으로 하고
있다. Kernel 2.6.18 부터 보다 향상된 CFQ
elevator 가 기본 I/O Scheduler 다. System
Setup 과 workload 특징에 따라 CFQ
Scheduler 는 하나의 Main Application 에 대해 성능저하가 일어날 수
있다. 이를테면 fairness 기반의 알고리즘을 사용하는
대용량의 데이터베이스가 그러하다.
Deadline
Deadline Elevator 는 real-time 에 근접한 행동을 제공하는 deadline 알고리즘의 cyclic elevator 이다. (round robin) 이는 좋은 디스크 성능하에 디스크 지연을 최소화 할 수 있다. 이 모델의 사용은 starvation of a process 상황이
절대 일어날 수 없다.
NOOP
NOOP 는 No Operation 을 의미한다. 이름에서 내용을 알 수 있다. The NOOP elevator 는
간단하다. 이는 단순히 아무 Ordering 없는 FIFO 이다. NOOP 는 단순히 인접한 데이터 요구에 대해 병합하며, 이를 통해 Processor 에 매우 낮은 부하를 주나 디스크에는
큰 부하를 준다. NOOP 는 SCSI 를 위한 TCQ 알고리즘 같이 독자적인 elevator algorithm 을
가진 Block device 에 사용하거나 Flash card 같이
seek latency 가 매우낮은 장비에 사용한다.
2. References
A.
LINUX I/O
ELEVATOR | http://www.gnutoolbox.com/linux-io-elevator/