<i id='ndlwz'></i>

    <code id='ndlwz'><strong id='ndlwz'></strong></code>

    <acronym id='ndlwz'><em id='ndlwz'></em><td id='ndlwz'><div id='ndlwz'></div></td></acronym><address id='ndlwz'><big id='ndlwz'><big id='ndlwz'></big><legend id='ndlwz'></legend></big></address>
      <fieldset id='ndlwz'></fieldset>
        <ins id='ndlwz'></ins>

      1. <dl id='ndlwz'></dl>
      2. <tr id='ndlwz'><strong id='ndlwz'></strong><small id='ndlwz'></small><button id='ndlwz'></button><li id='ndlwz'><noscript id='ndlwz'><big id='ndlwz'></big><dt id='ndlwz'></dt></noscript></li></tr><ol id='ndlwz'><table id='ndlwz'><blockquote id='ndlwz'><tbody id='ndlwz'></tbody></blockquote></table></ol><u id='ndlwz'></u><kbd id='ndlwz'><kbd id='ndlwz'></kbd></kbd>
      3. <span id='ndlwz'></span>

            <i id='ndlwz'><div id='ndlwz'><ins id='ndlwz'></ins></div></i>

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

            • 时间:
            • 浏览:10
            • 来源:124软件资讯网

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

                pid 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

                相比于 ps 下令  ,使用 top 下令的利益是  ,你可以一连监视随着时间的改变  , CPU 是怎样分配的 。

                要领四

                另一种来检查一个历程/线程当前使用的是哪个 CPU 内核的要领是使用 htop 下令  。

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

                每个历程当前使用的 CPU ID 将泛起在“CPU”列中 。

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