ノンストップジョブはCPU時間を消費しますか?

ノンストップジョブはCPU時間を消費しますか?

仮説

私の仮定は、私の理解に基づいて真実だと信じています。

  1. TASK_INTERRUPTIBLE および TASK_UNINTERRUPTIBLE 状態のジョブは「実行可能」ではありません。したがって、スケジューラが実行する次のタスクを選択するときは考慮されません(Linuxカーネル開発の第4章を参照)。
  2. TASK_UNINTERRUPTIBLEとTASK_INTERRUPTIBLEの唯一の違いは、SIGTERMなどの信号が電子に影響を与えないことです。
  3. これは、TASK_UNINTERRUPTIBLE / TASK_INTERRUPTIBLEがCPU時間をまったく消費しないことを意味します。

人々が何を言っているのか見る

  1. https://stackoverflow.com/questions/223644/what-is-an-uninterruptible-process
  2. https://superuser.com/questions/791840/how-can-a-process-in-interruptible-sleep-state-use-100-cpu

上記の2つのリンクの多くのコメント/回答は次のとおりです。

  1. TASK_UNINTERRUPTIBLE は SIGNAL (例: SIGTERM) の影響を受けません。
  2. 「高速」ディスクI / Oの場合(ttyなどの「遅い」I / Oとは異なります)のように、ジョブが完了するために実行する必要があり、中断しないでください。

1つの答え(2番目のリンク)だけがジョブが信号の影響を受けないため、「CPUが停止しているため」中断できないジョブがCPUを消費すると明示的に明示しています。

質問

  1. ノンストップジョブはCPUを消費しますか?
  2. これが本当なら、私の仮説と矛盾するのです。私の仮定のどれが間違っていますか?

ベストアンサー1

中断可能または中断不可能 省電力状態のジョブは優先省電力モードなので、お話したように実行が不可能で予約されていないため、CPUを消費しません。

topSU質問の混乱は、CPU使用率測定(他の場所)が時間間隔に基づいているのに対し、プロセスの状態は特定の時点で測定されるという事実から生じる可能性があります。したがって、技術的には、プロセスは最後の測定間隔の100%以上に予約されており、CPUを100%top(または複数の予約スレッドがある場合はそれ以上)消費しているように見えるかもしれませんが、まだノンストップ状態でtop状態を確認すると実行可能です。

おすすめ記事