【发布时间】:2021-10-04 18:35:30
【问题描述】:
在多线程环境中,我想确切知道我的进程正在使用哪个处理器。
我查看了top和htop的源代码。 top/htop 的问题在于它获取总时间(来自 /proc/stat 和 /proc/[pid]/stat)并将其除以 CPU 数量,而与分配给其他处理器的负载无关。
如果理论上总 %CPU 为 350%,我们知道至少有 4 个处理器正在使用。上层对此进行了概括,并没有“准确”量化每个处理器的使用情况。
350% 有不同的含义:
Processor 1: 100%
Processor 2: 75%
Processor 3: 75%
Processor 4: 100%
Processor 1: 75%
Processor 2: 100%
Processor 3: 100%
Processor 4: 75%
/proc/[pid]/stat 给出了最后使用的处理器,但没有给出进程正在使用哪些处理器。
知道如何准确捕获进程正在使用的处理器吗?
我的最终目标是找出我的算法使用机器的效率。
【问题讨论】:
-
进程没有分配给特定的 CPU,它们可以随时移动。
-
所以当你得到答案时,它可能已经改变了。
-
维基百科:Processor affinity
标签: c++ linux linux-kernel operating-system