繁体   English   中英

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

[英]How could I know which core a process is running on?

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

你可能想要sched_getcpu() 如果您正在运行旧版本的glibc,则可以阅读/proc/[pid]/stat的第39个字段以获取相应的pid - 有关详细信息,请参阅proc(5)手册页。

您可以使用内联汇编(在x86 arch上)来实现此目的:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM