CFS vs O(1)スケジューラー

Linuxの標準O(1)スケジューラーに加えて、 Ingo Molnarが取り組んでいるCFS(完全に公平なスケジューラー、「完全に公平なスケジューラー」)が登場したと多くの人が聞いたと思います。 実際、このノートをこれら2つのスケジューラーの比較と、主要なアルゴリズムの簡単なレビューに捧げたいと思います。 ノートの最後で、FreeBSDのULEスケジューリングについて少し読むことができます。



前文:





アンブル:

bsdのULEスケジューラの作成者であるJeff Roberson CFSについてどのようにコメントしているかについて、誰かがスラッシュドットに関する記事を見たかもしれません。



数百または数千の実行中のスレッドで作業していると想像してください。lognバイパスの場合のキャッシュミスは非常に高価になる可能性があります。 特に、非常に多くのスレッドを使用してはるかに多くのスケジューリングイベントが発生するため




実際、次のプロセスをツリーから抽出するには、再調整が必要になる場合があります。プロセスをツリーに挿入するには、単一のポリラインと再調整が必要になる場合があります。 しかし、この欠点は、 非常に大きな nでのみ現れます。これは、デスクトップではほとんど見られませんが、大きなワークステーションでは見られます。 ここから結論づけることができます:多数の同時実行プロセス/スレッドで動作するように設計された、ロードされたサーバー/ワークステーションおよび他のマシンにこのスケジューラをインストールすることは価値がありません。



しかし、この欠陥は次のように現れます。



Ingoによれば、実行中のタスク(タスク-プロセスまたはスレッド)が1000個あるため、システムはコンテキストスイッチングコンテキストスイッチング )のコストを20%増加させます。 これは10レベルのツリーです。 最悪の場合、さらに5つのレベルが追加され、値が30%増加する可能性があります。 致命的ではありませんが、良い行動とも呼ばれません。




O(1)スケジューラーの短所は、不十分で適切な「公平な」コアリバランスに起因します。 Ingo自身がこのコメントで言っていることは次のとおりです。



これを説明する最も簡単な方法は、簡単な例を使用することです。glxgearsを自分で実行すると、CPUの正確に50%を使用します。 SDスケジューラー(別名O(1)スケジューラー)を使用し、glxgearsとともにCPUホグを実行すると、両方のタスクがCPUリソースを共有します。 CPUホグはプロセッサ時間の約60%を取得し、glxgearsは40%を取得します。 CFSを使用すると、両方のタスクにプロセッサ時間の50%が割り当てられます。




CFSは、CPU時間をより適切に割り当て、コアの周りにタスクを分散します(個人的な実践によって証明されています)。

また、CFSの利点には、O(1)よりも応答時間が大幅に短いことが含まれます。 これは、Michael Piatrowskiによるテストで確認されています。 ここで結果を参照してください 。 したがって、CFSはデスクトップ上に安全にインストールでき、同時に実行されるプロセスの数は膨大です。



CFSの配置方法:



まず、CFSはバージョン2.6.20以降のカーネルで使用できます。

カーネルバージョン> = 2.6.20のパッチはこちらから入手できます

次に、Linuxソースがあるディレクトリに移動して、パッチを適用します。



#patch -p1 <sched-cfs-v2.6.2x.1-x.patch




また、CFSスケジューラーの開発用に別のgitリポジトリーが割り当てられています。 ここからリポジトリのクローンを取得できます



ULEについてのfw:



各CPUには、優先度によってインデックスが付けられた3つのキューがあります。 2つのキューは、割り込み、リアルタイム、タイムシェアリングなどのスケジューリングクラスを実装するために使用されます。 最後のキューは、アイドルクラスに使用されます。

キュースイッチングポリシーはO(1)shcedulerに似ています。 1つの行が空の場合、すぐに別の行に置き換えられます。 したがって、切り替え時間はプロセスのクラスに依存しません。

Jeffによると、ULEはSMPシステム上で柔軟かつ効果的なポリシーを使用し、CPU間でタスクを分散しています(cit。)「少なくとも完全に公平なスケジューラよりも公平です」。



ULEの詳細: ULE.pdfおよびこちら



実際、それはこのブログの最初のテストノートでした。 ここから読む人のためのいくつかの質問があります:CFSの実装についてもっと(もっと)もっと詳しく知りたいですか?将来英語のメモの文脈に挿入された引用を翻訳する価値がありますか?

ご清聴ありがとうございました。



All Articles