Рассчитать загрузку процесса в гиперпоточном станке - PullRequest
1 голос
/ 04 января 2012

Я пытаюсь рассчитать загрузку процесса на моей машине с помощью Intel Hyper-Threading.

У меня есть одна проблема при попытке выполнить вычисление:

Я считаю циклы моего процессаделает, когда работает один на физическом ядре и подсчитывает его, когда другой процесс (идентичный) работает на другом логическом ядре (то же физическое ядро).

Я вижу, что разница в количестве цикловпроцесс делает.Я предполагаю, что это связано с тем фактом, что я работаю на гиперпоточном компьютере.

Есть ли способ узнать точное время выполнения моего процесса, поэтому я смогу добавить его в свои вычисления, когдапытаюсь рассчитать загрузку процесса?

1 Ответ

2 голосов
/ 05 января 2012

Вы можете только сказать, сколько времени занимает логический процессор.Вы не можете сказать, насколько он использует физический процессор, и он на самом деле не определен.
HyperThreading (или, по крайней мере, более современный SMT) не работает, разделяя время физического процессора между двумя потоками.Он работает, назначая работу исполнительным блокам в ЦП (а таких модулей несколько).
Таким образом, оба потока могут выполняться одновременно - есть несколько целочисленных исполнительных блоков и некоторые другие (память, с плавающей запятой).).

Итог - если поток занимает 100% логического процессора, то он занимает 100% процессора.Это все, что ты можешь сказать.

...