调整scheduler调度优化linux

CentOS 7.x 调整 I/O Scheduler(调度器)优化系统性能

服务器技术 2020-06-18 12:30:53 62

导读

LinuxI/O调度器(LinuxI/OScheduler)Linux内核中的一个组成部分,用户可以通过调整这个调度器来优化系统性能,LinuxI/O调度器(LinuxI/OScheduler)是LinuxI/O体系的一个组件,它介于通用块层和块设备驱动程序之间。目前Linux上有如下几种I/O调度算法1.noop(NoOperation)-通……

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


1253067 TFnetwork_cn