Linux

在 CentOS 7 中,有沒有辦法指定應該使用調度程序(或 ELEVATOR)調整哪些塊設備?

  • November 27, 2019

在 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 中那樣的解決方案,我可以在其中指定哪些塊設備將獲得ELEVATOR參數指定的 I/O 調度程序。我希望我可以將elevator_tune_devs參數添加到該GRUB_CMDLINE_LINUX行,但根據這個,沒有這樣的核心參數。我知道我可以這樣做:

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

例如,但我希望在重新啟動後能有一些東西。到目前為止最好的解決方案是將該echo命令粘貼在一次性服務中,以便每次啟動時都會執行它,但我希望有一種類似於 CentOS 6 解決方案的更簡潔的方法。

您至少有兩種方法:

**編輯:**在這裡你可以找到一個範例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*
  • 所有磁碟,不指定任何內容(如上面文件中包含的註釋)。

引用自:https://serverfault.com/questions/993402