현재 리눅스에서 제공되는 IO 스케쥴러는 아래의 4가지가 기본으로 제공된다.
IO 스케쥴러에 대한 변경은 부팅시와 런타임 모두 가능하며 현재 default로 지정된 IO 스케쥴러의 확인은
/sys/block/sda/queue/scheduler 에서 살펴볼 수 있다.
# cat scheduler
anticipatory deadline [cfq]
출력값에서 [ ] 안의 스케쥴러가 현재 사용중인 스케쥴러이다. 따라서 cfq가 디폴드 스케쥴러로 되어있음을
알수 있다.
부팅 타임시에 변경은 /etc/grub.conf 의 kernel 옵션을 아래와 같이 추가함으로써 가능하다.
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Booyo Server (2.6.16-404.BS2smp)
root (hd0,0)
kernel /vmlinuz-2.6.16-404.BS2smp ro root=LABEL=/12 rhgb quiet elevator=cfq
initrd /initrd-2.6.16-404.BS2smp.img
title Booyo Server-up (2.6.16-404.BS2)
root (hd0,0)
kernel /vmlinuz-2.6.16-404.BS2 ro root=LABEL=/12 rhgb quiet elevator=noop
initrd /initrd-2.6.16-404.BS2.img
런타임시에 변경은 /sys/block/sda/queue/scheduler의 파일 내용을 아래와 같이 직접 write 함으로써 가능하다.
단순히 변경하고자 하는 스케쥴러의 이름을 echo 시키면 반영된다.
# cd /sys/block/sda/queue
# echo anticipatory > scheduler
# cat scheduler
[anticipatory] deadline cfq noop