如何监控超线程 CPU 的 CPU 线程上运行的进程?

如何监控超线程 CPU 的 CPU 线程上运行的进程?

我的系统是网络设备,它使用 Intel 超线程处理器并运行 Centos Linux。我可以看到 /proc/cpuinfo 有 2 个处理器,我假设它们实际上是 2 个 CPU 线程,而不是 2 个 CPU 核心。

现在,当我运行“top”时,我可以看到在两个 CPU 线程上运行的所有进程。我的问题是,如何监控仅在 1 个 CPU 线程上运行的进程?

按“1”可以显示更多 CPU 信息

%Cpu(s):  2.4 us,  1.4 sy,  0.0 ni, 96.0 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st

%Cpu0  :  3.1 us,  0.7 sy,  0.0 ni, 95.8 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  1.7 us,  2.4 sy,  0.0 ni, 95.6 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st

因此看起来 top 确实分解了 CPU 线程,但我不知道如何让它按每个或 1 个 CPU 显示进程。

答案1

ps -o pid,sgi_p,cmd -p [pid](对于特定的pid)或ps -eo pid,sgi_p,cmd(对于所有pid的)将显示哪些特定处理器进程pid正在运行或者*进程是否既未运行也不可运行(但请记住处理器分配可能是暂时的)。

一个更有用的ps例子(有很多输出)可能是:

ps -eo pid,ppid,nlwp,tid,user,group,sgi_p,pcpu,pmem,stat,wchan:32,start,cputime,tty,cmd

查看ps下的手册页STANDARD FORMAT SPECIFIERS

相关内容