Есть ли способ узнать, сколько ЦП на ядро ​​использует процесс? - PullRequest
6 голосов
/ 12 марта 2009

Я знаю, что в perfmon вы можете видеть, сколько используется каждое ядро ​​и сколько всего ЦП использует конкретный процесс. Однако я не могу найти способ узнать, сколько ЦП использует процесс в разбивке по ядрам.

Есть ли встроенный способ просмотра этой информации? Есть ли программный способ увидеть это? (Предпочтительно на C #) Я задаю этот вопрос, чтобы продемонстрировать, как Windows (Vista) неправильно использует ядро ​​и переключать контексты?

Редактировать: Больше разъяснений о том, что я хочу выяснить. Мой процесс использует только 30-40% общего процессора (на четырехъядерном процессоре), потому что он недостаточно многопоточный, чтобы использовать больше, или он слишком ограничен для ввода-вывода, а доступ к диску является узким местом?

Так нет ли способа сделать это вообще? (кроме того, чтобы убедиться, что на компьютере не выполняются другие действия процессора)

Ответы [ 2 ]

2 голосов
/ 12 марта 2009

Вы не можете напрямую получить время цикла для каждого процесса для данного процесса, но вы можете оценить его по времени с помощью QueryIdleProcessorCycleTime (так как он возвращает время простоя для всех логических процессоров, то есть ядер) и QueryProcessCycleTime и предполагая, что это единственный запущенный процесс, не работающий на холостом ходу.

2 голосов
/ 12 марта 2009

Process Explorer, по крайней мере, может показать вам потоки данного процесса и сколько процессоров они используют. Может быть, вы можете получить ядро ​​/ процессор, на котором работают потоки, а затем просто сложить. У меня не так много опыта работы с WinAPI. Так что, возможно, процессорная связь может быть запрошена только у процессов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...