Потихоньку привыкаю использовать 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