Comments 11
Спасибо, можно еще?
программа perf. С её помощью можно посмотреть, какие железные события нам доступны.
perf list hw cache работает с фиксированным набором типов событий и выводит только подмножество событий, для которых архитектура предоставляет мэппинг. Но делать по этому списку вывод о богатстве возможностей аппаратных перфкаунтеров архитектуры неправильно. Полный доступ к аппаратной функциональности можно получить через raw события.
Не удивительно, что есть трассировщики, для kernel thread ведь создается task_struct, где есть состояние TASK_TRACED. А так да, принтами трейсить — не очень изящное решение.
TASK_TRACED — это для отладчиков, см. lwn.net/Articles/100092
Ни один из перечисленных в статье механизмов не использует ptrace.
Ни один из перечисленных в статье механизмов не использует ptrace.
Прошу прощения за такой рекламный коментарий, но чтобы было удобнее пользоваться результатами собранными perf, можно использовать VTune, который отобразит ивенты не только относительно всей системы, но и относительно вашего модуля, функции, строчки кода или ассемблерных интрукций, по выбору. Плюс куча инструментария для анализа производительности приложения применима и к perf-трассам.
Кроме того, можно импортировать результаты коллекции ивентов собранных с perf, например:
Импортируем в VTune GUI или command line:
Так же можно и прямо запустить профилировку в VTune с использованием perf в качестве коллектора. В общем инструменты интегрированы.
Кроме того, можно импортировать результаты коллекции ивентов собранных с perf, например:
>perf record -o< trace_file_name>.perf -e cpu-cycles,instructions <application_to_launch>
Импортируем в VTune GUI или command line:
>amplxe-cl -import my_profile.perf -source-search-dir <PATH>
Так же можно и прямо запустить профилировку в VTune с использованием perf в качестве коллектора. В общем инструменты интегрированы.
Начиная с 3.5 в ядре Linux появились uprobe'ы, то есть фактически аналог kprobe для userspace'а. Они тоже местами весьма полезны:
Пример использования uprobe с perf
# perf probe -x /bin/bash 'readline%return +0($retval):string'
Added new event:
probe_bash:readline (on readline%return in /bin/bash with +0($retval):string)
You can now use it in all perf tools, such as:
perf record -e probe_bash:readline -aR sleep 1
# perf record -e probe_bash:readline -a
^C[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.259 MB perf.data (2 samples) ]
# perf script
bash 26239 [003] 283194.152199: probe_bash:readline: (48db60 <- 41e876) arg1="ls -l"
bash 26239 [003] 283195.016155: probe_bash:readline: (48db60 <- 41e876) arg1="date"
# perf probe --del probe_bash:readline
Removed event: probe_bash:readline
Sign up to leave a comment.
Механизмы профилирования Linux