Linux
在 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 調度程序的方法:將*
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 解決方案的更簡潔的方法。
您至少有兩種方法:
- 使用具有正確
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*
;- 到所有磁碟,不指定任何內容(如上面文件中包含的註釋)。