Интересно, как правильно измерять количество инструкций за цикл с помощью perf. В качестве справки: http://www2.engr.arizona.edu/~tosiron/papers/SPEC2017_ISPASS18.pdf использовал inst_retired.any
и cpu_clk_unhalted.ref_tsc
для своих расчетов, и теперь мне интересно, правильный ли это подход. Для сравнения, PAPI использует аппаратные счетчики PAPI_TOT_INS
и PAPI_TOT_CYC
для вычисления IPC.
После некоторых измерений я пришел к выводу:
inst_retired.any:u
похоже на то же, что иPAPI_TOT_INS
cpu-cycles
похоже на то же, что иPAPI_TOT_CYC
В примере теста cpu-cycles
отличается от cpu_clk_unhalted.ref_tsc
примерно на 25%. Теперь возникает вопрос, какое из обоих значений является правильным для расчетов? Или оба подхода неверны?