プロセス情報にCPU使用率/時間が表示されないのはなぜですか?

プロセス情報にCPU使用率/時間が表示されないのはなぜですか?

に電話するとtop%CPUTIME+が固定されて更新されないように見えます。代わりに、プロセスリストの最初の数行は常に次のようになります。

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0   49364   9168   5720 S   0,0  0,1   0:00.07 systemd
    2 root      20   0       0      0      0 S   0,0  0,0   0:00.00 kthreadd
    3 root      20   0       0      0      0 S   0,0  0,0   0:00.00 ksoftirqd/0
    4 root      20   0       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0
    5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H
    6 root      20   0       0      0      0 S   0,0  0,0   0:00.00 kworker/u24:0
    7 root      20   0       0      0      0 S   0,0  0,0   0:00.00 rcu_sched
    8 root      20   0       0      0      0 S   0,0  0,0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S   0,0  0,0   0:00.00 rcuos/0

特に、すべてのプロセスsystemd常に0:00.07 TIME +の同じ定数値を表示する最初のプロセス()を除いて、0.0%CPUと0:00.00 TIME +を表示します。再起動後も。 CPU使用率の上部の要約行が正常に更新されているようです。

私はそれを見て/proc/(pid)/stat、内容を正しく理解した場合、これが実際にそこに保存された情報であることを確認しました。たとえば、5814が私が開始した長期実行プロセスのPIDである場合:

$ cat /proc/1/stat | cut -f15 -d" "
7
$ cat /proc/5814/stat | cut -f15 -d" "
0

私はすべての最新アップデートを含むKorora(Fedora)23を使用しており、カーネルバージョン4.7.6を実行しています。

この動作の原因は何であり、この問題をどのようにデバッグできますか?

ベストアンサー1

top(1) は、最初に CPU 使用率に基づいてソートされた実行中のプロセスを表示し、次に PID に基づいてソートされたスリーププロセスでテーブルを入力します。

systemd(8) は init(8) のバリエーションで、おそらく起動後に多くのことをしないでしょう。起動時に70ミリ秒のCPU使用率が発生する可能性があります。 initプロセス(PID = 1)は、システムが稼働しているときにアクティブな状態を維持すること以外に他の目的はありません。

私のsystemd(8)は、125日12時間CPU 2:25.72を使用したため、非常に遅く更新されました。

このリストの残りのプロセスはいくつかのLinux関連プロセスであり、メモリをまったく使用しないことがわかります。

おすすめ記事