Как узнать, на каком ядре запущен процесс? - PullRequest
4 голосов
/ 11 сентября 2010

В настоящее время я работаю над проектом по настройке процесса на одно ядро ​​в среде Linux. Я использую sched_setaffinity для выполнения этой работы, и мне интересно, есть ли какие-нибудь функции, предоставляемые linux, чтобы узнать, на каком ядре выполняется процесс. Я использую команду top и могу найти эту информацию, используя опцию j. Поэтому я уверен, что есть несколько способов получить эту информацию в пространстве пользователя.

Ответы [ 2 ]

5 голосов
/ 11 сентября 2010

Вы, вероятно, хотите sched_getcpu(). Если вы используете старую версию glibc, вы можете прочитать 39-е поле /proc/[pid]/stat для соответствующего pid - см. Справочную страницу proc(5) для более подробной информации.

1 голос
/ 11 сентября 2010

Для этого можно использовать встроенную сборку (на арке 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

...