본문 바로가기

UNIX

LINUX I/O ELEVATOR v1.0

LINUX I/O ELEVATOR

Date

Ver

Etc.

 110630

 1.0

 

 

 

 

 

 

 

 

 

* 아래의 내용은 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/