Ubuntuクラウドベースのイメージ14.04-1 LTSバージョンを実行している仮想マシンがいくつかあります。 IOさまざまなパフォーマンスIO上のスケジューラーVMで確認したので、/sys/block/<drive>/queue/scheduler
ゲストOSでIOスケジューラーを変更します。通常、cfq
、deadline
、またはnoop
を選択する必要があります。しかし、私が見たのはnone
です。Canonicalが削除したということですか?クラウドベースのイメージのI/Oスケジューラまたはスケジューラnone
は、名前が変更されたnoop
スケジューラですか?システムにI/Oスケジューラがない場合はどうなりますか?すべてのioリクエストは直接ホストに送信されました= FIFO注文?
光を当ててくれてありがとう!
this Debian Wiki から:
低遅延IOスケジューラ
(この手順は、SATAの代わりにNVMeプロトコルを使用するSSDでは必要ありません。SSDは、従来のI/Oスケジューラをバイパスして
blk-mq
モジュールの代わりに。)デフォルトのI/Oスケジューラーはデータをキューに入れ、SSDには不要なHDDでのシークを最小限に抑えます。したがって、
"deadline"
バルクトランザクションが小さなトランザクションの速度を落とさないようにするだけのスケジューラー:sysfsutils
をインストールし、echo "block/sdX/queue/scheduler = deadline" >> /etc/sysfs.conf
(SSDに合わせてsdXを調整)再起動または
echo deadline > /sys/block/sdX/queue/scheduler
したがって、答えは次のとおりです。none
はnoop
のエイリアスではありません。 none
は、「スケジューラーが使用されていない」ことを意味します。
カーネル> = 3.13ではnone
はnoop
のエイリアスではなくなったようです。 blk-mq
I/O framework が使用されているときに表示されます。 blk-mq
には(現時点では)選択するスケジューラがまったくないため、これは古いスケジューラを完全にバイパスすることを意味します。
以前のカーネルでは、none
は実際にはnoop
の不十分な文書化されたエイリアスです。詳細は here を参照してください。
Noneはnoopのエイリアスではありません。
使用中のスケジューラがないため、何も表示されません。 SATAの代わりにNVMeプロトコルを使用するSSDは、従来のI/Oスケジューラーをバイパスします。
ゲストVMには、ハイパーバイザーによって提供される仮想I/Oデバイスがあります。したがって、実際のI/Oデバイススケジューリングはハイパーバイザーカーネルによって実行され、ゲストはすべてのデバイスI/Oをスケジューリングせずに直接ハイパーバイザーに渡します。
https://wiki.ubuntu.com/Kernel/Reference/IOSchedulers
none(マルチキュー)マルチキューの何もしないI/Oスケジューラー。リクエストの並べ替えを行わず、オーバーヘッドを最小限に抑えます。 NVMEなどの高速ランダムI/Oデバイスに最適です。