8

它是关于procps包,psLinux 的实用程序。

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

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

4

4 回答 4

25

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
于 2011-04-20T21:31:41.833 回答
4

多个处理器中的哪一个?根据手册页,它没有提供选项。但在我的 Debian 稳定系统上,它接受未记录的-o cpu


在查看源代码和 的输出之后ps L,我相信您的答案是cpuidsgi_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? */

于 2011-04-20T14:49:56.947 回答
3

也被低估了:

mpstat -I ALL 1 | less -SR
于 2011-04-20T21:40:12.557 回答
3

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

ps -C "process" -L -o pid,lwp,pcpu,cpuid,time
  • -C:选择名为“进程”的进程
  • -L:列出进程线程
  • -o : 指定输出信息
    • pid : 进程号
    • lwp:轻量级进程(线程)
    • pcpu : CPU 使用率(百分比)
    • cpuid : CPU 编号
    • time:线程时间(从开始)
于 2018-09-05T20:15:51.127 回答