1 1.1 christos # 2 1.1 christos # DTrace OneLiners 3 1.1 christos # 4 1.1 christos 5 1.1 christos DTrace One Liners, 6 1.1 christos 7 1.1 christos # New processes with arguments, 8 1.1 christos dtrace -n 'proc:::exec-success { trace(curpsinfo->pr_psargs); }' 9 1.1 christos 10 1.1 christos # Files opened by process name, 11 1.1 christos dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }' 12 1.1 christos 13 1.1 christos # Files created using creat() by process name, 14 1.1 christos dtrace -n 'syscall::creat*:entry { printf("%s %s",execname,copyinstr(arg0)); }' 15 1.1 christos 16 1.1 christos # Syscall count by process name, 17 1.1 christos dtrace -n 'syscall:::entry { @num[execname] = count(); }' 18 1.1 christos 19 1.1 christos # Syscall count by syscall, 20 1.1 christos dtrace -n 'syscall:::entry { @num[probefunc] = count(); }' 21 1.1 christos 22 1.1 christos # Syscall count by process ID, 23 1.1 christos dtrace -n 'syscall:::entry { @num[pid,execname] = count(); }' 24 1.1 christos 25 1.1 christos # Read bytes by process name, 26 1.1 christos dtrace -n 'sysinfo:::readch { @bytes[execname] = sum(arg0); }' 27 1.1 christos 28 1.1 christos # Write bytes by process name, 29 1.1 christos dtrace -n 'sysinfo:::writech { @bytes[execname] = sum(arg0); }' 30 1.1 christos 31 1.1 christos # Read size distribution by process name, 32 1.1 christos dtrace -n 'sysinfo:::readch { @dist[execname] = quantize(arg0); }' 33 1.1 christos 34 1.1 christos # Write size distribution by process name, 35 1.1 christos dtrace -n 'sysinfo:::writech { @dist[execname] = quantize(arg0); }' 36 1.1 christos 37 1.1 christos # Disk size by process ID, 38 1.1 christos dtrace -n 'io:::start { printf("%d %s %d",pid,execname,args[0]->b_bcount); }' 39 1.1 christos 40 1.1 christos # Disk size aggregation 41 1.1 christos dtrace -n 'io:::start { @size[execname] = quantize(args[0]->b_bcount); }' 42 1.1 christos 43 1.1 christos # Pages paged in by process name, 44 1.1 christos dtrace -n 'vminfo:::pgpgin { @pg[execname] = sum(arg0); }' 45 1.1 christos 46 1.1 christos # Minor faults by process name, 47 1.1 christos dtrace -n 'vminfo:::as_fault { @mem[execname] = sum(arg0); }' 48 1.1 christos 49 1.1 christos # Interrupts by CPU, 50 1.1 christos dtrace -n 'sdt:::interrupt-start { @num[cpu] = count(); }' 51 1.1 christos 52 1.1 christos # CPU cross calls by process name, 53 1.1 christos dtrace -n 'sysinfo:::xcalls { @num[execname] = count(); }' 54 1.1 christos 55 1.1 christos # Lock time by process name, 56 1.1 christos dtrace -n 'lockstat:::adaptive-block { @time[execname] = sum(arg1); }' 57 1.1 christos 58 1.1 christos # Lock distribution by process name, 59 1.1 christos dtrace -n 'lockstat:::adaptive-block { @time[execname] = quantize(arg1); }' 60 1.1 christos 61 1.1 christos # Kernel funtion calls by module 62 1.1 christos dtrace -n 'fbt:::entry { @calls[probemod] = count(); }' 63 1.1 christos 64 1.1 christos # Stack size for processes 65 1.1 christos dtrace -n 'sched:::on-cpu { @[execname] = max(curthread->t_procp->p_stksize);}' 66 1.1 christos 67 1.1 christos # Kill all top processes when they are invoked, 68 1.1 christos dtrace -wn 'syscall::exece:return /execname == "top"/ { raise(9); }' 69 1.1 christos 70 1.1 christos 71 1.1 christos 72 1.1 christos DTrace Longer One Liners, 73 1.1 christos 74 1.1 christos # New processes with arguments and time, 75 1.1 christos dtrace -qn 'syscall::exec*:return { printf("%Y %s\n",walltimestamp,curpsinfo->pr_psargs); }' 76 1.1 christos 77 1.1 christos # Successful signal details, 78 1.1 christos dtrace -n 'proc:::signal-send /pid/ { printf("%s -%d %d",execname,args[2],args[1]->pr_pid); }' 79 1.1 christos 80 1.1 christos 81 1.1 christos 82