Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5.3.2. Cachegrind

Cachegrind имитирует взаимодействие программы с кэшем и модулем предсказания переходов. Cachegrind следит за выполнением инструкций первого уровня, кэшированием данных и взаимодействием с последним уровнем кэша. Во время диагностики программы будут работать в 20-100 раз медленнее.
Команда запуска Cachegrind:
# valgrind --tool=cachegrind программа
Cachegrind возвращает статистику по следующим операциям:
  • чтение кэша инструкциями первого уровня и промахи чтения;
  • чтение кэша и памяти, промахи чтения, промахи чтения кэша последнего уровня;
  • запись в кэш и память, промахи записи, промахи записи в кэш последнего уровня;
  • выполненные и неверно предсказанные условные ветвления:
  • выполненные и неверно предсказанные непрямые переходы.
Cachegrind выводит статистику на консоль и сохраняет более подробную информацию в файл cachegrind.out.PID (pid — идентификатор тестируемого процесса). Для анализа этого файла используется cg_annotate:
# cg_annotate cachegrind.out.PID

Примечание

cg_annotate позволяет выводить строки длиной больше 120 знаков. Чтобы облегчить чтение, рекомендуется изменить ширину окна терминала так, чтобы такие строки вмещались полностью.
Созданные профили можно сравнить и определить изменения в производительности программ:
# cg_diff первый_профиль второй_профиль
Результаты будут сохранены в файл, для чтения которого также можно использовать cg_annotate.
Cachegrind содержит следующие параметры:
--I1
Размер, ассоциативность, размер строк кэша инструкций первого уровня. Формат: --I1=размер,ассоциативность,размер_строк.
--D1
Размер, ассоциативность, размер строк кэша данных первого уровня. Формат: --I1=размер,ассоциативность,размер_строк.
--LL
Размер, ассоциативность, размер строк кэша последнего уровня. Формат: --I1=размер,ассоциативность,размер_строк.
--cache-sim
Включает и отключает сбор статистики попадания и промахов кэша. По умолчанию используется значение yes.
Отключение обоих параметров --cache-sim и --branch-sim отменит сбор статистики.
--branch-sim
Включает и отключает сбор статистики об инструкциях ветвления и числе неверных предсказаний. По умолчанию используется значение no, так как подобный анализ замедляет Cachegrind примерно на 25%.
Одновременное отключение параметров --cache-sim и --branch-sim полностью отменит сбор статистики.
Полный список параметров можно найти в /usr/share/doc/valgrind-версия/valgrind_manual.pdf.