获取线程最后调度的CPU /核心

时间:2012-11-16 13:01:18

标签: c linux pthreads

我的应用程序中有许多活动线程,我有pthread_t个ID,如果需要可以获取其他ID。这些存储在一个单独的数组中。

如何确定从另一个线程调用特定线程当前正在运行的CPU(或最近运行的那个)的ID /编号。

sched_getcpu(2)仅适用于调用线程,pthread_getaffinity_np仅为我提供允许的cpu掩码。 /proc同样无用,只给我一个整个过程的CPU ID。

我需要这个来调试/调整NUMA感知代码。

1 个答案:

答案 0 :(得分:2)

至少在Lnux上,你可以通过调用tid获得每个线程的gettid()

然后通过读取/proc/<pid>/task/<tid>/stat中的第39个元素来查找CPU ID。

(其中pid通过getpid()

读取

另见: