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月、アンドレア・アルカンジェリは確率的公平キューイング(Stochastic Fair Queueing)I/Oスケジューラのアイデアをイェンス・アクスボーに提案し、アクスボーはそれを実装しました。イェンス・アクスボーは最初の実装に改良を加え、新バージョンを「完全公平キューイング(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)を実装しており、ユーザーはこれらを使用してプロセスごとのI/O優先度を設定できます。これらの優先度は通常、ionice(1)コマンドを使用して設定します(ただし、nice(1)コマンドを使用してもI/O優先度は多少変更されます)。
カーネル 2.6.18 (2006 年 9 月 20 日)
CFQは先行スケジューラに代わりデフォルトのスケジューラとなった。[ 3 ]
カーネル 5.0 (2019年3月3日)
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 のナレッジベースからのチューニングガイド