我目前正在研究一个关于在 linux 环境中将进程设置为一个核心的项目。我使用 sched_setaffinity 来完成这项工作,我想知道 linux 是否提供了一些函数来获取进程在哪个内核上运行。我使用 top 命令并发现它可以使用 j 选项获取此信息。所以我确信有一些方法可以在用户空间中获取这些信息。
问问题
2575 次
2 回答
5
你可能想要sched_getcpu()
. 如果您运行的是旧版本的 glibc,您可以阅读第 39 个字段以/proc/[pid]/stat
获取适当的 pid——proc(5)
有关更多详细信息,请参见手册页。
于 2010-09-11T14:45:59.393 回答
1
您可以使用内联汇编(在 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
于 2010-09-11T16:15:27.653 回答