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
.