Howto Профилирование Linux

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
howto:howto_kernel:howto_профилирование_linux [20.09.2018 13:06]
admin Approved(admin 2018/09/20 13:06)
howto:howto_kernel:howto_профилирование_linux [20.05.2019 15:18] (текущий)
Строка 1: Строка 1:
 +===== Введение =====
 +**Начать с**: 
 +<code bash>
 +yum --enablerepo='​base-debuginfo'​ install kernel-debuginfo-`uname -r` kernel-devel perf oprofile gdb kexec-tools crash
 +</​code>​
 +
 +**если по быстрому**
 +  * perf top - не точно показывает адрес топ фукнции
 +    * https://​perf.wiki.kernel.org/​index.php/​Tutorial#​Sampling_with_perf_record
 +    * perf top -d 5 -U
 +    * perf top -d 5 -g -U
 +    * perf stat -e task-clock,​cycles,​instructions,​cache-references,​cache-misses sleep 5
 +    * **perf record -a sleep 5** и **потом perf report**
 +  * powertop
 +**если всерьез**
 +  * oprofile
 +  * sysrq
 +  * ftrace + debugfs
 ===== Общий алгоритм ===== ===== Общий алгоритм =====
   - Привести машину в максимально дефалтное состояние. Проверить и устранить аномалии и вредные настройки,​ например штормы прерываний,​ постоянный лог ошибок в dmesg и прочее. Убрать все оптимизации,​ если они были наугад включены. ​   - Привести машину в максимально дефалтное состояние. Проверить и устранить аномалии и вредные настройки,​ например штормы прерываний,​ постоянный лог ошибок в dmesg и прочее. Убрать все оптимизации,​ если они были наугад включены. ​
Строка 193: Строка 211:
 opcontrol --init opcontrol --init
 opcontrol --reset opcontrol --reset
-opcontrol --start --vmlinux=/boot/vmlinux+opcontrol --start --vmlinux=/usr/​lib/​debug/​lib/​modules/​2.6.32-642.el6.x86_64/vmlinux
 # но иногда можно и --no-vmlinux если нам не важно про ядро, а только про юспейс # но иногда можно и --no-vmlinux если нам не важно про ядро, а только про юспейс
 # если баг Failed to open profile device: Device or resource busy, то стопаем все виртуалки KVM, одна из них залочила nmi # если баг Failed to open profile device: Device or resource busy, то стопаем все виртуалки KVM, одна из них залочила nmi
 sleep 10 # ждем сбора статистики sleep 10 # ждем сбора статистики
 opcontrol --stop opcontrol --stop
 +
 +# включаем watchdog обратно
 +echo 1 > /​proc/​sys/​kernel/​nmi_watchdog
 # собрали стату, стопнули,​ чтоб не грузить. # собрали стату, стопнули,​ чтоб не грузить.
 </​code>​ </​code>​
Строка 236: Строка 257:
  
 ==== Отчета о кастомном модуле ==== ==== Отчета о кастомном модуле ====
 +opreport -l -w -p /​lib/​modules/​2.6.32-642.el6.x86_64/​kernel/​drivers/​net/​i40e/​\\
 opreport -l -w -p **/​node/​bin** 2>&​1| head -n 100 | grep flas\\ opreport -l -w -p **/​node/​bin** 2>&​1| head -n 100 | grep flas\\
 0000000000007d30 5385 1.3249 flashcache.ko flashcache flashcache_hash_lookup\\ 0000000000007d30 5385 1.3249 flashcache.ko flashcache flashcache_hash_lookup\\