判断Linux进程在哪个CPU核运行的方法

 

原文网址:http://www.embeddedlinux.org.cn/html/xinshourumen/201601/30-5013.html

问题:有一个Linux进程运行在多核处理器系统上,如何查看该进程运行在哪个CPU上?

方法一:

如果一个进程使用taskset命令明确的被固定(Pinned)到CPU的特定内核上,你可以使用taskset命令找出被固定的CPU内核:

taskset -c -p <pid>

例如,如果你对PID为5357的进程感兴趣,你可以使用如下命令来查看其运行在哪个CPU上:

taskset -c -p 5357

运行结果:pid 5357's current affinity list:5,输出显示这个进程被固定在5号CPU上。但是,如果你没有明确固定该进程到任何CPU上,你会得到类似下面的亲和力列表:

pid 5357's current affinity list:0-11,输出表明该进程可能会被安排在从0到11中的任何一个CPU上。在这种情况下,taskset不能识别该进程当前被分配给哪个CPU,你应该使用下面的方法。

方法二:

ps 命令可以告诉你每个进程/线程目前分配到的(在“PSR”列)CPU ID。

ps -o pid,psr,comm -p <pid>

运行结果:

PID PSR COMM

5357  10  prog

输出表示进程的 PID 为 5357(名为”prog”)目前在编号为 10的CPU 上运行着。如果该过程没有被固定,PSR 列会根据内核可能调度该进程到不同CPU而改变显示。

方法三:

top 命令也可以显示CPU被分配给哪个进程。首先,在top命令中使用"P"选项。然后,按“F”键,显示中会出现“Last used CPU”列。目前使用的CPU将出现在"P"(或“PSR”)列下。

步骤如下:

1、top -p 3393

2、按下 “F”键

3、使用上下键选择P = Last Used Cpu,并按下空格键,出现 “*”即可

4、按下“Q”键

相比于ps命令,使用top命令的好处是:你可以连续监视随着时间的改变,CPU是如何分配的。

方法四:

另一种来检查一个进程/线程当前使用的是哪个CPU的方法是使用 htop 命令。

从命令行启动htop。按“F2”键,进入“Columns”,在“Available Columns”下添加PROCESSOR,按“F10”保存,每个进程当前使用的CPU ID将出现在CPU列中。

请注意,所有以前使用的命令 taskset,ps 和 top 分配CPU 内核的 IDs 为 0,1,2,…,N-1。然而,htop 分配 CPU 内核 IDs 从 1开始(直到 N)。

最新文章

  1. Power BI for Office 365(六)Power Map简介
  2. [No000023]为何没有更多人从事程序员的工作?程序员常有,优秀程序员不常有!
  3. 【leetcode】Rotate List(middle)
  4. SQlserver 行转列
  5. Python 虚拟环境:Virtualenv
  6. iMAC——关闭自动弹出手机照片
  7. 让BOOTSTRAP默认SLIDER支持触屏设备
  8. HTTP的一些基础知识
  9. 代码收藏 JS实现页内查找定位功能
  10. groovy学习(二)map
  11. 项目架构开发:数据访问层之UnitOfWork
  12. homebrew &amp; brew cask使用技巧及Mac软件安装
  13. sleep,yield,wait,notify,notifyAll
  14. es6-promise源代码重点难点分析
  15. 使用PageHepler分页
  16. Hibernate 二(一级缓存,多表设计之一对多)
  17. spring cloud心跳检测自我保护(EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY&#39;RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.)
  18. better-scroll项目中遇到的问题
  19. [MySQL5.6] 最近对group commit的小优化
  20. Web 数据源

热门文章

  1. Verilog从文件读数据
  2. BZOJ 3931: [CQOI2015]网络吞吐量 Dijkstra+最大流
  3. 《30天自制操作系统》学习笔记--Mac环境搭建
  4. 刚注册blog,先来刷个存在
  5. UVA 796 Critical Links —— (求割边(桥))
  6. Oracle用户被锁解决方法
  7. KERNEL_SECURITY_CHECK_FAILURE
  8. Flutter移动电商实战 --(4)打通底部导航栏
  9. mongodb的更新操作符
  10. docker内时间问题