Linux:如何知道哪些进程固定在哪个核心上?

dar*_*uma 10 linux cpu process-management high-performance

有没有办法知道哪些内核当前有一个进程固定在它们上面?

甚至其他用户运行的进程也应列在输出中。

或者,是否可以尝试将进程固定到核心,但如果所需的核心已经固定了一个进程,则可能会失败?

PS:感兴趣的进程必须将 bin 固定到给定的核心,而不仅仅是当前在给定的核心上运行

PS:这不是重复,另一个问题是如何确保一个进程独占一个CPU。这里我们问的是如何检测一个进程是否被固定到给定的核心(即使用了cpuset,而不是如何使用它)。

Ped*_*dro 17

在正常情况下,Linux 进程不会明确地固定到给定的核心,通常没有理由这样做,但这是可能的。

您可以taskset使用带有“psr”字段的 ps来管理进程关联,或查看当前哪个进程在哪个 CPU 上运行。

检查进程 27395 的当前 CPU 关联性:

$ ps -o psr 27395
PSR
  6
Run Code Online (Sandbox Code Playgroud)

检查进程 27395 的关联列表:

$ taskset -pc 27395
pid 27395's current affinity list: 0-7
Run Code Online (Sandbox Code Playgroud)

设置进程 27395 与 CPU 3 的关联性

$ taskset -pc 3 27395
pid 27395's current affinity list: 0-7
pid 27395's new affinity list: 3
Run Code Online (Sandbox Code Playgroud)

检查进程 27395 的当前 CPU 关联性:

$ ps -o psr 27395
PSR
  3
Run Code Online (Sandbox Code Playgroud)

要检查是否有任何进程固定到任何 CPU,您可以循环遍历您的进程标识符并taskset -p针对它们运行:

$ for pid in $(ps -a -o pid=); do taskset -pc $pid 2>/dev/null; done
pid 1803's current affinity list: 0-7
pid 1812's current affinity list: 0-7
pid 1986's current affinity list: 0-7
pid 2027's current affinity list: 0-7
pid 2075's current affinity list: 0-7
pid 2083's current affinity list: 0-7
pid 2122's current affinity list: 0-7
pid 2180's current affinity list: 0-7
pid 2269's current affinity list: 0-7
pid 2289's current affinity list: 0-7
pid 2291's current affinity list: 0-7
pid 2295's current affinity list: 0-7
pid 2300's current affinity list: 0-7
pid 2302's current affinity list: 0-7
pid 3872's current affinity list: 0-7
pid 4339's current affinity list: 0-7
pid 7301's current affinity list: 0-7
pid 7302's current affinity list: 0-7
pid 7309's current affinity list: 0-7
pid 13972's current affinity list: 0-7
Run Code Online (Sandbox Code Playgroud)

  • “没有理由这样做”。原因之一:提高并行程序的性能。 (2认同)
  • 是的,我有时不得不将 procs 固定到给定的 CPU。例如在多个 proc 竞争 CPU 时间时减少上下文切换。或者避免与 NUMA 打交道。 (2认同)

dar*_*uma 0

对我自己的回答:来自 Linux(以及 Mac 的自制程序)包 hwloc 的 hwloc-bind。比照。https://www.open-mpi.org/projects/hwloc/tutorials/20130115-ComPAS-hwloc-tutorial.pdf一些文档。