在 CentOS 7 中,有没有办法指定应该使用调度程序(或 ELEVATOR)进行调整的块设备?

在 CentOS 7 中,有没有办法指定应该使用调度程序(或 ELEVATOR)进行调整的块设备?

在 CentOS 6 中,有/etc/tune-profiles/my-server/ktune.sysconfig这样的文字(我指的是解释代码正在做什么的注释):

# This is the I/O scheduler ktune will use.  This will *not* override anything
# explicitly set on the kernel command line, nor will it change the scheduler
# for any block device that is using a non-default scheduler when ktune starts.
# You should probably leave this on "deadline", but "as", "cfq", and "noop" are
# also legal values.  Comment this out to prevent ktune from changing I/O
# scheduler settings.
ELEVATOR="deadline"

# These are the devices, that should be tuned with the ELEVATOR
ELEVATOR_TUNE_DEVS="/sys/block/{sd,cciss,vd,dasd,xvd}*/queue/scheduler"

但 CentOS 7 似乎已经落后了ktune。我看到了一个替代方案方法更改默认 I/O 调度程序:

添加elevatorGRUB_CMDLINE_LINUX文件中行的参数/etc/default/grub

# cat /etc/default/grub
...
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=vg00/lvroot rd.lvm.lv=vg00/lvswap elevator=noop"
...

诸如此类。但这将是系统范围的改变。我正在寻找一个像我在 CentOS 6 中遇到的解决方案,在那里我可以指定哪些块设备将获得由参数指定的 I/O 调度程序ELEVATOR。我希望我可以将参数添加elevator_tune_devs到行中GRUB_CMDLINE_LINUX,但根据,没有这样的内核参数。我知道我可以这样做:

echo 'noop' > /sys/block/hda/queue/scheduler

例如,但我希望重启后仍能继续运行。目前最好的解决方案是将该echo命令放在一次性服务中,这样每次启动时都会运行,但我希望有一种类似于 CentOS 6 解决方案的更简洁的方法。

答案1

你至少有两种方法:

  • 使用自定义调整配置文件正确的disk选择
  • 插入“echo noop”命令/etc/rc.local或创建特定的 systemd 服务。

编辑:您可以在此处找到示例tuned.conf文件:

# tuned configuration

[main]
summary=ZFS General non-specialized tuned profile
include=balanced

[disk]
# Comma separated list of devices, all devices if commented out.
type=disk
devices=sda,sdb
elevator=noop

正如我上面链接的 RHEL 调整指南中所述,您可以通过不同的方式来定义设备列表:

  • 通过逗号分隔列表(如上例所示);
  • 通过通配符(例如sd*:);
  • 全部磁盘,不指定任何内容(如上面的文件中包含的注释)。

相关内容