Linux I/O调度器(Linux I/O Scheduler)Linux内核中的一个组成部分,用户可以通过调整这个调度器来优化系统性能,Linux I/O调度器(Linux I/O Scheduler)是LinuxI/O体系的一个组件,它介于通用块层和块设备驱动程序之间。
目前 Linux 上有如下几种 I/O 调度算法
1.noop(No Operation) - 通常用于内存存储的设备。
2.cfq(Completely FAIr Scheduler ) – 完全公平调度器。进程平均使用IO带宽。
3.Deadline – 针对延迟的调度器,每一个 I/O,都有一个最晚执行时间。
4.Anticipatory – 启发式调度,类似 Deadline 算法,但是引入预测机制提高性能。
1、查看CentOS6 CentOS7下IO支持的调度算法
CentOS 6.x
#dmesg | grep -i scheduler io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered (default)
CentOS 7.x
#dmesg | grep -i scheduler [ 0.739263] io scheduler noop registered [ 0.739267] io scheduler deadline registered (default) [ 0.739315] io scheduler cfq registered
看到CentOS 7.x默认支持的是deadline算法,CentOS 6.x下默认支持的cfq算法,而一般我们会在SSD固态盘硬盘环境中使用noop算法
2、查看设备当前的 I/O 调度器
#cat /sys/block/queue/scheduler
假设磁盘名称是 /dev/sda
#cat /sys/block/sda/queue/scheduler noop [deadline] cfq
3、临时生效的方法
#cat /sys/block/sda/queue/scheduler noop [deadline] cfq #echo cfq>/sys/block/sda/queue/scheduler #cat /sys/block/sda/queue/scheduler noop deadline [cfq]
CentOS7下默认的算法被调整为cfq了
4、永久生效的方法
CentOS 7.x
#grubby --update-kernel=ALL --args="elevator=deadline" #reboot #cat /sys/block/sda/queue/scheduler noop [deadline] cfq
或者使用vi编辑器修改配置文件,添加elevator= cfq
#vi /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet elevator=noop numa=off"
然后保存文件,重新编译配置文件
BIOS-Based: grub2-mkconfig -o /boot/grub2/grub.cfg UEFI-Based: grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
CentOS 6.x
vim /boot/grub/menu.lst 或vim /boot/grub/grub.conf
更改到如下内容
kernel /boot/vmlinuz.......... elevator=deadline rhgb quie