Как проанализировать количество инструкций и истекшее время с момента вывода статистики - PullRequest
0 голосов
/ 03 января 2019

TL; DR

Есть ли способ сделать perf stat истекшее время вывода при подаче -x?

Фон

Я выполнил perf stat -e instructions:u make run, и вывод вставлен ниже.

 Performance counter stats for 'make run':

    53,781,961,288      instructions:u

       2.802749955 seconds time elapsed

      21.453244000 seconds user
       0.249223000 seconds sys

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

53781782267,,instructions:u,20694056846,100.00,,

Я заметил, что все измерения времени не отображались, поэтому я проверил вывод perf help stat.В разделе CSV FORMAT я обнаружил, что run time of counter, optional metric value и optional unit of metric могут иметь какое-то отношение к моим потребностям, но я не мог понять, как именно.

1 Ответ

0 голосов
/ 04 января 2019

"прошедшее время" печатается из print_footer функции tools/perf/util/stat-display.c файла , если (config->ru_display) имеет значение true.

Но print_footer не вызывается из perf_evlist__print_countersкогда есть опция "-x ,", которая устанавливает csv_output.

if (!interval && !config->csv_output)
    print_footer(config);

"user" / "sys" времена находятся в config->ru_data.ru_utime и ru_data.ru_stime, а "секундное время истекло" в среднем равно config->walltime_nsecs_stats.

В stat-display.c нет другого кода для отображения ru_data.ru_utime, ru_data.ru_stime или walltime_nsecs_stats, поэтому в ядре Linux версии 4.20 невозможно вывести время из статистики perf в CSVmode.

Вы можете исправить файл stat-display.c для вывода всего, что вам нужно, и скомпилировать perf (cd tools/perf; make).Инструмент Perf из другой версии ядра будет работать с любым ядром Linux.

...