Как точно диагностировать «хранилище попаданий» в AIX PowerPC - PullRequest
1 голос
/ 29 января 2020

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

Я подозреваю, что проблема заключается в «хранилище попаданий при загрузке». Как мне это проверить? Очевидный ответ - в профиль. Прочитав различную документацию AIX, можно было бы найти ответ: tprof с соответствующим событием, указывающим на «хранилище попаданий загрузки». Что-то вроде

  tprof -a -usek -E PM_CMPLU_STALL_REJECT -y my_benchmark_program

Однако - это выдает сообщение об ошибке

  A group with events PM_CMPLU_STALL_REJECT and PM_INST_CMPL cannot be found.

В документации tprof упоминается, что выбранное событие должно быть в той же группе, что и PM_INST_CMPL. Однако - это не указывает на то, что еще нужно сделать.

Итак - как я могу проверить свою теорию о том, что «хранилище попаданий при загрузке» является причиной снижения производительности?

1 Ответ

0 голосов
/ 30 января 2020

Я не эксперт AIX, но Центр знаний говорит, что команда "pmlist" может использоваться для определения того, какие события находятся в группах (https://www.ibm.com/support/knowledgecenter/ssw_aix_72/performancetools/eventbasedprofiling.html). Предполагая, что сообщение об ошибке является правильным, и эти события (PM_CMPLU_STALL_REJECT и PM_INST_CMPL) не входят в одну группу, вы можете выполнить два одинаковых прогона и записать одно событие во время каждого прогона, если ваш эталонный тест работает таким образом.
Говоря о нагрузке Хит-магазин, вы хотите измерить событие PM_CMPLU_STALL_REJECT_LHS? (Для POWER9 PM_CMPLU_STALL_LHS.)

...