Как проверить, связано ли приложение с процессором или с памятью?

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

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

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

2 ответа

Решение

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

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

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

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

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

Еще один полезный инструмент - утилита Intel Performance Tuning.

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

Другие вопросы по тегам