Как интерпретировать вывод perf-скрипта - PullRequest
1 голос
/ 08 октября 2019

Я пытаюсь создать инструмент, похожий на flamegraph , но использующий другой интерфейс. У меня есть некоторые проблемы, чтобы понять вывод perf-скрипта.

Прежде всего, я записываю данные perf с perf record -a -g -o /my/output/file.data, если я правильно понял, как работает perf, это займетсэмплы каждый определенный момент времени и посмотреть, где находится IP в этот момент.

Затем я генерирую вывод perf-скрипта (тот, который я планирую проанализировать) с помощью perf script -i /my/input/file.data --fields trace:comm,pid,tid,cpu,time,event,ip,sym,dso,trace, и я получаю следующий вывод:

...
swapper     0 [000] 22925.999132:      68882 cycles: 
        ffffffffa9311275 rcu_prepare_for_idle+0x5 ([kernel.kallsyms])
        ffffffffa93131be rcu_irq_exit+0x6e ([kernel.kallsyms])
        ffffffffa9c01d4f call_function_single_interrupt+0xf ([kernel.kallsyms])
        ffffffffa99060d4 cpuidle_enter_state+0xc4 ([kernel.kallsyms])
        ffffffffa99064d9 cpuidle_enter+0x29 ([kernel.kallsyms])
        ffffffffa92c431e do_idle+0x1de ([kernel.kallsyms])
        ffffffffa92c4559 cpu_startup_entry+0x19 ([kernel.kallsyms])
        ffffffffaa91617b start_kernel+0x58c ([kernel.kallsyms])
        ffffffffa92000d4 secondary_startup_64+0xa4 ([kernel.kallsyms])
...

Я не понимаю, что означает время (22925.999132).

Я также не понимаю значения счетчика циклов, сначала я подумал, что это былокак долго выполнялась функция, но если она просто выбирает IP, нет смысла иметь эту информацию.

...