低遅延IOスケジューラ

低遅延IOスケジューラ

Ubuntu クラウドベース イメージ 14.04-1 LTS バージョンを実行している仮想マシンがいくつかあります。VM 上のさまざまな IO スケジューラの IO パフォーマンスを確認したかったので、ゲスト OS で に移動してIO スケジューラを変更しました。通常は、、、または を選択する/sys/block/<drive>/queue/scheduler必要があります。しかし、表示されたのは です。これは、Canonical がクラウドベース イメージの I/O スケジューラを削除したということでしょうか、それともここでのスケジューラは名前が変更されたスケジューラでしょうか。また、システムに I/O スケジューラがない場合はどうなるでしょうか。すべての IO 要求は FIFO 順でホストに直接送信されましたか?cfqdeadlinenoopnonenonenoop

光を当ててくれてありがとう!

答え1

からこのDebian Wiki:

低遅延IOスケジューラ

(SATA ではなく NVMe プロトコルを使用する SSD の場合、この手順は必要ありません。これらの SSD は、従来の I/O スケジューラをバイパスして、blk-mq代わりにモジュールを使用します。)

デフォルトのI/Oスケジューラは、HDDのシークを最小限に抑えるためにデータをキューに入れますが、これはSSDには必要ありません。したがって、"deadline"大量のトランザクションが小さなトランザクションを遅くしないようにするだけのスケジューラを使用してください。インストールしsysfsutils

echo "block/sdX/queue/scheduler = deadline" >> /etc/sysfs.conf

(SSDに合わせてsdXを調整してください)再起動または

echo deadline > /sys/block/sdX/queue/scheduler

したがって、答えは、noneは のエイリアスではないということですnoopnoneは「スケジューラが使用されていない」ことを意味します。

答え2

カーネル3.13以降では、はもうnoneエイリアスではないようですnoopblk-mqI/Oフレームワーク使用中です。これは、blk-mq選択できるスケジューラが (現時点では) まったくないため、古いスケジューラが完全にバイパスされることを意味します。

以前のカーネルでは、noneは の別名ですが、あまり文書化されていませんnoopここ詳細については。

答え3

None は noop のエイリアスではありません。

スケジューラが使用されていないため、何も表示されません。SATA ではなく NVMe プロトコルを使用する SSD は、従来の I/O スケジューラをバイパスします。

答え4

https://wiki.ubuntu.com/Kernel/Reference/IOSchedulers

none (マルチキュー) マルチキューの no-op I/O スケジューラ。リクエストの並べ替えは行わず、オーバーヘッドは最小限です。NVME などの高速ランダム I/O デバイスに最適です。

関連情報