Pull to refresh

Comments 11

Конечно, можно. Я скоро буду ковырять сам perf, думаю что-нибудь про него написать.
программа perf. С её помощью можно посмотреть, какие железные события нам доступны.

perf list hw cache работает с фиксированным набором типов событий и выводит только подмножество событий, для которых архитектура предоставляет мэппинг. Но делать по этому списку вывод о богатстве возможностей аппаратных перфкаунтеров архитектуры неправильно. Полный доступ к аппаратной функциональности можно получить через raw события.
perf сложновато запустить на системах виртуализации типа xen, т.к. хостовая система может иметь кустомное ядро.
Не удивительно, что есть трассировщики, для kernel thread ведь создается task_struct, где есть состояние TASK_TRACED. А так да, принтами трейсить — не очень изящное решение.
TASK_TRACED — это для отладчиков, см. lwn.net/Articles/100092
Ни один из перечисленных в статье механизмов не использует ptrace.
Прошу прощения за такой рекламный коментарий, но чтобы было удобнее пользоваться результатами собранными perf, можно использовать 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 в качестве коллектора. В общем инструменты интегрированы.
Хотелось бы услышать больше деталей про SWAP-Samsung, NOP — Apple, Valgrind — GNU
И их особенности ;-)
Valgrind — это динамический отладчик для пользовательских приложений, про него информации уйма, в том числе на хабре. Про остальное я впервые слышу и не могу ничего нагуглить. Можно поподробнее, что такое NOP и SWAP?
NOP и SWAP это внутренние фирменные профилировщики двух известных корпораций. С полностью инструментированными функциями ядра OS. Различаются подходами. Не уверен, что можно о них говорить вслух рассказать принцип их действия до открытия этих инструментов широкой общественности.
Начиная с 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


Only those users with full accounts are able to leave comments. Log in, please.

Information

Founded
Location
Россия
Website
metrotek.spb.ru
Employees
31–50 employees
Registered