に電話するとtop
、%CPU
列TIME+
が固定されて更新されないように見えます。代わりに、プロセスリストの最初の数行は常に次のようになります。
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関連プロセスであり、メモリをまったく使用しないことがわかります。