为什么进程信息中没有显示 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

尤其,所有流程显示 0,0 %CPU 和 0:00.00 TIME+,除了第一个进程 ( systemd),它始终显示相同的不变值 0:00.07 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 的东西,您会注意到它们甚至不使用任何内存。

相关内容