`ps -o pcpu` 显示 CPU 使用率非常低

`ps -o pcpu` 显示 CPU 使用率非常低

ps -o pcpu必须显示真正过时的 CPU 使用情况:

user@comp:~/acr/bin$ ps -o pid,pcpu,comm k-pcpu -u `whoami` | head

  PID %CPU COMMAND
 3709 34.7 R
15292 34.4 R
 3603 33.8 R
 3593 33.1 R
 3864 33.1 R
 3833 32.8 R
 3623 32.4 R
 3723 32.3 R
 3809 32.3 R

当前使用量为零。显示top了一些很小的百分比,但实际上这些进程现在只是在等待用户输入:

user@comp:~/acr/bin$ top

top - 21:39:03 up 55 days,  6:01,  4 users,  load average: 0.89, 0.79, 0.81
Tasks: 648 total,   2 running, 646 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.5 st
KiB Mem : 23920025+total, 19068168+free, 43706008 used,  4812568 buff/cache
KiB Swap:  8265724 total,  8232252 free,    33472 used. 19399897+avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 8431 user      20   0  778708 293092  13932 S   2.3  0.1  54:05.37 R
 8504 user      20   0  765680 279928  13904 S   2.3  0.1  47:20.29 R
 9217 user      20   0  766256 280460  13884 S   2.3  0.1  48:35.28 R
12921 user      20   0  763716 278040  13924 S   2.3  0.1  34:58.31 R
12998 user      20   0  765096 279276  13892 S   2.3  0.1 129:13.39 R
13026 user      20   0  764736 280960  13884 S   2.3  0.1 130:57.73 R
13093 user      20   0  765824 280056  13884 S   2.3  0.1  22:41.56 R
13208 user      20   0  765696 279884  13920 S   2.3  0.1  39:41.12 R
13325 user      20   0  776420 290744  13912 S   2.3  0.1  35:56.80 R
13832 user      20   0  765244 279424  13888 S   2.3  0.1 128:38.19 R

显示ps超过 30% - 这必须在至少 24 小时的大得离谱的时间窗口内完成,因为这些进程至少在过去 12 小时内没有处理任何内容!在此之前,他们的工作率是100%。

问题:

  1. 问题出在哪里——是不是有什么bug?
  2. 如何让它显示当前的使用情况?

我的系统是 CentOS Linux 版本 7.6.1810(核心),位于 32 CPU 虚拟机上。

答案1

man ps 谈到 %CPU 时说:

目前,它是使用的 CPU 时间除以进程已运行的时间(cputime/realtime 比率),以百分比表示。

因此,自从该过程开始以来,它就是历史性的。

顶部显示每个延迟时间片中的值。

top 有一个 -b (批处理)选项,它以文本形式输出报告,而不是使用 ncurses。您可以从中选择您想要的内容,并适当考虑 -d 和 -n 选项。

相关内容