7

Учитывая конкретный работающий процесс, есть ли способ узнать, какой аппаратный элемент в настоящее время является узким местом для его работы? Другими словами, текущие вычисления связаны с процессором, с графическим процессором, с памятью, с вводом-выводом и т.д.?

Ответы, которые работают для Windows XP, предпочтительнее, но все ответы приветствуются.

РЕДАКТИРОВАТЬ: я думаю о процессах, которые берут абсолютное большинство системных ресурсов для себя; так что решения, которые могут помочь мне найти текущую боевую точку для всей системы (например, какой элемент больше всего работает, пока остальные отдыхают), тоже подойдут.

РЕДАКТИРОВАТЬ 2: кто-то задал мне этот вопрос, и мой ответ был

Откройте диспетчер задач и выберите просмотр сбоев страниц для приложения - очень большое количество подсказок о том, что вам не хватает физической памяти. Проверьте загрузку процессора - если он постоянно на 100%, это признак того, что он может быть недостаточно быстрым для этого приложения реального времени.

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

2 ответа2

1

Вы можете использовать инструменты Microsoft XPERF, чтобы пройтись по стеку и найти узкие места. Вы можете просматривать результаты только в Vista/7 (или на сервере 2008), но вы можете запустить инструмент профиля в XP. У Pigs Can Fly есть несколько действительно хороших статей о хождении по стеку с XPERF.

Мы использовали это, чтобы найти узкие места в нашей скорости загрузки, и, наконец, получили доказательства того, что компания удалила некоторые инструменты, которые загружали слишком много дискового ввода-вывода при загрузке.

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .