LinuxスケジューラがプロセスがI / OバインディングかCPUバインディングかを確認する方法

LinuxスケジューラがプロセスがI / OバインディングかCPUバインディングかを確認する方法

これに追加質問、スケジューラは、プロセスがI/OバインディングかCPUバインディングかをどのように決定しますか?

ミスターラブが来ました記事、説明する

「スケジューラは複雑なアルゴリズムを使用して、最も実行する価値のあるプロセスを決定することがよくあります。」

この複雑なアルゴリズムは何ですか?

答え1

CPU集約プロセスは、CPUタイムスライスのすべてを使用した後にスケジューラによってプリエンプトされる可能性が高く、I / O集約プロセスはI / Oを実行してCPUタイムスライスを早期に解放する可能性が高くなります。プリエンプションに参加するスケジューラには、グルーミングプロセスのすべてのメトリックがあります。

答え2

詳細を知りたい場合は、ソースコードを確認してください。

一般に、計算集約型プロセスは、I / O集約型プロセスよりも全体の時間フラグメントを頻繁に使用します。完全な割り当てを使用せずに最近作成されたプロセスは、近い将来同じ作業を実行する可能性が高いと見なされ、それに応じてスケジュールされる可能性があります。

プロセスの実行中に動作が変更され、実際に変更されることを覚えておくことが重要です。過去のタイムスライスのメモリが消滅する期間は、ほとんどのスケジューラで調整できる重要なパラメータの1つです。

実際のスケジューラは、記録時間のフラグメントを使用する以上のものを考慮する必要があります。 「良い」値と他のプロセスをブロックするロックは、利用可能な他の情報の2つの例にすぎません。

関連情報