我怎么知道一个进程正在运行的核心?

我目前正在开发一个关于在linux环境下将进程设置为一个核心的项目。 我使用sched_setaffinity来完成这项工作,我想知道是否有一些由linux提供的函数来获取进程运行的核心。 我使用顶级命令,并发现它可以得到这个信息使用j选项。 所以我相信有一些方法可以在用户空间获得这个信息。

Solutions Collecting From Web of "我怎么知道一个进程正在运行的核心?"

你可能想要sched_getcpu() 。 如果您运行的是旧版本的glibc,则可以阅读/proc/[pid]/stat的第39个字段以获取适当的pid – 请参阅proc(5)手册页以获取更多详细信息。

您可以使用内联汇编(在x86架构上)来实现这一点:

 mov eax, 1 ; cpuid functionality depends on the value of eax cpuid ; get cpu info shr ebx, 24 ; ebx[31:24] is the cpu ID. mov eax, ebx ; eax contains the cpu ID 

你可以在这里阅读更多有关CPUID指令的信息http://download.intel.com/design/processor/applnots/24161832.pdf