第3章 ディスクスケジューラーの設定
ディスクスケジューラーは、ストレージデバイスに送信された I/O 要求を順序付けます。スケジューラーは以下の複数の方法で設定できます。
- TuneD を使用したディスクスケジューラーの設定 の説明に従って、TuneD を使用してスケジューラーを設定します。
-
udevルールを使用したディスクスケジューラーの設定 の説明に従って、udevを使用してスケジューラーを設定します。 - 特定のディスクのスケジューラーを一時的に設定する の説明に従って、実行中のシステムのスケジューラーを一時的に変更します。
Red Hat Enterprise Linux では、ブロックデバイスはマルチキュースケジューリングのみをサポートします。これにより、ブロックレイヤーのパフォーマンスを高速ソリッドステートドライブ (SSD) およびマルチコアシステムで適切に拡張できます。
3.1. 利用可能なディスクスケジューラー リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux では、次のマルチキューディスクスケジューラーがサポートされています。
none- FIFO (First-in First-out) スケジューリングアルゴリズムを実装します。これにより、汎用のブロック層で単純な last-hit キャッシュを介して要求がマージされます。
mq-deadlineリクエストがスケジューラーに到達した時点から、リクエストに対して保証されたレイテンシーを提供するよう試みます。mq-deadline スケジューラーは、キューに追加された I/O リクエストを読み取りまたは書き込みバッチに分類し、論理ブロックアドレス指定 (LBA) の昇順で実行するようにスケジュールします。デフォルトでは、アプリケーションは読み取り I/O 操作でブロックする可能性の方が高いため、読み取りバッチの方が書き込みバッチより優先されます。mq-deadline はバッチを 1 つ処理した後、書き込み操作にどれくらいの期間プロセッサー時間が割り当てられていないかを確認し、次の読み取りまたは書き込みバッチを適切にスケジュールします。
このスケジューラーはほとんどのユースケースに適していますが、必要に応じて特に書き込み動作より読み取り動作の方が頻繁に起こるユースケースに適しています。
bfqデスクトップシステムおよび対話式のタスクを対象とします。
bfqスケジューラーは、単一のアプリケーションがすべての帯域幅を使用しないようにします。これにより、ストレージデバイスがアイドル状態であるかのように常に応答できるようになります。デフォルトの設定では、bfqは、最大スループットを実現するのではなく、レイテンシーを最小限に抑えることに焦点を合わせています。bfqはcfqコードに基づいています。一定のタイムスライスごとにディスクを各プロセスに付与するのではなく、セクター数単位で測定されたバジェットをプロセスに割り当てます。このスケジューラーは大きなファイルをコピーする際に適しており、この場合、システムが応答しなくなることはありません。kyber- スケジューラーは、ブロック I/O レイヤーに送信されたすべての I/O 要求のレイテンシーを計算することで、レイテンシーゴールを達成するために自身を調整します。cache-misses の場合、読み込み/同期書き込みリクエストにターゲットレイテンシーを設定できます。このスケジューラーは、NVMe、SSD などの低レイテンシーデバイスなど、高速なデバイスに適しています。
- デフォルトのディスクスケジューラー
- ブロックデバイスは、別のスケジューラーを指定しない限り、デフォルトのディスクスケジューラーを使用します。
特に Non-Volatile Memory Express (NVMe) ブロックデバイスの場合、デフォルトのスケジューラーは none であり、Red Hat はこれを変更しないことを推奨しています。
カーネルは、デバイスのタイプに基づいてデフォルトのディスクスケジューラーを選択します。自動的に選択されたスケジューラーは、通常、最適な設定です。別のスケジューラーが必要な場合は、udev ルールまたは TuneD アプリケーションを使用して設定してください。選択したデバイスを一致させ、それらのデバイスのスケジューラーのみを切り替えます。