Как проверить, является ли приложение зависящим от ЦП или ограниченным памятью?

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

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

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

14
задан jkff 1 July 2010 в 09:00
поделиться

2 ответа

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

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

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

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

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

Другой инструмент, который также может оказаться полезным, - это Утилита настройки производительности Intel .

3
ответ дан 1 December 2019 в 16:39
поделиться

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

2
ответ дан 1 December 2019 в 16:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: