アイドルCPUプロセスは何をしますか?

アイドルCPUプロセスは何をしますか?

ソースを見てstraceCLONE_IDLETASK次のように説明されたcloneフラグの使用が見つかりました。

#define CLONE_IDLETASK 0x00001000 /* kernel-only flag */

もっと深く掘り下げて、このフラグはカバーされていませんが、man clone起動中にカーネルが実際にマシンの各CPUのアイドルプロセスを生成するために使用されることを発見しました(すべてPIDは0でなければなりません)。つまり、8つのCPUを持つシステムには、これらのプロセスが「実行中」(引用符を参照)以上7つ(以下の質問を参照)があります。

これで、「アイドル」プロセスが実際に実行する操作についていくつかの質問が発生します。私の仮定は、時間範囲が終わるまで継続的にNOP操作を実行し、カーネルが実行する実際のプロセスを割り当てるか(CPUが使用されていない場合)、アイドルプロセスを再割り当てすることです。しかし、これは完全に推測です。だから:

  1. 8つのCPUを搭載したシステムで7つのアイドルプロセスが作成されますか? (そして、1つのCPUは、ユーザースペース操作を実行していない間にカーネル自体が占めるのでしょうか?)

  2. アイドルプロセスは実際にはNOPタスクの無限の流れに過ぎませんか? (または同じことを行うループ)。

  3. CPU使用量(例uptime:)は、単にCPUでアイドルプロセスが実行された時間と、特定の期間にアイドルプロセスが存在しなかった時間として計算されますか?


PSこの問題は、CPUの動作方法を完全に理解していないために発生したようです。つまり、アセンブリ、期間、および割り込みを理解していますが、たとえば、CPUが実行しているタスクに応じて、エネルギーをより多くまたは少なく使用できるかどうかはわかりません。誰でも私に気付くことができればとても感謝します。

ベストアンサー1

アイドル操作は、プロセス統計とエネルギー消費を削減するために使用されます。 Linuxでは、各プロセッサに対してアイドルタスクが作成され、そのCPUで他のプロセスが実行されない限り、そのプロセッサに固定されます。アイドル操作にかかる時間は、次の変数で測定されますtop。 (稼働時間は異なって計算されます。)

Unixには常に一種のアイドルループがあるようです(しかし、必ずしも実際のアイドル操作ではありません)。ザイルズの答え)、さらにはV1でもWAIT命令を使用する割り込みが発生するまでプロセッサを停止します(「割り込み待ち」を示します)。他のオペレーティングシステムでは、使用中のループ、DOS、オペレーティングシステム/2、特に古いバージョンのWindows。 CPUは、エネルギー消費と発熱を減らすために、長い間この「待機」コマンドを使用してきました。次のアイドル操作のさまざまな実装を見ることができます。arch/x86/kernel/process.cLinuxカーネルの場合:デフォルトでは、以下を呼び出します。HLT割り込みが発生するまでプロセッサを停止してC1スリープモードを有効にしますが、他の実装ではさまざまなバグや非効率性を処理します(例えばMWAIT一部のCPUでは代わりに使用されますHLT)。

これはすべて、イベント(I / Oなど)を待っているプロセスのアイドル状態とは全く異なります。

おすすめ記事