如何查看Linux中进程运行在哪个CPU上

 

一、taskset

如果一个进程被绑定在特定的CPU,可以使用taskset命令找到这个被绑定的CPU:

1
$ taskset -c -p <pid>

例如,对于一个PID 5357的进程:

1
2
$ taskset -c -p 5357
pid 5357's current affinity list: 5

 

命令输出显示这个进程是被绑定到CPU核心5了。
然而,如果没有绑定任何CPU,将会看到如下输出:

1
pid 5357's current affinity list: 0-11

 

表明这个进程有可能被调度到0-11的任何CPU核心上,这种情况下,taskset将无法判断进程是被运行在哪个CPU上了,只能使用下面的方法。

二、ps

ps命令能够显示出每个进程/线程被分配的CPU ID(“PSR”列)。

1
2
3
$ ps -o pid,psr,comm -p <pid>
PID PSR COMMAND
5357 10 prog

 

这个输出表明PID 5357进程(名字为prog)现在是运行在CPU核心10上。如果这个进程未被绑定CPU,则PSR列会根据被分配到的CPU随时间变化的。

三、top

top命令也可以显示一个进程被分配的CPU。首先,运行top -p PID,然后按f键,并且增加“Last used CPU”列。现在正在使用的CPU核心将会显示在“P”(”PSR”)列下。

1
$ top -p 5357

 

此处输入图片的描述
相对ps命令,top命令的优势是你可以连续监视CPU如何随时间变化的。

四、htop

还有一个查看进程/现场正在使用的CPU的方法是htop命令。
运行htop命令,然后按键,选中”Columns”,在”Available Columns”下增加”PROCESSOR”。
如下图”CPU”列就是进程被调用的CPU ID。
此处输入图片的描述

注意:之前的命令taskset/ps/top被分配CPU核心IDs从0到N-1,然而htop是从1到N。

 

参考文章原文地址

posted @ 2017-08-15 10:05  Cloud2020  阅读(1817)  评论(0)    收藏  举报