Ubuntu クラウドベース イメージ 14.04-1 LTS バージョンを実行している仮想マシンがいくつかあります。VM 上のさまざまな IO スケジューラの IO パフォーマンスを確認したかったので、ゲスト OS で に移動してIO スケジューラを変更しました。通常は、、、または を選択する/sys/block/<drive>/queue/scheduler
必要があります。しかし、表示されたのは です。これは、Canonical がクラウドベース イメージの I/O スケジューラを削除したということでしょうか、それともここでのスケジューラは名前が変更されたスケジューラでしょうか。また、システムに I/O スケジューラがない場合はどうなるでしょうか。すべての IO 要求は FIFO 順でホストに直接送信されましたか?cfq
deadline
noop
none
none
noop
光を当ててくれてありがとう!
答え1
低遅延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
は のエイリアスではないということですnoop
。none
は「スケジューラが使用されていない」ことを意味します。
答え2
カーネル3.13以降では、はもうnone
エイリアスではないようですnoop
。blk-mq
I/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 デバイスに最適です。