查看 Linux 进程运行所在 CPU 内核

判断进程运行在哪个 CPU 内核上

作者:Dan Nanni

译者:LCTT

| 2015-09-28 10:43

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

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

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

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

方法一 taskset 命令

如果一个进程使用 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 内核,你应该使用如下所述的方法。

方法二 ps 命令

ps 命令可以告诉你每个进程 / 线程目前分配到的 (在 “PSR” 列)CPU ID。

$ ps -o pid,psr,comm -p <pid>
  PID PSR COMMAND
 5357  10 prog

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

方法三 top 命令

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

$ top -p 5357

img

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

方法四 htop 命令

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

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

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

img

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


Linux htop 命令

译者: LCTT runningwater

| 2014-06-03 14:00

在 Linux 系统中,top 命令用来显示系统中正在运行的进程的实时状态,它显示了一些非常有用的信息,比如 CPU 利用情况、内存消耗情况,以及每个进程情况等。

还有另外一个命令行工具 htop,它与传统的 top 命令功能一样,但它有更加强大的功能及能显示更多的信息。这篇文章,我们会用实例来讨论这个 htop 命令。

Linux 中的 htop 命令

下面是从 htop 的手册页摘抄下来的相关描述:

它类似于 top 命令,但可以让你在垂直和水平方向上滚动,所以你可以看到系统上运行的所有进程,以及他们完整的命令行。

可以不用输入进程的 PID 就可以对此进程进行相关的操作 (killing, renicing)。

首先明白它的输出

htop 命令以直观的格式来显示信息。下面是 HTOP 的输出快照:

htop

htop

如果你观察窗口的左上角部分,你会看到显示的是 CPU 负载、内存消耗及交换空间的实时信息,右上角包含的是任务、线程、平均负载及系统运行时间的信息。

平均负载部分提供了三个数字,这仅仅表示的是过去的 5 分钟、10 分钟和 15 分钟系统的平均负载而已,在单核的系统中,平均负载为 1 表示的是百分之百的 CPU 利用率。最后,运行时间 (uptime)标示的数字是从系统启动起到当前的运行总时间。

下面,我们将用例子来进一步讨论这个命令。

1. 用 F2 键编辑配置

htop 命令提供了许多自定义选项,你所要做的就是从主窗口中按下 F2 键。

下面所示的是可用的自定义选项:

htop-settings

htop-settings

只需使用箭头键选择和更改特定的设置。

2. 通过 F9 键发送信号

htop 命令可以让你很容易地在 htop 窗口内给一个进程发送任意的信号。按下 F9 键即可。

signals

signals

如你所见,窗口的左边部分列出的是所有可用的信号,右边部分列出的是进程。只要选中信号,并选择一个进程,然后按下 enter 键,选中的信号就会发送到此进程。

3. 显示进程的树状视图

htop 命令也提供了进程的树状视图查看功能。按下 F5 键切换。

下面是 htop 显示树形视图信息的例子:

treeView

treeView

要退出树状视图模式,请再一次按下 F5 键。

4. 通过 F3 键搜索进程

htop 命令提供了易用的方式来搜索进程。按下 F3 键,一个文本框就会出现在窗口底部。

下面是例子:

search

search

如您所见,一条名为‘搜索’的文本提示框出现在窗口底部,您可以在这儿输入进程的名字然后回车搜索。如果找到,它会在列出的进程列表里高亮选中此进程。

5. 通过空格键来设置颜色标注进程条目

在系统中运行着的实时进程视图中,要追踪某个进程是个大问题。因为整个列表在不停的刷新着,进程的排列顺序也在变动着。为了这个问题, htop 提供了一个很简单的解决方案:颜色标注。是的,你可以标注一个进程条目,它会以不同的颜色显示,因此要追踪它就变得容易了。

要标注某个进程条目,需要做的就是选中此条目,然后按下‘空格’键。例如,在下面的截图示例中,我已经颜色标注了三个进程条目:

color-tag

color-tag

所以通过此方法,你就能很轻松地追踪想查看的进程。

6. 命令行选项

除了上面介绍的一些热键,htop 还提供了很有用的命令行选项。下面是其中一部分:

--s 选项: 按指定的列排序。例如,htop -s PID命令会按 PID 列的大小排序来显示。
--u 选项: 显示指定的用户的进程信息列表。例如,htop -u himanshu命令会只显示出用户名为 himanshu 的相关进程。
--d 选项: 设置刷新的延迟时间。例如,htop -d 100命令会使输出在 1 秒后才会刷新(参数 -d 的单位是 10 微秒)。


via:

http://ask.xmodulo.com/cpu-core-process-is-running.html

作者:Dan Nanni 译者:strugglingyouth 校对:wxy

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

http://linoxide.com/linux-command/linux-htop-command/

译者:runningwater 校对:Caroline

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值