Ubuntu 16.04がすべてのドライブIOスケジューラーを「期限」に設定するのはなぜですか?


17

Xubuntu 16.04-64bitをラップトップの2番目のパーティションにインストールしました。時々少し遅いように思えたので、そのドライブに使用しているIOスケジューラーをチェックしましたdeadline。私はいくつかのSSDとハードドライブを持っているので、SSDとハードドライブには「期限」が最適であることを知っていcfqます。

別のパーティションで14.04を起動しcfq、回転ドライブとdeadlineSSD を使用しています。私も、/etc/udev/rules.d14.04がドライブの種類に合わせて構成するルールを使用しているかどうかを調べましたが、実際には存在しなかったため、カーネルがそれを実行していると想定しています。

だから私はこれがバグなのか、それともすべてに「期限」を使用しているのだろうかと思っています。

更新: /etc/udev/rules.dについて書いたコメントは間違いでした。実際、数年前にSSDの使用を開始して以来、ローデションタイプに応じてスケジューラを変更するためにudevルールを使用しています(答えは以下のとおりです)。忘れてしまった... とにかく、私が使用した参考文献の1つはDebian SSD最適化wikiでした。

それが含まれていたら、それは良い考えではないでしょうか?ただの提案!

回答:


6

14.04のリリースで、3.13カーネルのデフォルトスケジューラがCFQからDeadlineに変更されました

別個のサーバーカーネルはなくなり、CFQシェダーは、KVM書き込みタイムアウトなどの多くのサーバー使用シナリオに適していません。USBデバイスを使用したデスクトップでは、パフォーマンスの低下さえあります


1
読んでくれてありがとう。TWRPのSDカードやAndroidタブレットでよくあるUSBの問題。後者では、最後に数分間ハングします。KVMの問題は、SSD w / Deadlineにあるため、VBゲストには表示されません。
-curt54

32

Ubuntu Kernel Teamは、さまざまなファイルシステムおよびI / Oスケジューラでさまざまなシミュレートされたワークロードの分析を定期的に実行し、最適な汎用I / Oスケジューラの選択肢を見つけます。一般的な答えは、すべての異なる種類のメディアのすべての異なるタイプのインストールにわたる一般的な構成のための完璧なI / Oスケジューラーの選択はないということです。覚えておくべき重要なポイントは次のとおりです

  1. システムはSSDに移行しているため、これらには最適な期限または期限が最適です。noopは、デッドラインよりもCPUオーバーヘッドが少なくなります。

  2. CFQ vs Deadlineは難しい呼び出しです。CFQは柔軟性を高めます。ただし、シミュレートされたI / O操作のより広い範囲で、デッドラインはCFQよりもレイテンシが低く、スループットがわずかに高いことがわかりました。

  3. さまざまなファイルシステムとI / Oスケジューラのカーネルを定期的にベンチマークします(各カーネルテストの完了には3日以上かかります)。これおよびその他のさまざまなデータから、情報に基づいて最適な選択を決定しようとします。以下を参照してください。

http://kernel.ubuntu.com/~cking/fs-tests/

すべてのI / Oスケジューラには賛否両論があるため、デフォルトは完璧ではなく、Ubuntuカーネルチームは、説得力のあるデータと理由がそうでない場合に変更する必要がある場合、常にデフォルトの選択肢に入力します。


5
Ubuntu Zesty 4.10カーネルのデフォルトとしてCFQを使用するように移行し、新しいCONFIG_BLK_WBT_MQ(マルチキューライトバック調整)を有効にしました。これにより、フラッシュデバイスなどの低速デバイスでのダーティキャッシュライトバックの問題が解決されます。
コリンイアンキング

1
おそらく、カーネル4.12にあるBFQをデフォルトとして見るのでしょうか?
-JauntyDoe

4.12 / 4.13でこれを評価します。私もkyberでいくつかの初期テストを行いましたが、今週4.12がリリースされたら、これらを再検討します。
コリンイアンキング

原則として、この質問は16.04カーネルに関するものだけですが、まだ検索中に出てきます:-)。そこでここでは、より最近の更新です:UbuntuはUbuntuのでは、上流のデフォルトのマッチング、バックCFQに切り替えた17.04(ピリッ)スルー(宇宙)18.10
sourcejedi

1
さらなる更新:Linuxは、CFQまたはBFQを使用する場合(少なくともデフォルトでは)、WBTを無効にします。これは、WBTがうまく機能しないためです。2)WBTによって解決された問題を評価したい場合、問題はデバイス(ファームウェアが異なる)によって異なることに注意する必要があると思います。ベンチマークの結果では、どのタイプのデバイスが使用されたかさえわかりません。3)WBTが解決する内容の説明に興味があります。WBTパッチセットのv2のカバーレターを見ると、WBTは非常に深いキューを持つ可能性のある高速フラッシュでのバッファリングされた書き込みを処理するように設計されており、同じデバイスでリーダーが飢えないようにします。
sourcejedi

9

開発者がdeadlineデフォルトのスケジューラーとして選択した理由はわかりません。おそらく、ほとんどの新しいコンピューターにはSSDが付属しており、通常はシステムがインストールされているからです。まだインストールしていない場合は、この方法でスケジューラを手動で設定できます... install gksu

ターミナルを開いて実行します:

sudo apt install gksu  

次に、このコマンドを実行します。

gksudo gedit /etc/udev/rules.d/60-schedulers.rules  

次のテキストを空のファイルに貼り付けて、変更したファイルを保存します。

# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"  

オペレーティングシステムを再起動すると、HDDとSSDに最適なスケジューラが使用されます。


ええ、質問の私の更新に従って、これは私が使用していたものです。しかし、今日では両方のタイプのドライブを使用することが一般的であるため、すべてのLinuxディストリビューションにこのルールが含まれていると思います。
-curt54
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.