获取Linux进程运行在哪个CPU内核上面的方法
首先,当某些时候,在一段程序或者借助第三方软件进行程序协助的时候,在性能的优化,以及程序bug的排除上面,可能会想知道该程序执行的进程被调度到了哪一个CPU内核进行工作,从而可以推断是否是受限于硬件还是受限于程序。下面有四种方法,查看进程具体运行的位置:
第一种:
taskset命令:
首先使用:ps -ef 查看系统具体进程情况:

我们想知道上面的chrome浏览器具体CPU内核情况:
使用如下命令:taskset -c -p <pid>
接下来输入:
taskset -c -p 6460
可以得到如下(本机是CPU核数为4核):

这是因为chrome进程并没有明确的被固定在某个CPU内核上,所以告诉我们,该进程可能被运行在0~3任何一个CPU内核之上。
如果,某个进程被明确固定了在某个CPU内核上,则会输出:
pid 6460's current affinity list: 2 (假设)
输出这个表明,该进程被固定在CPU内核2上
上面的第一种方法,使用taskset命令,对于进程没有固定在具体CPU内核上的时候,是无法得出该进程此时处于哪个CPU内核,我们可以采取第二种方法:
第二种:
使用命令: ps -o pid, psr, comm -p <pid>
该命令可以明确的告诉你线程或者进程此时所在CPU内核的 ID。
请看实例:
输入:
ps -o pid, psr, comm -p 6460

可以看到:进程的PID为6460此时在CPU内核2上面运行。(注意是“此时”,因为该进程没有被固定,所以会随着系统的调度而发生变化)
在第二种方法中,我们仅仅是可以查看该进程你查看时刻处于哪个CPU内核中,无法实时的看到随着系统调度,CPU内核的变化情况。如果需要看到实时的变化情况,可以使用第三种方法:
第三种:
使用命令:top
top 命令也可以显示 CPU 被分配给哪个进程。首先,在top 命令中使用“P”选项。然后按“f”键,显示中会出现 “Last used CPU” 列。
请看实例:
top -p 6460
我们可以监视到随着时间和系统调度的改变,CPU的自动分配情况是怎么样的
接下来,我们有时候需要查看CPU内核以及系统内存或者交换区的使用情况来对整体的负载进行判断,我们可以使用第四种方法:
第四种:
使用命令:htop
这个命令可以详细的列出计算机的各个CPU内核的使用百分比,以及内存的使用百分比,swap区域的使用百分比
请看实例:
输入:
htop

注意:这里看到上面CPU内核的使用情况是从 1~4,这个和上面三种方法从0~3是一样的,只是对应的起始编号不同。
获取Linux进程运行在哪个CPU内核上面的方法的更多相关文章
- Linux 有问必答:如何知道进程运行在哪个 CPU 内核上?
问题:我有个 Linux 进程运行在多核处理器系统上.怎样才能找出哪个 CPU 内核正在运行该进程? 当你在 多核 NUMA 处理器上运 行需要较高性能的 HPC(高性能计算)程序或非常消耗网络资源的 ...
- Linux 进程、线程运行在指定CPU核上
/******************************************************************************** * Linux 进程.线程运行在指定 ...
- Linux -- 进程或线程独占CPU
如果想让特定进程或线程独占某一或某些CPU,我们需要做三件事. 一,隔离CPU,避免其它线程run在被隔离的CPU上. 二,绑定所有的interrupts到非隔离的CPU上,避免被隔离的CPU收到in ...
- linux进程、线程与cpu的亲和性(affinity)
参考:http://www.cnblogs.com/wenqiang/p/6049978.html 最近的工作中对性能的要求比较高,下面简单做一下总结: 一.什么是cpu亲和性(affinity) C ...
- Linux 进程一直占用单核CPU分析
pidstat 1信息
- kali linux (Raspberry Pi 3b) 更新失败 出现上面的问题
Invalid signature for Kali Linux repositories : “The following signatures were invalid: EXPKEYSIG ED ...
- 获取Linux系统运行情况信息
代码: #include <stdio.h> #include <unistd.h> /* usleep() */ #include <stdlib.h> #inc ...
- 远程批量获取Linux和Windos操作系统版本(内核)
在不登录远程主机的情况下,可以查看远程主机的服务器操作系统版本(内核). 脚本执行前提: 1.拷贝check_snmp到脚本执行的主机中或在此主机中安装nagios; 2.保持list.txt中只有一 ...
- 获取所有栈的信息,只有最上面的和最下面的,但是不能获取栈中间的activity信息
直接在cmd窗口上输入 adb shell后,再输入dumpsys activity activities,可以看到所有的activity以及相关栈状态
随机推荐
- django修改admin密码
python manage.py shell 然后获取你的用户名,并且重设密码:from django.contrib.auth.models import User user = User.obje ...
- 在Ubuntu上安装Mysql For Python
安装: 首先安装pip,并且把pip更新到最小版本 apt-get install python-pip pip install -U pip 安装mysql开发包 apt-get install p ...
- 关键字sizeof---常年被人误认为函数
sizeof 是关键字不是函数, sample: int i=0; A) sizeof(int); B) sizeof(i); C)sizeof int; D)sizeof i; C) ...
- 10个顶级的CSS UI开源框架
随着CSS3和HTML5的流行,我们的WEB页面不仅需要更人性化的设计理念,而且需要更酷的页面特效和用户体验.作为开发者,我们需要了解一些宝贵的CSS UI开源框架资源,它们可以帮助我们更快更好地实现 ...
- Ajax的封装03
一.Ajax 1.原理:基于http协议的 内置对象:XMLHttpRequest 发起请求 那会相应 步骤: var xhr=new XMLHttpRequest(); // 请 ...
- Web API的Log问题
建立了一个Web API项目,在WebApiConfig.cs中已经启用了Tracing. config.EnableSystemDiagnosticsTracing(); 同时web.config中 ...
- LR自定义函数以及调用
2.2.自定义函数以及调用 2.2.1.虚拟用户编程,使用C# 语言DLL 在VS中建立DLL类库项目,编写函数时使用public声明:实现函数后编译生成DLL: 在LR中建立 .Net Vuser脚 ...
- c#判断闰年
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 签名 cd
http://blog.sina.com.cn/s/blog_618199e60101uc7w.html
- 树莓派 3 alsa 声卡驱动
/boot/config.txt dtparam=i2c_arm=on,audio=on