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)
对我自己的回答:来自 Linux(以及 Mac 的自制程序)包 hwloc 的 hwloc-bind。比照。https://www.open-mpi.org/projects/hwloc/tutorials/20130115-ComPAS-hwloc-tutorial.pdf一些文档。
| 归档时间: |
|
| 查看次数: |
26509 次 |
| 最近记录: |