Completely Fair Queuing ( CFQ ) は、 2003 年にJens Axboeによって書かれたLinux カーネルのI/O スケジューラです。[1]
説明
CFQ は、プロセスによって送信された同期要求をプロセスごとのキューに配置し、各キューがディスクにアクセスするためのタイムスライスを割り当てます。タイムスライスの長さとキューが送信できる要求の数は、特定のプロセスの I/O 優先度によって異なります。すべてのプロセスの非同期要求は、優先度ごとに 1 つずつ、より少数のキューにまとめられます。CFQ は明示的な予測I/O スケジューリングは行いませんが、同期 I/O の終了時にプロセス キューをアイドル状態にして、そのプロセスからのさらに近い I/O を「予測」することで、システム全体の総合スループットを向上させるという同じ効果を実現します。これは、プロセスに I/O タイムスライスを許可することの自然な拡張と見なすことができます。
歴史
統合前
2003 年 2 月、Andrea Arcangeli は、 Stochastic Fair Queueing I/O スケジューラのアイデアを Jens Axboe に提案し、Jens Axboe はそれを実装しました。Jens Axboe は最初の実装を改良し、新しいバージョンを Completely Fair Queueing スケジューラと呼び、それを 2.5.60 開発シリーズ カーネルに適用するパッチを作成しました。
カーネル 2.6.6 (2004 年 5 月 10 日)
CFQ I/O スケジューラは、オプションの I/O スケジューラとして最初にメインライン カーネルに統合されました。カーネルの 'elevator' パラメータを使用して、ブート時にスケジューラを変更することが可能でした。
カーネル 2.6.9 (2004 年 10 月 19 日)
Red Hat Enterprise Linux 4は、2.6.9ベースのカーネルを使用していたにもかかわらず、このI/Oスケジューラをデフォルトとして使用していました。[2]
カーネル 2.6.10 (2004 年 12 月 24 日)
CFQ スケジューラの 2 番目のリリースである CFQv2 が 2.6.10 に含まれています。改善点には、応答性の向上と、以前のバージョンに存在していた一部のスタベーション問題の解消が含まれます。スケジューラは、sysfsファイルシステムの /sys/block/<block_device>/queue/scheduler 変数を変更することで、実行時に切り替えられるようになりました。
カーネル 2.6.13 (2005 年 6 月 27 日)
CFQ スケジューラは、CFQv3 と呼ばれる新しいタイムスライス設計に移行しました。特に、ioprio_get(2) と ioprio_set(2) を実装しており、これにより、ユーザーは、通常は ionice(1) コマンドを使用して、プロセスごとの I/O 優先度を設定できます (ただし、nice(1) を使用すると、I/O 優先度が多少変更されることもあります)。
カーネル 2.6.18 (2006 年 9 月 20 日)
CFQは先行スケジューラに代わってデフォルトのスケジューラとなった。[3]
カーネル 5.0 (2019-03-03)
CFQは削除されました。[4] [5] CFQはBudget Fair Queueing (BFQ)に進化しました。[6] [7]
参照
参考文献
- ^ 「IO スケジューラのソースコード (ヘッダーに著作権情報が含まれています)」。2017 年12 月 28 日閲覧。
- ^ D. John Shakshober (2005 年 6 月)。「Red Hat® Enterprise Linux® 4 および 2.6 カーネル用の I/O スケジューラの選択」。Red Hat マガジン。2007 年 8 月 27 日時点のオリジナルよりアーカイブ。2011年11 月 20 日閲覧。
- ^ Jens Axboe (2006 年 6 月). 「Linux カーネル 2.6.18 - CFQ をデフォルトの IO スケジューラにする」 . 2016 年3 月 20 日閲覧。
- ^ Jens Axboe (2018-10-12). 「block: レガシー IO スケジューラを削除する」 。2020年 10 月 25 日閲覧。
- ^ Linus Torvalds (2018-12-28). 「git.kernel.dk/linux-block のタグ 'for-4.21/block-20181221' をマージ」 。2020-10-25閲覧。
- ^ 「Budget Fair Queueing I/O Scheduler」。
- ^ 「BFQ I/O スケジューラが Linux 4.12 用にキューに追加されました - Phoronix」。www.phoronix.com。
出典
- CFQ についての簡単な詳細(ここからアーカイブ)
- 2.6.10 で登場
外部リンク
- Linux ソースコードからの CFQ のドキュメント
- CFQ - RedHat のナレッジベースからのチューニング ガイド
