このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。
proc
プロバイダで使用できるプローブを表示します。
# dtrace -l -P proc
ID PROVIDER MODULE FUNCTION NAME
4066 proc vmlinux schedule_tail start
4067 proc vmlinux schedule_tail lwp-start
4069 proc vmlinux get_signal_to_deliver signal-handle
4074 proc vmlinux do_sigtimedwait signal-clear
4075 proc vmlinux do_fork lwp-create
4076 proc vmlinux do_fork create
4077 proc vmlinux do_exit lwp-exit
4078 proc vmlinux do_exit exit
4079 proc vmlinux do_execve_common exec-failure
4080 proc vmlinux do_execve_common exec
4081 proc vmlinux do_execve_common exec-success
4085 proc vmlinux __send_signal signal-send
4086 proc vmlinux __send_signal signal-discard
プロセス・イメージをロードおよび実行するときにシステムを監視します。
# dtrace -n 'proc::do_execve_common:exec { trace(stringof(arg0)); }'
dtrace: description 'proc:::exec' matched 1 probe
CPU ID FUNCTION:NAME
0 600 do_execve_common:exec /bin/uname
0 600 do_execve_common:exec /bin/mkdir
0 600 do_execve_common:exec /bin/sed
0 600 do_execve_common:exec /usr/bin/dirname
1 600 do_execve_common:exec /usr/lib64/qt-3.3/bin/firefox
1 600 do_execve_common:exec /usr/local/bin/firefox
1 600 do_execve_common:exec /usr/bin/firefox
1 600 do_execve_common:exec /bin/basename
1 600 do_execve_common:exec /bin/uname
1 600 do_execve_common:exec /usr/bin/mozilla-plugin-config
1 600 do_execve_common:exec /usr/lib64/nspluginwrapper/plugin-config
1 600 do_execve_common:exec /usr/lib64//xulrunner-1.9.2/mozilla-xremote-client
1 600 do_execve_common:exec /bin/sed
1 600 do_execve_common:exec /usr/lib64/firefox-3.6/run-mozilla.sh
1 600 do_execve_common:exec /bin/basename
1 600 do_execve_common:exec /bin/uname
1 600 do_execve_common:exec /usr/lib64/firefox-3.6/firefox
open()
システム・コールを起動したコマンドの名前と、開かれたファイルの名前を表示します。
#dtrace -q -n 'syscall::open:entry { printf("%-16s %-16s\n",execname,copyinstr(arg0)); }'
udisks-daemon /dev/sr0 devkit-power-da /sys/devices/LNXSYSTM:00/.../PNP0C0A:00/power_supply/BAT0/present devkit-power-da /sys/devices/LNXSYSTM:00/.../PNP0C0A:00/power_supply/BAT0/energy_now devkit-power-da /sys/devices/LNXSYSTM:00/.../PNP0C0A:00/power_supply/BAT0/voltage_max_design devkit-power-da /sys/devices/LNXSYSTM:00/.../PNP0C0A:00/power_supply/BAT0/voltage_min_design devkit-power-da /sys/devices/LNXSYSTM:00/.../PNP0C0A:00/power_supply/BAT0/status devkit-power-da /sys/devices/LNXSYSTM:00/.../PNP0C0A:00/power_supply/BAT0/current_now devkit-power-da /sys/devices/LNXSYSTM:00/.../PNP0C0A:00/power_supply/BAT0/voltage_now VBoxService /var/run/utmp firefox /home/guest/.mozilla/firefox/qeaojiol.default/sessionstore.js firefox /home/guest/.mozilla/firefox/qeaojiol.default/sessionstore-1.js firefox /home/guest/.mozilla/firefox/qeaojiol.default/sessionstore-1.js^C
IDが3007のプロセスによって起動されたシステム・コールと、各システム・コールが起動された回数を表示します。
#dtrace -p 3007 -n 'syscall:::entry { @num[probefunc] = count(); }'
dtrace: description 'syscall:::entry ' matched 296 probes^C
getuid 1 ptrace 1 socket 1 waitid 1 lseek 3 statfs 3 access 4 write 6 munmap 15 newfstat 16 newstat 17 mmap 19 fcntl 20 close 24 alarm 30 inotify_add_watch 30 open 32 rt_sigaction 50 nanosleep 52 rt_sigprocmask 64 ioctl 117 futex 311 clock_gettime 579 rt_sigreturn 744 gettimeofday 1461 setitimer 2093 select 2530 writev 3162 poll 4720 read 10552
実行中のfirefox
によって起動されたread()
コールに指定されているサイズの分布を表示します。
#dtrace -n 'syscall::read:entry /execname=="firefox"/{@dist["firefox"]=quantize(arg2);}'
dtrace: description 'syscall::read:entry ' matched 1 probe^C
firefox value ------------- Distribution ------------- count 0 | 0 1 |@ 566 2 | 0 4 | 0 8 | 7 16 | 4 32 | 0 64 | 0 128 | 8 256 |@ 436 512 | 8 1024 |@@ 959 2048 |@ 230 4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 13785 8192 | 3 16384 | 4 32768 | 0 65536 | 0 131072 | 73 262144 | 0
syscalls.dスクリプトを実行して、PID 5178が使用しているシステム・コールと、各システム・コールが起動された回数を調査します。
#ls -l syscalls.d
-rwxr-xr-x. 1 root root 85 Aug 14 14:48 syscalls.d #cat syscalls.d
#!/usr/sbin/dtrace -qs syscall:::entry /pid == $1/ { @num[probefunc] = count(); } #./syscalls.d 5178
^C
ftruncate 1 newuname 1 clone 5 close 5 sched_setscheduler 5 newlstat 6 access 7 open 7 newfstat 9 sched_get_priority_max 10 sched_get_priority_min 10 fcntl 12 lseek 73 newstat 100 write 155 futex 752 writev 1437 poll 4423 read 5397 gettimeofday 9292