Как проверить, связано ли приложение с процессором или с памятью? - PullRequest
14 голосов
/ 01 июля 2010

У меня есть приложение, которое выполняет немного вычислительной работы ЦП, но в основном обращается к памяти (выделяя объекты и перемещая их, мало числового или арифметического кода).

Как я могу измерить долю времени, которое я трачу на задержки доступа к памяти (из-за отсутствия кэша), когда процессор простаивает?

Следует отметить, что приложение работает на гостевой системе Hyper-V; Я не уверен, что это создаст какие-либо трудности, но может.

Ответы [ 2 ]

3 голосов
/ 01 июля 2010

Вы всегда можете profile ваше приложение, чтобы увидеть, где оно проводит большую часть времени.

Таким образом, вы можете многое узнать о поведении вашего приложения и шаблонах доступа к данным.

Есливы используете Linux, у вас есть широкий спектр доступных инструментов для профилирования, таких как:

РЕДАКТИРОВАТЬ:

Для более точного измерения производительности процессораПомимо доступа к памяти, вы также можете попробовать AMD CodeAnalyst Performance Analyzer . Здесь - инструкции по его использованию с процессорами Intel, хотя я сам не пробовал.

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

2 голосов
/ 01 июля 2010

Если в систему не встроена задержка, просто запустите приложение на некоторое время на выделенном компьютере и проверьте счетчики ЦП.Если приложение использует 100% ядра ЦП, к которому оно имеет доступ, оно привязано к ЦП.В противном случае он тратит время на другие вещи, такие как распределение памяти и операции ввода-вывода.

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