I/O 스케줄러
1. I/O 스케줄러의 종류
- noop (No Optimization) : 1개의 sub queue 를 가지고 순서대로 처리
- cfg (Complete Fair Queuing) : 64개의 sub queue 로 분배하여 각 프로세스마다 공평하게 처리
- deadline(Deadline) : Read sub queue 와 Write sub Queue 를 가진다.
- anticipatory : deadline 기능에 다음에 올 요청을 예상하는 기능을 추가
2. 특정 디바이스 (sda) 에 대한 I/O 스케줄러 변경
# cat /sys/block/sda/queue/scheduler (스케줄러 조회)
# echo "cfg" > /sys/block/sda/queue/scheduler (스케줄러를 cfg 로 변경)
3. 시스템 전체 I/O 스케줄러 변경하려면 /boot/grub 아래의 grub 파일을 변경해야 한다.
예) elevator=deadline 으로 지정
4. SAN 과 같이 외부 디스크 장치를 사용하는 경우에는 LUN 에 대해서 deadline 스케줄러가 cgf 보다 더 효과적이다.
5. ionice 를 활용한 프로세스 스케줄러 조정
# ionice -c 1 dd if=/dev/zero of=test bs=1M count=500 oflag=direct &
-c 1 : Real time
-c 2 : Best effort
-c 3 : Idle
/dev/zero : 바이트 코드 0 (NULL) 값
oflag=direct : 디스크 캐시를 사용하지 않음