web-dev-qa-db-ja.com

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スケジューラを変更する別の method が表示されます。

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行に追加することを望んでいましたが、- this によると、そのようなカーネルパラメータはありません。私はこれができることを知っています:

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

例えば、私は再起動後も続く何かを望んでいました。これまでの最善の解決策は、そのechoコマンドをワンショットサービスに固定して、起動時に毎回実行されるようにすることですが、私はCentOS 6の解決策に似たよりクリーンな方法を望んでいました。

2
Levi Uzodike

少なくとも2つの方法があります。

  • right diskオプション でカスタム調整プロファイルを使用する
  • 「echo noop」コマンドを/etc/rc.localに挿入するか、特定のsystemdサービスを作成します。

EDIT:ここに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*);
  • allディスクに、何も指定しないことによって(上記のファイルに含まれているコメントのように)。
6
shodanshok