我的系统是网络设备,它使用 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
。