Fedora Workstation 29は、基本I/Oスケジューラとして何を使用しますか?

Fedora Workstation 29は、基本I/Oスケジューラとして何を使用しますか?

正しいブロックデバイスタイプによって異なる場合、各デバイスタイプのデフォルトI / Oスケジューラは何ですか?

背景情報

Fedora 29には、4.19シリーズのLinuxカーネルが含まれています。 (技術的には、初期バージョンは4.18シリーズカーネルを使用していましたが、4.19カーネルは一般的なソフトウェアアップデートでインストールされました。)

バージョン4.19以降、メインラインカーネルはCONFIG_SCSI_MQ_DEFAULTdefault yつまり、Fedora関連のパッチを適用せずにLinusからリリースされたツリーを使用すれば得られるのです。 SCSIおよびSATAデバイスは、デフォルトで新しいマルチキューブロック層を使用します。 (LinuxはSATAデバイスをSCSIとして扱い、SAT規格)。

これは古いコードを削除するための一時的なステップです。これで、すべての古いコードが削除されます。バージョンから4.215.0、4.20以降の次のカーネルバージョンです。

新しいMQシステムでは、ブロックデバイスは新しいI / Oスケジューラセットを使用します。これにはnone、、、mq-deadlineおよびが含まれますbfq。メインライン4.19カーネルでは、デフォルトのスケジューラ設定は次のとおりです。

/ * blk-mqデバイスの場合、デフォルトでは単一のキューデバイスにmq-deadlineを使用します(使用可能な場合)。締め切りが利用できない場合、または複数のキューがある場合、デフォルトはなしです。 */

代わりに、BFQをデフォルトとして使用することが提案されましたmq-deadline。この提案はバージョン 4.19 では許可されていません。

既存のSQブロック階層の場合、デフォルトのスケジューラはBFQに最も近いCFQです。

=>カーネルのデフォルトI / Oスケジューラは、SCSI / SATA、MMC / eMMCなどのデバイスタイプによって異なります。

CFQは、ある程度の「プロセス性」およびI / O優先順位の指定をサポートしようとします(ionice)。それはさまざまな複雑さで表示されます。 BFQはより複雑です。ionice特定のI / Oを自動的に分類し、優先順位を指定するヒューリスティックもサポートします。 deadlineスタイルディスパッチがより簡単です。ioniceまったくサポートされていません。

=> Linuxネイティブカーネル設定、SATAデバイス、およびその他のユーザースペースポリシー(ルールなしudev)を使用しているユーザーは、4.19で動作の変更を確認できます。一度効果があったのはioniceもう機能しません。

ただし、Fedoraには特定のカーネルパッチ/構成が含まれています。 Fedoraには、基本ルールなどのユーザースペースポリシーも含まれていますudev

Fedora Workstation 29は、基本I/Oスケジューラとして何を使用しますか?正しいブロックデバイスタイプによって異なる場合、各デバイスタイプのデフォルトI / Oスケジューラは何ですか?

答え1

Fedora 29が付属2016年4月18日コア。 CFQがデフォルト値のようです。

$ grep CONFIG_DEFAULT_IOSCHED= /boot/config-4.18.16-300.fc29.x86_64 
CONFIG_DEFAULT_IOSCHED="cfq"
$ grep CONFIG_SCSI_MQ_DEFAULT /boot/config-4.18.16-300.fc29.x86_64 
# CONFIG_SCSI_MQ_DEFAULT is not set
$ cat /sys/block/sda/queue/scheduler
noop deadline [cfq] 

この記事を書く時点(2018年11月24日)基準で、4.19.3F29のアップデートとして利用可能です。ただし、設定オプションは変更されていないようです。

4.20.0(RC1)は「Rawide」開発ツリーにあります。対応する開発ツリーカーネルでは、CFQはまだデフォルトで、CONFIG_SCSI_MQ_DEFAULTまだ設定されていません。 Fedora カーネルのリストは次の場所にあります。https://lists.fedoraproject.org/archives/list/[Eメール保護]/これが変わるべきかを議論するのに最適な場所です。

答え2

あなたの選択に役立つかもしれないいくつかの情報

私はBFQの著者の一人なので、ほとんど無関心です。 :) しかし、繰り返し可能なテストで得られた数値だけを報告します。

SDカード、eMMC、HDD、SATA SSD、NVMe SSDでBFQをテストしてきました。 HDDとSSDの場合は、シングルディスクとRAID構成を使用してテストしました。

スループットに関して、結果は次のように要約できます。 SDカード、eMMC、HDD(シングルおよびRAID)のスループットは低下しません。これと比較してHDDを使用すると、特定のワークロードで約20〜30%の利得が得られます。

SSDではスループット損失のみが発生

  • ランダム同期I / Oを使用する:平均SSDの場合は約2〜3%、非常に高速なNVMe SSDの場合は最大10〜15%。ワークロードはBFQを最も困難な条件にするように設計されているため、18%の損失を達成しましたが、[1]他のサードパーティのテストでは、最悪の損失は約10%でした。このペナルティは、主にBFQが最小I / Oスケジューラではないという事実によるものです。私たちはこの問題を解決するために一生懸命努力しています。これは簡単ではありません。このギャップを埋めるには時間が必要です。
  • 非常に速いSSDでのみI / O書き込み:約5〜10%。これはI / O要求タグの問題によるものです。私たちは解決策を見つけました。この問題は重要ではないと思うので、To Do Listの他の項目に優先順位を付けます。そうしないと、私たちは優先順位を変えることができます。

上記のオーバーヘッドにより、BFQは商用CPUで400-500 KIOPS以上を処理できません。

オーディオ/ビデオプレーヤーなど、時間に敏感なアプリケーションの応答性と待ち時間の点で、結果は他に類を見ません。たとえば、BFQアプリケーションは、バックグラウンドI / Oワークロードに関係なく、ドライブがアイドル状態のようにすばやく起動します。他のスケジューラを使用すると、アプリケーションが10倍長くなったり、まったく起動できなくなる可能性があります(バックグラウンドワークロードが終了するまで)[1]。

さらに、サーバーなどのワークロードの場合、BFQは、合計帯域幅に達したときに各クライアント(またはコンテナ、VM、またはストレージを共有する他の種類のエンティティ)に必要なI / O帯域幅の割合を保証できます。スループットは、I / O制御のための他のソリューションによって達成されたスループットと比較することはできません[2]。

最後に、一部の特定のワークロードについて質問がある場合は、喜んでテストします。

[1]http://algo.ing.unimo.it/people/paolo/disk_sched/results.php

[2]https://lwn.net/Articles/763603/

関連情報