判断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)。

[转帖]判断Linux进程在哪个CPU核运行的方法的更多相关文章

  1. Linux进程线程学习笔记:运行新程序

    Linux进程线程学习笔记:运行新程序                                         周银辉 在上一篇中我们说到,当启动一个新进程以后,新进程会复制父进程的大部份上下 ...

  2. 有趣的taskset命令,使进程再指定CPU上运行

    前言 taskset命令,用于进程的CPU调优,可以把某进程,指定再某CPU内工作. 如还不明白,可以参考此文 http://www.361way.com/linux-context-switch/5 ...

  3. Win7下判断当前进程是否以管理员身份运行

    判断当前程序是否以管理员身份运行,代码如下: #include <iostream> #include <windows.h> using namespace std; // ...

  4. 查看进程中占cpu高的线程方法

    当在任务管理器中发现有进程占用cpu过高的时候通过下面的指令将进程快照导出到c盘 jstack -l 进程PID > c:/进程PID.stack  (此命令生成.stack文件在c盘中,用文本 ...

  5. Linux下查看所有CPU核心使用率的方法

    两种方法: 1.方法一: sar -P ALL 查看历史CPU使用率: sar -f /var/log/sa/sa01 2.方法二: mpstat -P ALL

  6. 判断当前进程是否以管理员权限运行(AllocateAndInitializeSid后,用CheckTokenMembership与AdministratorsGroup进行比较,和Delphi的那个例子还有点不一样)

    在Win7下(Vista以上的...)有时某些操作就是会让人郁闷 开启了UAC的话,得以管理员权限运行才不会出现Access is denied... 但是,程序又不是非得什么时候都用那破管理员权限的 ...

  7. linux进程、线程与cpu的亲和性(affinity)

    参考:http://www.cnblogs.com/wenqiang/p/6049978.html 最近的工作中对性能的要求比较高,下面简单做一下总结: 一.什么是cpu亲和性(affinity) C ...

  8. linux进程的几种状态

    Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态. Linux进程状态:R (TASK_RUNNING),可执行状态. 只有在该状 ...

  9. 转 Linux进程状态分析

       众所周知,现在的分时操作系统能够在一个CPU上运行多个程序,让这些程序表面上看起来是在同时运行的.linux就是这样的一个操作系统.在linux系统中,每个被运行的程序实例对应一个或多个进程.l ...

随机推荐

  1. JSP大文件分片上传

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  2. ajax+批量下载文件

    用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个php文件夹上传下载的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助.此控件PC全平台支持包括mac,li ...

  3. BZOJ 4562: [Haoi2016]食物链 拓扑排序

    建反图,跑一个拓扑排序dp即可. Code: #include <bits/stdc++.h> #define ll long long #define N 100005 #define ...

  4. 【csp模拟赛3】组合数学

    思路: 先排序,取最大的在剩余左边任意找k-1个数,所以是排列组合,费马小定理求逆元,预处理阶乘,注意要取模.. 代码: #include<cstdio> #include<iost ...

  5. 我理解的windows中断管理

    只谈外部中断的windows内核管理,异常和trap不在此文的讨论之列. 1. windows中断总貌 在windows中,物理上的中断源被抽象为KINTERRUPT结构.一个中断源在windows中 ...

  6. Elasticsearch删除数据之_delete_by_query

    es参考版本:elasticsearch:5.5 _delete_by_query会删除所有query语句匹配上的文档,用法如下: curl -X POST "localhost:9200/ ...

  7. 第11组 Alpha冲刺(2/6)

    第11组 Alpha冲刺(2/6)   队名 不知道叫什么团队 组长博客 https://www.cnblogs.com/xxylac/p/11860949.html 作业博客 https://edu ...

  8. Flume-Replicating Channel Selector 单数据源多出口

    使用 Flume-1 监控文件变动,Flume-1 使用 Replicating Channel Selector 将变动内容传递给 Flume-2,Flume-2 负责存储到 HDFS.同时 Flu ...

  9. 怎么去检测浏览器支不支持html5和css3?

    HTML5, CSS3 以及其他相关技术例如 Canvas.WebSocket 等等将 Web 应用开发带到了一个新的高度. 该技术通过组合 HTML.CSS 和 JavaScript 可以开发出桌面 ...

  10. 数据分析 - seaborn 模块

    seaborn 模块 简述 对 matplotlib 模块进行了二次封装, 底层依旧使用还是 matplotlib 的, 但是在此基础上增加了很多的易用性模板, 更加方便使用 引用使用 import ...