在 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 调度程序:
添加
elevator
GRUB_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*
:); - 到全部磁盘,不指定任何内容(如上面的文件中包含的注释)。