本教程操作环境:linux7.3系统、dell g3电脑。
linux怎么查看进程在哪个cpu上方法一:使用top命令
top 命令可以显示进程在哪个cpu上运行,可以连续监视随着时间的改变,该进程运行在哪个cpu上是否发生变化。
使用步骤:
top -p [进程号],例如 top -p 3000
按下"f"键,使用上下键选择p = last used cpu,并按下空格键,出现 “*”即代表选中,再按“q"退出。
方法二:使用taskset命令
taskset可以查看具体某一进程(或 线程)运行在哪个cpu上,也可以使某个程序运行在某个或某些cpu上
taskset 参数选项:
(1)-p, --pid :操作现有的pid,不启动新任务
(2)-c, --cpu-list :指定处理器的数字列表,而不是位掩码。列表可以包含多个项目,以逗号和范围分隔。例如,0、5、7、9 - 11。
1)显示进程运行的cpu: -p参数
例子1:
[root@localhost ~]# taskset -p 21184
显示结果:
pid 21184’s current affinity mask: ffffff
注:21184是进程编号。显示结果的ffffff实际上是二进制24个低位均为1的bitmask,每一个1对应于1个cpu,表示该进程在24个cpu上运行。
例子2:
[root@localhost ~]# taskset -p 2030
显示结果:
pid2030’s current affinity mask: f
注:说明sshd在4颗cpu上随机进行切换。
例子3:
[root@localhost ~]# taskset -p 2726
显示结果:
pid 2726’s current affinity mask: 3
注:显示的十进制数字3转换为2进制为最低两个是1,每个1对应一个cpu,所以进程运行在2个cpu上。
*注意:*cpu的标号是从0开始的,所以cpu1表示第二个cpu(第一个cpu的标号是0)。
关于换算方式
8个核心的cpu id: 7 6 5 4 3 2 1 0
对应10的十进制数位: 128 64 32 16 8 4 2 1
十六进制的16个数是:0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f
对应每一个16进制的二进制位:0=0000,1=0001,2=0010,3=0011,4=0100,5=0101,6=0110,7=0111,8=1000,9=1001,a=1010,
b=1011,c=1100,d=1101,e=1110,f=1111
那么例如出现pid 8987’s current affinity mask: ff ff是16进制,转换二进制:11111111,意思就是sshd在8个cpu上进行却换!所以对应每一个数值!
比如说16进制的40,那么转换二进制01000000,意思就是在第7块cpu上运作
推荐学习:linux视频教程
以上就是linux怎么查看进程在哪个cpu上的详细内容。
