Linux 的 I/O 调度器是一个以块式 I/O 拜访存储卷的进程,有时也叫磁盘调度器。Linux I/O 调度器的作业机制是操控块设备的恳求行列:确认行列中哪些 I/O 的优先级更高以及何时下发 I/O 到块设备,以此来削减磁盘寻道时刻,然后进步体系的吞吐量。
现在 Linux 上有如下几种 I/O 调度算法:
noop – 一般用于内存存储的设备。
cfq – 彻底公正调度器。进程均匀运用IO带宽。
Deadline – 针对推迟的调度器,每一个 I/O,都有一个最晚执行时刻。
Anticipatory – 启发式调度,相似 Deadline 算法,可是引进猜测机制进步功能。
检查设备当时的 I/O 调度器:
# cat /sys/block//queue/scheduler
假定磁盘名称是 /dev/sdc:
# cat /sys/block/sdc/queue/scheduler
noop anTIcipatory deadline [cfq]
怎么改动硬盘设备 I/O 调度器
运用如下指令:
# echo {SCHEDULER-NAME} > /sys/block//queue/scheduler
比方设置 noop 调度器:
# echo noop > /sys/block/sdc/queue/scheduler
以上设置重启后会失效,要想重启后装备仍收效,需求在内核发动参数中将 elevator=noop 写入 /boot/grub/menu.lst:
1. 备份 menu.lst 文件
cp -p /boot/grub/menu.lst /boot/grub/menu.lst-backup
2. 更新 /boot/grub/menu.lst
将 elevator=noop 添加到文件结尾,比方:
kernel /vmlinuz-2.6.16.60-0.91.1-smp root=/dev/sysvg/root splash=silent splash=off showopts elevator=noop