Linux中是否有一条命令可以知道加载进程的处理器号?


26

在给定一个进程的情况下,Linux中是否有任何命令可以找出该进程正在运行哪个处理器?我有兴趣弄清楚该处理器的CPU繁忙和CPU空闲时间。

Answers:


32

您可以使用该ps命令查询和显示活动的处理器。例如,您可以运行:

$ ps -aF
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root         1     0  0  5971  1764   1 Sep15 ?        00:00:01 /sbin/init
ubuntu   28903  2975  0  3826  1208   0 09:36 pts/0    00:00:00 ps -aF

PSR列显示init正在处理器1 ps上运行并且正在处理器0上运行。有关如何自定义显示字段的更多详细信息,请参见ps(1)联机帮助页

您可以配置图形工具htop来显示当前活动的处理器。此外,htop还有每个CPU负载的显示图,这可能是您想要的。例如,请参见http://htop.sourceforge.net/中的以下屏幕截图。

htop屏幕截图

最后,您可以使用该taskset工具强制对特定CPU的亲和力。


请记住(除非您使用任务集将亲和性设置为仅与一个CPU关联),否则在生成显示之前,此信息可能已过时,更不用说在阅读时。
杰米·汉拉汉

26

有很多方法可以找出答案。htop,顶部,ps。

停止

  • 测试版本:1.0.2
  • 网址:http//htop.sourceforge.net/

    1. 点击F2进入设置窗口
    2. 在“设置”列中选择“列”
    3. 转到可用列
    4. 添加处理器 htop选择处理器
    5. 检查CPU列 带cpu列的htop

最佳

  • 测试版本:procps 3.3.8
  • 网址:http//gitorious.org/procps

    1. 点击f进入“字段管理”窗口
    2. 选择P(上次使用的CPU)

这是最后一列的示例 P

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND   P 
 5626 yashi     20   0 1926276 545964  47596 R  12.6  3.4 151:10.81 gnome-sh+ 2 
 5347 root      20   0  384788  73600  55708 S   8.7  0.5  55:10.09 Xorg      1 
 8125 yashi     20   0  646240  30776  21928 S   4.3  0.2  23:06.20 gnome-sy+ 0 
 1785 yashi     20   0  581180  29288  15560 R   4.0  0.2   0:25.55 gnome-te+ 1

ps

PSR是显示处理器ID的代码。您可以像使用格式选项,ps -o pid,psr或干脆做ps -eF

$ ps -eF|head
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root         1     0  0  3817   964   0 Aug14 ?        00:00:02 init [2]  
root         2     0  0     0     0   2 Aug14 ?        00:00:00 [kthreadd]
root         3     2  0     0     0   0 Aug14 ?        00:00:11 [ksoftirqd/0]
root         5     2  0     0     0   0 Aug14 ?        00:00:00 [kworker/0:0H]
root         7     2  0     0     0   0 Aug14 ?        00:00:00 [migration/0]
root         8     2  0     0     0   0 Aug14 ?        00:00:00 [rcu_bh]
root         9     2  0     0     0   3 Aug14 ?        00:00:39 [rcu_sched]
root        10     2  0     0     0   0 Aug14 ?        00:00:00 [watchdog/0]
root        11     2  0     0     0   1 Aug14 ?        00:00:00 [watchdog/1]

1

我引用人ps的内容:

psr会告诉您正在运行或正在运行该进程的处理器。 pcpu会告诉您该进程消耗的cpu时间的百分比。

PS -eo PID,TID,类,rtprio,NI,PRI,PSRPCPU,STAT,WCHAN:14,COMM

ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm | tail
 9847  9847 TS       -   0  19   2  0.0 S    -              kworker/2:0
10061 10061 TS       -   0  19   2  0.6 Sl   futex_wait_que chrome
10208 10208 TS       -   0  19   3  0.0 S    -              kworker/3:3
10247 10247 TS       -   0  19   1  0.0 S    -              kworker/1:1
10381 10381 TS       -   0  19   1  4.6 Sl   futex_wait_que chrome
10452 10452 TS       -   0  19   0  0.0 S    -              kworker/0:1
10491 10491 TS       -   0  19   0  0.5 Sl   futex_wait_que chrome
10504 10504 TS       -   0  19   2  0.0 S    -              kworker/2:1
10505 10505 TS       -   0  19   0  0.0 R+   -              ps
10506 10506 TS       -   0  19   3  0.0 S+   pipe_wait      tail

BSD风格:

PS AXO统计,EUID,RUID,TTY,tpgid,SESS,PGRP,PPID,PID,PSRPCPU,COMM


这有点神秘。您能否扩大答案以详细说明这是什么以及如何使用它来解决问题? 来自审查
fixer1234
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.