КатегорииLinksUnix Tutorial
Personal Development Ruslan Valiev Solaris Performance Team Damien Farnham Fintan Ryan Nicky Veitch Niall Mullen Sean McGrath DTrace Bryan Cantrill Brendan Gregg ZFS Tim Foster General Ben Rockwood Learning Solaris 10 Privacy policy |
Wednesday, 24 November. 2004
Ещё один из любимых ... Добавил Gleb Reys
в категории DTrace в
15:49
Комментарии (0) Обратные ссылки (0) Select language: English Defined tags for this entry: dtrace
Ещё один из любимых приёмов вызова DTrace
Данный вариант вызова команды позволяет отследить, какие именно системные вызовы выполняются определённым процессом. Или целой их кучей, если делать выборку по символьному имени, а не по PIDам...
Такакя вот строчка покажет статистику системных вызовов X-сервера Xorg за каждые 5 секунд: dtrace -n 'syscall:::entry /execname == "Xorg"/ {@[probefunc] = count(); } tick-5sec {printa(@); clear(@);}' CODE: dtrace: description 'syscall:::entry ' matched 227 probes CPU ID FUNCTION:NAME 0 36588 :tick-5sec writev 20 lwp_sigmask 38 setcontext 38 setitimer 75 read 422 pollsys 426 pS: как-нибудь чуть попозже соберусь и всё-таки напишу подробнее, что такое DTrace и язык D. Monday, 22 November. 2004
Проще простого Добавил Gleb Reys
в категории DTrace в
19:35
Комментарии (2) Обратные ссылки (0) Select language: English
Проще простого
Потихоньку привыкаю использовать DTrace в повседневной работе...
Например, вот начало элементарного анализа. Система чем-то постоянно занята, и нужно попытаться найти, кто же виноват. Как? Вот одно из возможных решений - просто посмотреть, кто за конкретный промежуток времени (в нашем случае - 5 секунд) делает больше всего системных вызовов... И сразу становится понятно, что это всё Java VM, которая как раз сейчас работает со сложным графическим апплетом. Ну а терминалы rxvt так много насчитали потому, что мы строим список по названию команд, а у меня на машине открыто штук 40 терминалов, и все они, естественно, rxvt - т.е. если бы я по PID делал сортировку, они все были бы отдельно. Итак, команда: dtrace -n syscall:::entry'{@[execname] = count()} tick-5sec {printa(@); clear(@);}' А результат её - каждые пять секунд мы будем видить что-нибудь вроде этого: CODE: dtrace: description 'syscall:::entry' matched 227 probes
CPU ID FUNCTION:NAME 1 36588 :tick-5sec svc.configd 1 expect 3 telnet 4 svc.startd 6 sendmail 10 thunderbird-bin 10 htt_server 10 nscd 13 mozilla-bin 19 soffice.bin 77 xautolock 106 dtrace 173 icewm 225 Xorg 874 rxvt 2008 java_vm 2651 |




