Dtrace
From pressy's brainbackup
Some short cmds or one-liners around dtrace
ARC accesses by applicaiton
# dtrace -n 'sdt:zfs::arc-hit,sdt:zfs::arc-miss { @[execname] = count() }'
found @[1]
what is really going on
One nice example - everyone knows "man man" but what is really happening when this command is issued? Dtrace filtered on user id while typing man man on another terminal.
root@vbox01:~# dtrace -n 'proc:::exec-success /uid == 100/ { trace(curpsinfo->pr_psargs); }' dtrace: description 'proc:::exec-success ' matched 1 probe CPU ID FUNCTION:NAME 0 716 exec_common:exec-success /usr/gnu/bin/tbl 0 716 exec_common:exec-success /usr/bin/less -ins /tmp/mpTijdFb 1 716 exec_common:exec-success man man 1 716 exec_common:exec-success /usr/bin/troff -E -T ascii -mandoc 1 716 exec_common:exec-success /usr/bin/mv -f /tmp/mpTijdFb /usr/share/man/cat1/man.1 2 716 exec_common:exec-success /usr/bin/eqn -T ascii 3 716 exec_common:exec-success /usr/bin/preconv -D latin-1 /usr/share/man/man1/man.1 3 716 exec_common:exec-success /usr/bin/grotty -c ^C
And which files where accessed by "man man"?
root@vbox01:~# dtrace -n 'syscall::read:entry /uid == 100/ {@reads[execname, fds[arg0].fi_pathname] = count(); }' dtrace: description 'syscall::read:entry ' matched 1 probe ^C less /devices/pseudo/sy@0:tty 1 man /usr/share/man/man.cf 1 man /usr/share/man/man1/man.1 1 troff /usr/share/lib/zoneinfo/Europe/Vienna 1 eqn /usr/share/groff/1.22.3/tmac/eqnrc 2 grotty /usr/share/groff/1.22.3/font/devascii/B 2 grotty /usr/share/groff/1.22.3/font/devascii/DESC 2 grotty /usr/share/groff/1.22.3/font/devascii/I 2 grotty /usr/share/groff/1.22.3/font/devascii/R 2 less /export/home/pressy/.lesshst 2 less /tmp/mpNgF_9d 2 less /usr/gnu/share/terminfo/x/xterm-256color 2 preconv /usr/share/man/man1/man.1 2 troff /usr/share/groff/1.22.3/font/devascii/B 2 troff /usr/share/groff/1.22.3/font/devascii/BI 2 troff /usr/share/groff/1.22.3/font/devascii/DESC 2 troff /usr/share/groff/1.22.3/font/devascii/I 2 troff /usr/share/groff/1.22.3/font/devascii/R 2 troff /usr/share/groff/1.22.3/tmac/an-ext.tmac 2 troff /usr/share/groff/1.22.3/tmac/an-old.tmac 2 troff /usr/share/groff/1.22.3/tmac/andoc.tmac 2 troff /usr/share/groff/1.22.3/tmac/composite.tmac 2 troff /usr/share/groff/1.22.3/tmac/devtag.tmac 2 troff /usr/share/groff/1.22.3/tmac/fallbacks.tmac 2 troff /usr/share/groff/1.22.3/tmac/hyphen.us 2 troff /usr/share/groff/1.22.3/tmac/hyphenex.us 2 troff /usr/share/groff/1.22.3/tmac/papersize.tmac 2 troff /usr/share/groff/1.22.3/tmac/pspic.tmac 2 troff /usr/share/groff/1.22.3/tmac/troffrc 2 troff /usr/share/groff/1.22.3/tmac/troffrc-end 2 troff /usr/share/groff/1.22.3/tmac/tty.tmac 2 troff /usr/share/groff/site-tmac/man.local 2 tbl <unknown> 7 eqn <unknown> 8 troff <unknown> 8 bash /dev/pts/2 9 sshd <unknown> 11 sshd /devices/pseudo/clone@0:ptm 20 man <unknown> 32 grotty <unknown> 33 root@vbox01:~#