linux中的ps实用程序(procps),如何检查使用哪个CPU

问题描述 投票:0回答:4

它是关于 Linux 的

procps
软件包、实用程序
ps

可以打印每个进程(线程)最后使用的CPU数量吗?

更新:不是 CPU 时间(10 秒),而是 CPU 编号(CPU0、CPU5、CPU123)

linux ps procps
4个回答
30
投票

ps(1) 手册页显示您可以使用

psr
字段:

   psr        PSR     processor that process is currently assigned to.
$ ps -o pid,psr,comm
  PID PSR COMMAND
 7871   1 bash
 9953   3 ps

或者您可以使用

cpuid
字段,它具有相同的功能。

$ ps -o pid,cpuid,comm
  PID CPUID COMMAND
 7871     1 bash
10746     3 ps

使用两个名称的原因是为了与 Solaris (

psr
) 和 NetBSD/OpenBSD (
cpuid
) 兼容。

要也获取线程,请添加

-L
选项(如果您使用
lwp
,则添加
-o
字段)。

无螺纹:

$ ps -U $USER -o pid,psr,comm | egrep 'chromi|PID' | head -4
  PID PSR COMMAND
 6457   3 chromium-browse
 6459   0 chromium-browse
 6461   2 chromium-browse

带螺纹:

$ ps -U $USER -L -o pid,lwp,psr,comm | egrep 'chromi|PID' | head -4
  PID   LWP PSR COMMAND
 6457  6457   3 chromium-browse
 6457  6464   1 chromium-browse
 6457  6465   2 chromium-browse

还有一个未记录的

-P
选项,它将
psr
添加到正常字段:

$ ps -U $USER -LP | egrep 'chromi|PID' | head -4
  PID   LWP PSR TTY          TIME CMD
 6457  6457   3 ?        00:01:19 chromium-browse
 6457  6464   1 ?        00:00:00 chromium-browse
 6457  6465   2 ?        00:00:00 chromium-browse

4
投票

多处理器中的哪一个?根据联机帮助页,它没有提供此选项。但在我的 Debian 稳定系统上它接受未记录的

-o cpu


查看源代码和
ps L
的输出后,我相信您的答案是
cpuid
sgi_p
输出选项,分别是列 ID CPUID 和 P。
并且“cpu”应该根据output.c中的注释工作,但它目前与“nop”输出pr_nop()相关联:

{"cpu",       "CPU",     pr_nop,      sr_nop,     3,   0,    BSD, AN|RIGHT}, /* FIXME ... HP-UX wants this as the CPU number for SMP? */


4
投票

也被低估了:

mpstat -I ALL 1 | less -SR

您可以添加迭代计数(例如

mpstat 1 1
仅表示一次迭代)。

要仍然有彩色终端输出,请告诉

mpstat
:

S_COLORS=always mpstat -I ALL 1 | less -SR


3
投票

我在 Arch 上这样做了,它可能会帮助那里的人:

ps -C "process" -L -o pid,lwp,pcpu,cpuid,time
  • -C:选择名为“process”的进程
  • -L:列出进程线程
  • -o:指定输出信息
    • pid:进程ID
    • lwp:轻量级进程(线程)
    • pcpu:CPU 使用率(百分比)
    • cpuid:CPU id
    • time:线程时间(从开始算起)
© www.soinside.com 2019 - 2024. All rights reserved.