linux 编译指cpu内核,Linux 有问必答:如何知道进程运行在哪个 CPU 内核上?

news/2024/11/9 2:41:16/

问题:我有个 Linux 进程运行在多核处理器系统上。怎样才能找出哪个 CPU 内核正在运行该进程?

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNTA5LzI4LzEwNDM0N2w0dW1sdWFwbWM0dWNpdzQuanBn.jpg

当你在 多核 NUMA 处理器上运 行需要较高性能的 HPC(高性能计算)程序或非常消耗网络资源的程序时,CPU/memory 的亲和力是限度其发挥最大性能的重要因素之一。在同一 NUMA 节点上调度最相关的进程可以减少缓慢的远程内存访问。像英特尔 Sandy Bridge 处理器,该处理器有一个集成的 PCIe 控制器,你可以在同一 NUMA 节点上调度网络 I/O 负载(如网卡)来突破 PCI 到 CPU 亲和力限制。

作为性能优化和故障排除的一部分,你可能想知道特定的进程被调度到哪个 CPU 内核(或 NUMA 节点)上运行。

这里有几种方法可以 找出哪个 CPU 内核被调度来运行给定的 Linux 进程或线程。

方法一

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

$ taskset -c -p

例如, 如果你对 PID 5357 这个进程有兴趣:

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

输出显示这个过程被固定在 CPU 内核 5上。

但是,如果你没有明确固定进程到任何 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 PSR COMMAND

5357 10 prog

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

方法三

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

$ top -p 5357

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNTA5LzI4LzEwNDM1OXk0emk0eG9nZ294Y285cHguanBn.jpg

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

方法四

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

从命令行启动 htop。按 键,进入"Columns",在"Available Columns"下会添加 PROCESSOR。

每个进程当前使用的 CPU ID 将出现在“CPU”列中。

L3Byb3h5L2h0dHBzL2RuLWxpbnV4Y24ucWJveC5tZS9kYXRhL2F0dGFjaG1lbnQvYWxidW0vMjAxNTA5LzI4LzEwNDM1OWNkMzNrYmFqZ2djN2pqZzEuanBn.jpg

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

本文由 LCTT 原创编译,Linux中国 荣誉推出

获取Linux进程运行在哪个CPU内核上面的方法

首先,当某些时候,在一段程序或者借助第三方软件进行程序协助的时候,在性能的优化,以及程序bug的排除上面,可能会想知道该程序执行的进程被调度到了哪一个CPU内核进行工作,从而可以推断是否是受限于硬件还 ...

Linux 进程、线程运行在指定CPU核上

/******************************************************************************** * Linux 进程.线程运行在指定 ...

【linux】如何查看进程运行在那颗cpu上

这里介绍一种方法查看进程运行在哪个cpu上, 首先top 然后按字母:f 按字母:j 回车即可 其中P列表示进程运行在哪个CPU上

[转] linux 下查看一个进程运行路径的方法

http://blog.csdn.net/brioxu/article/details/5104736 在linux下查看进程大家都会想到用 ps -ef|grep XXX ps -aux | hea ...

Linux之统计特定进程运行数量

比如统计用户名为albert运行python的进程数目 ps -u albert | grep -c "python"

Linux 下查看某个进程运行的堆栈信息

1. 根据进程名称查询进程ID ps -ef | grep processName 2. 将进程的堆栈信息写入log gstack processId > s.log 3. 查看log vim ...

linux下面实时查看进程,内存以及cpu使用情况使用命令

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 可以直接使用top命令查看整体情况,如图: 但是这样虽然看的东西多,但是闲的比较 ...

Linux -- 进程或线程独占CPU

如果想让特定进程或线程独占某一或某些CPU,我们需要做三件事. 一,隔离CPU,避免其它线程run在被隔离的CPU上. 二,绑定所有的interrupts到非隔离的CPU上,避免被隔离的CPU收到in ...

linxu下查看进程的线程方法;如何知道某个进程或者线程运行在哪个CPU上?

1.top -H -p   ; top -H 在top命令后,按H键:或者top -H 2.ps -T -p “-T”选项可以开启线程查看 3.htop, ...

随机推荐

iOS开发中的错误整理,Changing the delegate of a tab bar managed by a tab bar controller is not allowed

iOS [错误:'Changing the delegate of a tab bar managed by a tab bar controller is not allowed.'] 错误:'Ch ...

细说SQL 连接

连接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定连接条件.WHERE和HAVING子句       也可以包含搜索条件,以进一步筛选连接条件所选的行.         ...

HTC T328W刷机包 仿三星S5 UI美化 精简 S5落下

ROM介绍 1.三星移植TouchWiz接口; 2.三星增加S4壁纸和图标美化; 3.正确ROM呈流线型; 4.正确ROM优化; 5.完成ROOT权限; 6.短信支持来信息亮屏功能(在短信设置里设置) ...

[转]ICE介绍 (RFC 5245)

[转]ICE介绍 (RFC 5245) http://blog.csdn.net/dxpqxb/article/details/22040017 1关于ICE的10个事实 1 ICE使用STUN和TU ...

2—ARM中的异常中断

ARM体系中的3种控制程序执行的方式 正常执行过程中,每执行1条ARM指令,PC的值加4个字节:每执行1条Thumb指令,PC的值加2个字节.整个过程按照顺序执行. 通过跳转指令,调到特定的地址开始执 ...

AJAX请求返回HTTP 400 错误 - 请求无效 (Bad request)

在ajax请求后台数据时有时会报HTTP400错误-请求无效(Badrequest);出现这个请求无效报错说明请求没有进入到后台服务里: 原因: 1)前端提交数据的字段名称或者是字段类型和后台的实体类 ...

oh-my-zsh: bracketed-paste-magic:zle:47: not enough arguments for -U

今天突然发现粘贴的时候就提示这个错误,通过查阅资料已经解决 解决方法 分析问题,是oh-my-zsh的bracketed-paste-magic功能出现了异常,并未找到更好的方法,暂时先禁用掉. 修改 ...

python set()、len()、type()、保留小数、EOFError

1.集合set() set()存的数据为不重复的,可以用此来过滤重复的元素.可以用&求两个set的交集 c = a&b,用|求两个set的并集 c = a | b 用for i in ...

Python3+smtplib+poplib+imaplib实现发送和收取邮件(以qq邮箱为例)

一.说明 1.1 程序说明 (1)smtp是邮件发送协议:pop和imap都是邮件接收协议,两者的区别通常的说法是imap的操作会同步到邮箱服务器而pop不会,表现上我也不是很清楚 (2)本程序实现使 ...

C++中怎么创建类对象

在C++里,有两种方法创建对象:方法一:ClassName object(param);这样就声明了一个ClassName类型的object对象,C++会为它分配足够的存放对象所有成员的存储空间.注意 ...


http://www.ppmy.cn/news/514762.html

相关文章

抢班夺权成新跳水王 三星S5周爆跌近2k

三星今年的首款旗舰手机GALAXY S5如期而至,相比上一代的GALAXY S4,正面外观变化不大,后盖采用类皮革质地的塑料材质,配置上搭载高通骁龙800处理器,最高主频2.5GHz,运行内存2GB,机身存储空间为16…

i9500android操作系统跑流量,三星I9500刷机包 百度云ROM54公测版 因为专注 所以精进...

三星Galaxy S4是三星电子在2013年推出的一款手机,搭载的是Exynos 5410双四核处理器,支持ARM的big.LITTLE Processing省电技术,是A7A15的组合(基于Cortex-A15架构,主频1.6GHz、基于Cortex-A7架构,主频1.2GHz。 GPU为Ima…

webpakc原理之开发一个清除console.log(xxx)的loader

一、webpack中清除console的方法 当然想要清除console我们可以使用babel-loader结合babel-plugin-transform-remove-console插件来实现。 安装babel-loader和babel-plugin-transform-remove-console插件 npm install babel-loader babel-plugin-transform-remove-console -D…

QQ自定义登录模拟器

QQ模拟登陆 - 安卓版 软件介绍:一款QQ号码模拟登录效果图生成软件,通过使用这款软件,您可以模拟任何QQ账号,得到您想要的QQ账号登录效果图,用法简单,安全可靠,欢迎下载使用。 ----- 下载地址&am…

QQ飞车回归入团

47541 1.活动时间:2022.12.08 00:00:00-2023.1.31 23:59:59。 2.活动规则: ①任何人皆可为团长,但参团人员必须为回归玩家,具体判断标准以游戏内荣耀回归身份为准 ②加入任意团队均需获得队长同意。 ③每人活动期间限定参团3次&…

qq飞车提示服务器未响应,Windows7系统玩qq飞车出现延迟的解决方法

qq飞车是一款竞速类休闲网络游戏,是许多玩家喜欢玩的一款游戏,然而近日有windows7旗舰版系统用户在玩qq飞车的时候,却出现延迟,影响了游戏体验,该怎么办呢,下面小编将给大家讲解一下Windows7系统玩qq飞车出…

部标JT808JT1078车载终端模拟器【2022版】

下载链接: https://pan.baidu.com/s/1dKpQgzVuMh5GiRBXBsxqwg?pwd9057 提取码:9057 功能特色: 1、支持JT808定位数据上报,支持JT808报文分析 2、支持JT1078-2016视频协议,可以上传实时视频流 3、支持苏标主动安全…

用这个在电脑上玩QQ飞车手游,效果简直秒杀安卓模拟器和手机

有人在电脑上玩QQ飞车手游吗?我能说用电脑大屏玩的效果秒杀手机吗?鼠标键盘操作简直不要太爽,有端游的感觉,话不多说,先上图看看游戏画质效果: 是不是超级清晰,感觉就像在玩端游一样。最主要是我…