首页 > 系统服务 > 详细

怎样才能找出哪个 CPU 内核正在运行该进程?

时间:2017-11-14 17:07:38      阅读:368      评论:0      收藏:0      [点我收藏+]

当你在 多核 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>


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


    $ taskset -c -p 5357

    pid 5357‘s current affinity list: 5


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


但是,如果你没有明确固定进程到任何 CPU 内核,你会得到类似下面的亲和力列表。


    pid 5357‘s current affinity list: 0-11


输出表明该进程可能会被安排在从0到11中的任何一个 CPU 内核。在这种情况下,taskset 不能识别该进程当前被分配给哪个 CPU 内核,你应该使用如下所述的方法。


怎样才能找出哪个 CPU 内核正在运行该进程?

原文:http://13448167.blog.51cto.com/13438167/1981690

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!