diff options
Diffstat (limited to 'cddl/contrib/dtracetoolkit/Examples')
233 files changed, 34002 insertions, 0 deletions
diff --git a/cddl/contrib/dtracetoolkit/Examples/Copyright b/cddl/contrib/dtracetoolkit/Examples/Copyright new file mode 100644 index 000000000000..d802fe9086b4 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/Copyright @@ -0,0 +1 @@ +The examples in this directory are copyright to their author. diff --git a/cddl/contrib/dtracetoolkit/Examples/Readme b/cddl/contrib/dtracetoolkit/Examples/Readme new file mode 100644 index 000000000000..762a3312abf8 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/Readme @@ -0,0 +1,21 @@ +Examples - Script demos, screenshots, and how to read the output + + This directory contains an example file per script in the DTraceToolkit. + + When I hear of a new performance tool or what not, the first thing I want + to see are screenshots. They illustrate, + + - generally what the tool is for + - many details and features, since the output is (supposed to be) + as intuitive as possible + - how to use the tool (command line usage) + + It is a rapid way to get a handle on what a tool generally is, and how + to start using it. The files in this directory serve that purpose. + + These are especially important now that the DTraceToolkit has over 200 + scripts. Flicking through these files and seeing the screenshots may + be the quickest way to find what you are after. + + Of course, don't forget to read the man pages and notes files too :) + diff --git a/cddl/contrib/dtracetoolkit/Examples/anonpgpid_example.txt b/cddl/contrib/dtracetoolkit/Examples/anonpgpid_example.txt new file mode 100644 index 000000000000..b505f3d1596f --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/anonpgpid_example.txt @@ -0,0 +1,73 @@ +The following is a demonstration of the anonpgpid.d script, + + +Here we run it on a system that is implementing memory caps using the +resource capping daemon, "rcapd", + + # anonpgpid.d + Tracing... Hit Ctrl-C to end. + ^C + PID CMD D BYTES + 6215 bash R 8192 + 6215 bash W 126976 + 5809 rcapd R 245760 + 6222 memleak.pl R 974848 + 6222 memleak.pl W 3055616 + +The "memleak.pl" process consumes memory, and we can see above that it has +encountered both reads and writes to the physical swap device - it is being +paged out. A bash shell was also effected (which was in the same project that +rcapd was monitoring). + + + +The following is an ordinary system that is very low on memory, + + # anonpgpid.d + Tracing... Hit Ctrl-C to end. + ^C + PID CMD D BYTES + 18885 sendmail R 4096 + 18600 automountd R 4096 + 1 init R 4096 + 2456 inetd R 8192 + 18546 nscd R 8192 + 2400 bash R 12288 + 217 utmpd R 28672 + 221 ttymon R 32768 + 210 sac R 36864 + 18777 snmpd R 49152 + 18440 init R 49152 + 89 nscd R 61440 + 318 syslogd R 73728 + 487 snmpd R 81920 + 2453 inetd R 102400 + 165 in.routed R 131072 + 294 automountd R 135168 + 215 inetd R 135168 + 187 rpcbind R 204800 + 86 kcfd R 290816 + 7 svc.startd R 1015808 + 9 svc.configd R 1478656 + 2 pageout W 23453696 + +The "pageout" process is responsible for writing all the anonymous memory +pages to the physical swap device, and we can see from the above that it +has written 23 Mb. When processes access anonymous memory that has been +swapped out, a major fault occurs and the memory is paged back in; in this +case we can trace the process that was effected, and from the above we can +see that several processes have been effected by the memory pressure. +The most is "svc.configd", which needed to page back in 1.4 Mb of anonymous +memory. + + + +Sometimes anonpgpid.d doesn't help too much. Here we only have pageouts +to the physical swap device and no pageins, + + # anonpgpid.d + ^C + PID CMD D BYTES + 2 pageout W 61083648 + +Only pageout is identified. diff --git a/cddl/contrib/dtracetoolkit/Examples/bitesize_example.txt b/cddl/contrib/dtracetoolkit/Examples/bitesize_example.txt new file mode 100644 index 000000000000..dcc697d5070d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/bitesize_example.txt @@ -0,0 +1,74 @@ +In this example, bitesize.d was run for several seconds then Ctrl-C was hit. +As bitesize.d runs it records how processes on the system are accessing the +disks - in particular the size of the I/O operation. It is usually desirable +for processes to be requesting large I/O operations rather than taking many +small "bites". + +The final report highlights how processes performed. The find command mostly +read 1K blocks while the tar command was reading large blocks - both as +expected. + + # bitesize.d + Tracing... Hit Ctrl-C to end. + ^C + + PID CMD + 7110 -bash\0 + + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 2048 | 0 + 4096 |@@@@@@@@@@@@@ 1 + 8192 | 0 + + 7110 sync\0 + + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@ 1 + 2048 |@@@@@@@@@@ 2 + 4096 | 0 + 8192 |@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 16384 | 0 + + 0 sched\0 + + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@ 1 + 4096 | 0 + 8192 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 10 + 16384 | 0 + + 7109 find /\0 + + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1452 + 2048 |@@ 91 + 4096 | 33 + 8192 |@@ 97 + 16384 | 0 + + 3 fsflush\0 + + value ------------- Distribution ------------- count + 4096 | 0 + 8192 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 449 + 16384 | 0 + + 7108 tar cf /dev/null /\0 + + value ------------- Distribution ------------- count + 256 | 0 + 512 | 70 + 1024 |@@@@@@@@@@ 1306 + 2048 |@@@@ 569 + 4096 |@@@@@@@@@ 1286 + 8192 |@@@@@@@@@@ 1403 + 16384 |@ 190 + 32768 |@@@ 396 + 65536 | 0 + + diff --git a/cddl/contrib/dtracetoolkit/Examples/connections_example.txt b/cddl/contrib/dtracetoolkit/Examples/connections_example.txt new file mode 100644 index 000000000000..e39d063113a8 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/connections_example.txt @@ -0,0 +1,23 @@ +The following is an example of connections. As inbound TCP connections are +established their details are printed out. This includes the UID, PID and +CMD of the server process that is listening on that port, + + # connections + UID PID CMD TYPE PORT IP_SOURCE + 0 242 inetd tcp 79 192.168.1.1 + 0 359 sshd tcp 22 192.168.1.1 + 100 1532 Xorg tcp 6000 192.168.1.1 + ^C + + +In another window snoop was running for comparison, + + # snoop 'tcp[13:1] = 0x02' + Using device /dev/rtls0 (promiscuous mode) + mars -> jupiter FINGER C port=56760 + mars -> jupiter TCP D=22 S=56761 Syn Seq=3264782212 Len=0 ... + mars -> jupiter XWIN C port=56763 + +snoop can already tell me that these connections are happening - but does not +print out details of the server that accepted the connection. + diff --git a/cddl/contrib/dtracetoolkit/Examples/cpudists_example.txt b/cddl/contrib/dtracetoolkit/Examples/cpudists_example.txt new file mode 100644 index 000000000000..aa8256b7b7a9 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/cpudists_example.txt @@ -0,0 +1,276 @@ +The following demonstrates the cpudists program. It prints distributions +of CPU time consumed by the Kernel, Idle thread, or Processes. + +Here we run cpudists for 5 seconds once, + +# ./cpudists 5 1 +2005 Apr 28 00:08:42, + KERNEL + value ------------- Distribution ------------- count + 4096 | 0 + 8192 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1134 + 16384 |@@@@@@@@@ 344 + 32768 |@@@ 104 + 65536 | 3 + 131072 | 0 + 262144 | 1 + 524288 | 0 + 1048576 | 11 + 2097152 | 0 + + PROCESS + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@ 170 + 32768 |@@@@@@@@@@@@@@@@@@ 331 + 65536 |@@@@@@@@ 152 + 131072 |@ 17 + 262144 |@ 25 + 524288 |@ 13 + 1048576 | 4 + 2097152 | 9 + 4194304 | 0 + + IDLE + value ------------- Distribution ------------- count + 2097152 | 0 + 4194304 |@ 9 + 8388608 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 418 + 16777216 |@@@ 31 + 33554432 | 0 + +The value indicates the time in nanoseconds, the count the number of +runs for this length. + +From the above, we can see the kernel has run many times - but for short +intervals each time. Processes have taken fom 10 to 60 microseconds; +and when the idle thread runs it runs for some time - around 8 milliseconds +for each. + + + + +cpudists has a "-a" option for all processes, + +# ./cpudists -a 5 1 +2005 Apr 28 00:17:34, + mapping-daemon + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32768 |@@@@@@@@@@@@@ 1 + 65536 | 0 + + sendmail + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32768 | 0 + 65536 |@@@@@@@@@@@@@ 1 + 131072 | 0 + + nautilus + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32768 | 0 + 65536 |@@@@@@@@@@@@@ 1 + 131072 | 0 + + fmd + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32768 | 0 + 65536 |@@@@@@@@@@@@@ 1 + 131072 | 0 + + in.routed + value ------------- Distribution ------------- count + 65536 | 0 + 131072 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 262144 | 0 + + miniserv.pl + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32768 | 0 + 65536 | 0 + 131072 |@@@@@@@@@@@@@ 1 + 262144 | 0 + + xscreensaver + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@ 2 + 32768 | 0 + 65536 |@@@@@@@@@@@@@@@@@@@@ 2 + 131072 | 0 + +gnome-vfs-daemon + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 32768 | 0 + 65536 |@@@@@@@@@@@@@@@@ 2 + 131072 | 0 + + gnome-panel + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@ 1 + 32768 |@@@@@@@@@@@@@@@@ 2 + 65536 | 0 + 131072 |@@@@@@@@@@@@@@@@ 2 + 262144 | 0 + + svc.startd + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 10 + 32768 |@@@@@@@@@@@ 4 + 65536 |@@@ 1 + 131072 | 0 + + nscd + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 25 + 32768 |@ 1 + 65536 | 0 + 131072 |@ 1 + 262144 | 0 + +gnome-netstatus- + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32768 | 0 + 65536 | 0 + 131072 | 0 + 262144 | 0 + 524288 | 0 + 1048576 |@@@@@@@@@@@@@ 1 + 2097152 | 0 + + mixer_applet2 + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@ 10 + 32768 |@@@@@@@@@@@@@@@@@ 19 + 65536 |@@@@@@@@@@@@@@ 16 + 131072 | 0 + + soffice.bin + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@ 7 + 32768 |@@@@@@@@@@@@@@@@@@@ 14 + 65536 |@@@@@@@@ 6 + 131072 | 0 + 262144 |@@@ 2 + 524288 | 0 + 1048576 | 0 + 2097152 |@ 1 + 4194304 | 0 + + dtrace + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@ 8 + 32768 | 0 + 65536 | 0 + 131072 | 0 + 262144 |@@@ 1 + 524288 |@@@@@@@@@ 3 + 1048576 | 0 + 2097152 |@@@ 1 + 4194304 | 0 + + Xorg + value ------------- Distribution ------------- count + 32768 | 0 + 65536 |@@@@@@@@@@@@@@@@@@@@ 15 + 131072 |@@@@@@@@ 6 + 262144 |@@@@@@@@@@@@ 9 + 524288 | 0 + + java_vm + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@ 101 + 32768 |@@@@@@@@@@@@@@@@ 84 + 65536 |@@@@ 20 + 131072 | 0 + + gnome-terminal + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@ 12 + 65536 |@@@@@@@@@@@ 8 + 131072 |@ 1 + 262144 | 0 + 524288 |@@@@@@@@@@@@ 9 + 1048576 | 0 + + acroread + value ------------- Distribution ------------- count + 8192 | 0 + 16384 | 1 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 188 + 65536 |@@@@@@@@ 47 + 131072 |@@ 10 + 262144 | 0 + + mozilla-bin + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@ 21 + 32768 |@@@@@ 13 + 65536 |@@@@@@@@@@@@@ 36 + 131072 |@@@@@@@ 19 + 262144 |@@@ 9 + 524288 |@@ 5 + 1048576 |@ 2 + 2097152 |@@ 5 + 4194304 | 0 + + KERNEL + value ------------- Distribution ------------- count + 4096 | 0 + 8192 |@@@@@@@@@@@@@@@@@@@@@@@@@@ 1085 + 16384 |@@@@@@@@@@@ 443 + 32768 |@@ 98 + 65536 | 5 + 131072 | 1 + 262144 | 1 + 524288 | 0 + 1048576 | 11 + 2097152 | 0 + + fsflush + value ------------- Distribution ------------- count + 131072 | 0 + 262144 |@@@@@@@ 1 + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 2097152 | 0 + 4194304 | 0 + 8388608 | 0 + 16777216 | 0 + 33554432 |@@@@@@@ 1 + 67108864 | 0 + + IDLE + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 | 1 + 2097152 | 0 + 4194304 |@ 13 + 8388608 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 411 + 16777216 |@@@ 31 + 33554432 | 0 + + + diff --git a/cddl/contrib/dtracetoolkit/Examples/cputimes_example.txt b/cddl/contrib/dtracetoolkit/Examples/cputimes_example.txt new file mode 100644 index 000000000000..253a7a34bd6e --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/cputimes_example.txt @@ -0,0 +1,210 @@ +The following demonstrates running the cputimes program on an idle system. +We use an interval of 1 second and a count of 3, + + # ./cputimes 1 3 + 2005 Apr 27 23:37:58, + THREADS TIME (ns) + KERNEL 10795499 + PROCESS 20941091 + IDLE 970707443 + 2005 Apr 27 23:37:59, + THREADS TIME (ns) + KERNEL 8919418 + PROCESS 77446789 + IDLE 910555040 + 2005 Apr 27 23:38:00, + THREADS TIME (ns) + KERNEL 8615123 + PROCESS 78314246 + IDLE 810100417 + +In the above output, we can see a breakdown of CPU time into the catagories +KERNEL, PROCESS and IDLE. The time is measured in nanoseconds. Most of the +time is in the IDLE category, as the system is idle. Very little time +was spent serving the kernel. + + + + +In the following example, several programs are run to hog the CPUs, + + # ./cputimes 1 3 + 2005 Apr 27 23:40:58, + THREADS TIME (ns) + KERNEL 11398807 + PROCESS 992254664 + 2005 Apr 27 23:40:59, + THREADS TIME (ns) + KERNEL 9205260 + PROCESS 987561182 + 2005 Apr 27 23:41:00, + THREADS TIME (ns) + KERNEL 9196669 + PROCESS 877850474 + +Now there is no IDLE category, as the system is 100% utilised. +The programs were the following, + + while :; do :; done & + +which keeps the CPU busy. + + + + +In the following example a different style of program is run to hog the CPUs, + + while :; do date; done + +This causes many processes to be created and destroyed in a hurry, and can +be difficult to troubleshoot (tools like prstat cannot sample quick enough +to easily identify what is going on). The following is the cputimes output, + + # ./cputimes 1 3 + 2005 Apr 27 23:45:30, + THREADS TIME (ns) + KERNEL 192647392 + PROCESS 835397568 + 2005 Apr 27 23:45:31, + THREADS TIME (ns) + KERNEL 168773713 + PROCESS 810825730 + 2005 Apr 27 23:45:32, + THREADS TIME (ns) + KERNEL 151676122 + PROCESS 728477272 + +Now the kernel is doing a substantial amount of work to create and destroy +these processes. + + + + +In the following example, a large amount of network activity occurs while +cputimes is running, + + # ./cputimes 1 6 + 2005 Apr 27 23:49:29, + THREADS TIME (ns) + KERNEL 10596399 + PROCESS 21793920 + IDLE 974395713 + 2005 Apr 27 23:49:30, + THREADS TIME (ns) + KERNEL 251465759 + IDLE 357436576 + PROCESS 508986422 + 2005 Apr 27 23:49:31, + THREADS TIME (ns) + IDLE 9758227 + KERNEL 367645318 + PROCESS 385427847 + 2005 Apr 27 23:49:32, + THREADS TIME (ns) + IDLE 28351679 + KERNEL 436022725 + PROCESS 451304688 + 2005 Apr 27 23:49:33, + THREADS TIME (ns) + KERNEL 262586158 + PROCESS 325238896 + IDLE 358243503 + 2005 Apr 27 23:49:34, + THREADS TIME (ns) + KERNEL 10075578 + PROCESS 238170506 + IDLE 647956998 + +Initially the system is idle. A command is run to cause heavy network +activity, which peaks during the fourth sample - during which the kernel +is using around 40% of the CPU. The Solaris 10 command "intrstat" can +help to analyse this activity further. + + + + +Longer samples are possible. The following is a 60 second sample, + + # ./cputimes 60 1 + 2005 Apr 27 23:53:02, + THREADS TIME (ns) + KERNEL 689808449 + PROCESS 8529562214 + IDLE 50406951876 + # + + + + +cputimes has a "-a" option to print all processes. The following is a +single 1 second sample with -a, + + # ./cputimes -a 1 1 + 2005 Apr 28 00:00:32, + THREADS TIME (ns) + svc.startd 51042 + nautilus 130645 + in.routed 131823 + fmd 152822 + nscd 307042 + dsdm 415799 + mixer_applet2 551066 + gnome-smproxy 587234 + xscreensaver 672270 + fsflush 1060196 + java_vm 1552988 + wnck-applet 2060870 + dtrace 2398658 + acroread 2614687 + soffice.bin 2825117 + mozilla-bin 5497488 + KERNEL 13541120 + metacity 28924204 + gnome-terminal 74304348 + Xorg 289631407 + IDLE 465054209 + +The times are in nanoseconds, and multiple processes with the same name +have their times aggregated. The above output is at an amazing resolution - +svc.startd ran for 51 microseconds, and soffice.bin ran for 28 milliseconds. + + + + +The following is a 10 second sample on an idle desktop, + + # ./cputimes -a 10 1 + 2005 Apr 28 00:03:57, + THREADS TIME (ns) + snmpd 127859 + fmd 171897 + inetd 177134 + svc.configd 185006 + mapping-daemon 197674 + miniserv.pl 305603 + gconfd-2 330511 + xscreensaver 443207 + sendmail 473434 + nautilus 506799 + gnome-vfs-daemon 549037 + gnome-panel 770631 + nscd 885353 + svc.startd 1181286 + gnome-netstatus- 4329671 + mixer_applet2 4833519 + dtrace 6244366 + in.routed 6556075 + fsflush 9553155 + soffice.bin 13954327 + java_vm 16285243 + acroread 32126193 + gnome-terminal 34891991 + Xorg 35553412 + mozilla-bin 67855629 + KERNEL 94834997 + IDLE 9540941846 + +Wow, maybe not as idle as I thought! + + + diff --git a/cddl/contrib/dtracetoolkit/Examples/cputypes_example.txt b/cddl/contrib/dtracetoolkit/Examples/cputypes_example.txt new file mode 100644 index 000000000000..158a43f15875 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/cputypes_example.txt @@ -0,0 +1,40 @@ +The following are demonstrations of the cputypes.d script, + + +This is running cputypes.d on a desktop, + + # cputypes.d + CPU CHIP PSET LGRP CLOCK TYPE FPU + 0 0 0 0 867 i386 i387 compatible + +fairly boring. + + + +The following is a multi CPU x86 server, + + # cputypes.d + CPU CHIP PSET LGRP CLOCK TYPE FPU + 0 0 0 0 2791 i386 i387 compatible + 1 3 1 0 2791 i386 i387 compatible + 2 0 0 0 2791 i386 i387 compatible + 3 3 0 0 2791 i386 i387 compatible + +Much more interesting! We can see from the CHIP field that there is actually +two CPUs, each with two cores. There is also two processor sets (0, 1). + +The CPUs were printed in CPU id order by mere chance. + + + +Here is a multi CPU SPARC server, + + # cputypes.d + CPU CHIP PSET LGRP CLOCK TYPE FPU + 0 0 0 0 400 sparcv9 sparcv9 + 1 1 0 0 400 sparcv9 sparcv9 + 4 4 0 0 400 sparcv9 sparcv9 + 5 5 0 0 400 sparcv9 sparcv9 + + + diff --git a/cddl/contrib/dtracetoolkit/Examples/cpuwalk_example.txt b/cddl/contrib/dtracetoolkit/Examples/cpuwalk_example.txt new file mode 100644 index 000000000000..34afa959815e --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/cpuwalk_example.txt @@ -0,0 +1,85 @@ +The following is a demonstration of the cpuwalk.d script, + + +cpuwalk.d is not that useful on a single CPU server, + + # cpuwalk.d + Sampling... Hit Ctrl-C to end. + ^C + + PID: 18843 CMD: bash + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 30 + 1 | 0 + + PID: 8079 CMD: mozilla-bin + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 10 + 1 | 0 + +The output above shows that PID 18843, "bash", was sampled on CPU 0 a total +of 30 times (we sample at 1000 hz). + + + +The following is a demonstration of running cpuwalk.d with a 5 second +duration. This is on a 4 CPU server running a multithreaded CPU bound +application called "cputhread", + + # cpuwalk.d 5 + Sampling... + + PID: 3 CMD: fsflush + + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 30 + 3 | 0 + + PID: 12186 CMD: cputhread + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@ 4900 + 1 |@@@@@@@@@@ 4900 + 2 |@@@@@@@@@@ 4860 + 3 |@@@@@@@@@@ 4890 + 4 | 0 + +As we are sampling at 1000 hz, the application cputhread is indeed running +concurrently across all available CPUs. We measured the applicaiton on +CPU 0 a total of 4900 times, on CPU 1 a total of 4900 times, etc. As there +are around 5000 samples per CPU available in this 5 second 1000 hz sample, +the application is using almost all the CPU capacity in this server well. + + + +The following is a similar demonstration, this time running a multithreaded +CPU bound application called "cpuserial" that has a poor use of locking +such that the threads "serialise", + + + # cpuwalk.d 5 + Sampling... + + PID: 12194 CMD: cpuserial + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@ 470 + 1 |@@@@@@ 920 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@ 3840 + 3 |@@@@@@ 850 + 4 | 0 + +In the above, we can see that this CPU bound application is not making +efficient use of the CPU resources available, only reaching 3840 samples +on CPU 2 out of a potential 5000. This problem was caused by a poor use +of locks. + + + diff --git a/cddl/contrib/dtracetoolkit/Examples/crash_example.txt b/cddl/contrib/dtracetoolkit/Examples/crash_example.txt new file mode 100644 index 000000000000..f0034d3b74d9 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/crash_example.txt @@ -0,0 +1,68 @@ +The following is an example of the crashed application script, crash.d +This demonstration is for version 0.80 of crash.d, newer versions may +produce enhanced output. + +Here is the report generated as crash.d catches a crashing procmail process, + +# ./crash.d +Waiting for crashing applications... + +----------------------------------------------------- +CRASH DETECTED at 2005 May 30 19:41:34 +----------------------------------------------------- +Type: SIGSEGV +Program: procmail +Args: procmail -m\0 +PID: 2877 +TID: 1 +LWPs: 1 +PPID: 1778 +UID: 100 +GID: 1 +TaskID: 76 +ProjID: 3 +PoolID: 0 +ZoneID: 0 +zone: global +CWD: /usr/include/sys +errno: 0 + +User Stack Backtrace, + procmail`sendcomsat+0x24 + procmail`Terminate+0x76 + procmail`0x805a2b0 + procmail`0x805a40f + libc.so.1`__sighndlr+0xf + libc.so.1`call_user_handler+0x22b + libc.so.1`sigacthandler+0xbb + 0xffffffff + procmail`rread+0x1d + procmail`0x805bcb4 + procmail`read2blk+0x6b + procmail`readdyn+0x1f + procmail`readmail+0x181 + procmail`main+0x532 + procmail`_start+0x5d + +Kernel Stack Backtrace, + genunix`sigaddqa+0x3f + genunix`trapsig+0xdb + unix`trap+0xc2b + unix`_cmntrap+0x83 + +Ansestors, + 2877 procmail -m\0 + 1778 bash\0 + 1777 xterm -bg black -fg grey70 -sl 500 -vb\0 + 1 /sbin/init\0 + 0 sched\0 + +Times, + User: 0 ticks + Sys: 1 ticks + Elapsed: 3307 ms + +Sizes, + Heap: 16388 bytes + Stack: 8192 bytes + diff --git a/cddl/contrib/dtracetoolkit/Examples/creatbyproc_example.txt b/cddl/contrib/dtracetoolkit/Examples/creatbyproc_example.txt new file mode 100644 index 000000000000..295e07ff2fbb --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/creatbyproc_example.txt @@ -0,0 +1,23 @@ +The following is an example of the creatbyproc.d script, + + +Here we run creatbyproc.d for several seconds, + + # ./creatbyproc.d + dtrace: script './creatbyproc.d' matched 2 probes + CPU ID FUNCTION:NAME + 0 5438 creat64:entry touch /tmp/newfile + 0 5438 creat64:entry sh /tmp/mpLaaOik + 0 5438 creat64:entry sh /dev/null + ^C + +In another window, the following commands were run, + + touch /tmp/newfile + man ls + +The file creation activity caused by these commands can be seen in the +output by creatbyproc.d + + + diff --git a/cddl/contrib/dtracetoolkit/Examples/cswstat_example.txt b/cddl/contrib/dtracetoolkit/Examples/cswstat_example.txt new file mode 100644 index 000000000000..d45347c64f33 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/cswstat_example.txt @@ -0,0 +1,25 @@ +The following is an example of the cswstat.d script, + + # cswstat.d + TIME NUM CSWTIME AVGTIME + 2005 May 17 01:57:21 276 2407 8 + 2005 May 17 01:57:22 283 2251 7 + 2005 May 17 01:57:23 259 2098 8 + 2005 May 17 01:57:24 268 2169 8 + 2005 May 17 01:57:25 1248 10864 8 + 2005 May 17 01:57:26 2421 21263 8 + 2005 May 17 01:57:27 2183 19804 9 + 2005 May 17 01:57:28 1980 18640 9 + 2005 May 17 01:57:29 794 7422 9 + 2005 May 17 01:57:30 275 2233 8 + 2005 May 17 01:57:31 288 2338 8 + 2005 May 17 01:57:32 545 4154 7 + 2005 May 17 01:57:33 264 2149 8 + ^C + +In the above output, the average context switch time is 8 microseconds. +During the sample there was a burst of activity, increasing the number +of context switches per second from around 270 to over 2000. The time +consumed by all of these context switches in total is printed, peaking +at 21 ms. + diff --git a/cddl/contrib/dtracetoolkit/Examples/dappprof_example.txt b/cddl/contrib/dtracetoolkit/Examples/dappprof_example.txt new file mode 100644 index 000000000000..a2c3935939c2 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/dappprof_example.txt @@ -0,0 +1,71 @@ +The following is a demonstration of the dappprof command, + +This is the usage for version 0.60, + + # dappprof -h + USAGE: dappprof [-cehoTU] [-u lib] { -p PID | command } + + -p PID # examine this PID + -a # print all details + -c # print syscall counts + -e # print elapsed times (us) + -o # print on cpu times + -T # print totals + -u lib # trace this library instead + -U # trace all libraries + user funcs + -b bufsize # dynamic variable buf size + eg, + dappprof df -h # run and examine "df -h" + dappprof -p 1871 # examine PID 1871 + dappprof -ap 1871 # print all data + + + +The following shows running dappprof with the "banner hello" command. +Elapsed and on-cpu times are printed (-eo), as well as counts (-c) and +totals (-T), + + # dappprof -eocT banner hello + + # # ###### # # #### + # # # # # # # + ###### ##### # # # # + # # # # # # # + # # # # # # # + # # ###### ###### ###### #### + + + CALL COUNT + __fsr 1 + main 1 + banprt 1 + banner 1 + banset 1 + convert 5 + banfil 5 + TOTAL: 15 + + CALL ELAPSED + banset 37363 + banfil 147407 + convert 149606 + banprt 423507 + banner 891088 + __fsr 1694349 + TOTAL: 3343320 + + CALL CPU + banset 7532 + convert 8805 + banfil 11092 + __fsr 15708 + banner 48696 + banprt 388853 + TOTAL: 480686 + +The above output has analysed user functions (the default). It makes it +easy to identify which function is being called the most (COUNT), which +is taking the most time (ELAPSED), and which is consuming the most CPU (CPU). +These times are totals for all the functions called. + + diff --git a/cddl/contrib/dtracetoolkit/Examples/dapptrace_example.txt b/cddl/contrib/dtracetoolkit/Examples/dapptrace_example.txt new file mode 100644 index 000000000000..f19606ceca51 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/dapptrace_example.txt @@ -0,0 +1,215 @@ +The following is a demonstration of the dapptrace command, + +This is the usage for version 0.60, + + # dapptrace -h + USAGE: dapptrace [-acdeholFLU] [-u lib] { -p PID | command } + + -p PID # examine this PID + -a # print all details + -c # print syscall counts + -d # print relative times (us) + -e # print elapsed times (us) + -F # print flow indentation + -l # print pid/lwpid + -o # print CPU on cpu times + -u lib # trace this library instead + -U # trace all libraries + user funcs + -b bufsize # dynamic variable buf size + eg, + dapptrace df -h # run and examine "df -h" + dapptrace -p 1871 # examine PID 1871 + dapptrace -Fp 1871 # print using flow indents + dapptrace -eop 1871 # print elapsed and CPU times + + + +The following is an example of the default output. We run dapptrace with +the "banner hello" command, + + # dapptrace banner hi + + # # # + # # # + ###### # + # # # + # # # + # # # + + CALL(args) = return + -> __fsr(0x2, 0x8047D7C, 0x8047D88) + <- __fsr = 122 + -> main(0x2, 0x8047D7C, 0x8047D88) + -> banner(0x8047E3B, 0x80614C2, 0x8047D38) + -> banset(0x20, 0x80614C2, 0x8047DCC) + <- banset = 36 + -> convert(0x68, 0x8047DCC, 0x2) + <- convert = 319 + -> banfil(0x8061412, 0x80614C2, 0x8047DCC) + <- banfil = 57 + -> convert(0x69, 0x8047DCC, 0x2) + <- convert = 319 + -> banfil(0x8061419, 0x80614CA, 0x8047DCC) + <- banfil = 57 + <- banner = 118 + -> banprt(0x80614C2, 0x8047D38, 0xD27FB824) + <- banprt = 74 + +The default output shows user function calls. An entry is prefixed +with a "->", and the return has a "<-". + + + +Here we run dapptrace with the -F for flow indent option, + + # dapptrace -F banner hi + + # # # + # # # + ###### # + # # # + # # # + # # # + + CALL(args) = return + -> __fsr(0x2, 0x8047D7C, 0x8047D88) + <- __fsr = 122 + -> main(0x2, 0x8047D7C, 0x8047D88) + -> banner(0x8047E3B, 0x80614C2, 0x8047D38) + -> banset(0x20, 0x80614C2, 0x8047DCC) + <- banset = 36 + -> convert(0x68, 0x8047DCC, 0x2) + <- convert = 319 + -> banfil(0x8061412, 0x80614C2, 0x8047DCC) + <- banfil = 57 + -> convert(0x69, 0x8047DCC, 0x2) + <- convert = 319 + -> banfil(0x8061419, 0x80614CA, 0x8047DCC) + <- banfil = 57 + <- banner = 118 + -> banprt(0x80614C2, 0x8047D38, 0xD27FB824) + <- banprt = 74 + +The above output illustrates the flow of the program, which functions +call which other functions. + + + +Now the same command is run with -d to display relative timestamps, + + # dapptrace -dF banner hi + + # # # + # # # + ###### # + # # # + # # # + # # # + + RELATIVE CALL(args) = return + 2512 -> __fsr(0x2, 0x8047D7C, 0x8047D88) + 2516 <- __fsr = 122 + 2518 -> main(0x2, 0x8047D7C, 0x8047D88) + 2863 -> banner(0x8047E3B, 0x80614C2, 0x8047D38) + 2865 -> banset(0x20, 0x80614C2, 0x8047DCC) + 2872 <- banset = 36 + 2874 -> convert(0x68, 0x8047DCC, 0x2) + 2877 <- convert = 319 + 2879 -> banfil(0x8061412, 0x80614C2, 0x8047DCC) + 2882 <- banfil = 57 + 2883 -> convert(0x69, 0x8047DCC, 0x2) + 2885 <- convert = 319 + 2886 -> banfil(0x8061419, 0x80614CA, 0x8047DCC) + 2888 <- banfil = 57 + 2890 <- banner = 118 + 2892 -> banprt(0x80614C2, 0x8047D38, 0xD27FB824) + 3214 <- banprt = 74 + +The relative times are in microseconds since the program's invocation. Great! + + + +Even better is if we use the -eo options, to print elapsed times and on-cpu +times, + + # dapptrace -eoF banner hi + + # # # + # # # + ###### # + # # # + # # # + # # # + + ELAPSD CPU CALL(args) = return + . . -> __fsr(0x2, 0x8047D7C, 0x8047D88) + 41 4 <- __fsr = 122 + . . -> main(0x2, 0x8047D7C, 0x8047D88) + . . -> banner(0x8047E3B, 0x80614C2, 0x8047D38) + . . -> banset(0x20, 0x80614C2, 0x8047DCC) + 29 6 <- banset = 36 + . . -> convert(0x68, 0x8047DCC, 0x2) + 26 3 <- convert = 319 + . . -> banfil(0x8061412, 0x80614C2, 0x8047DCC) + 25 2 <- banfil = 57 + . . -> convert(0x69, 0x8047DCC, 0x2) + 23 1 <- convert = 319 + . . -> banfil(0x8061419, 0x80614CA, 0x8047DCC) + 23 1 <- banfil = 57 + 309 28 <- banner = 118 + . . -> banprt(0x80614C2, 0x8047D38, 0xD27FB824) + 349 322 <- banprt = 74 + +Now it is easy to see which functions take the longest (elapsed), and +which consume the most CPU cycles. + + + +The following demonstrates the -U option, to trace all libraries, + + # dapptrace -U banner hi + + # # # + # # # + ###### # + # # # + # # # + # # # + + CALL(args) = return + -> ld.so.1:_rt_boot(0x8047E34, 0x8047E3B, 0x0) + -> ld.so.1:_setup(0x8047D38, 0x20AE4, 0x3) + -> ld.so.1:setup(0x8047D88, 0x8047DCC, 0x0) + -> ld.so.1:fmap_setup(0x0, 0xD27FB2E4, 0xD27FB824) + <- ld.so.1:fmap_setup = 125 + -> ld.so.1:addfree(0xD27FD3C0, 0xC40, 0x0) + <- ld.so.1:addfree = 65 + -> ld.so.1:security(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF) + <- ld.so.1:security = 142 + -> ld.so.1:readenv_user(0x8047D88, 0xD27FB204, 0xD27FB220) + -> ld.so.1:ld_str_env(0x8047E3E, 0xD27FB204, 0xD27FB220) + <- ld.so.1:ld_str_env = 389 + -> ld.so.1:ld_str_env(0x8047E45, 0xD27FB204, 0xD27FB220) + <- ld.so.1:ld_str_env = 389 + -> ld.so.1:ld_str_env(0x8047E49, 0xD27FB204, 0xD27FB220) + <- ld.so.1:ld_str_env = 389 + -> ld.so.1:ld_str_env(0x8047E50, 0xD27FB204, 0xD27FB220) + -> ld.so.1:strncmp(0x8047E53, 0xD27F7BEB, 0x4) + <- ld.so.1:strncmp = 113 + -> ld.so.1:rd_event(0xD27FB1F8, 0x3, 0x0) + [...4486 lines deleted...] + -> ld.so.1:_lwp_mutex_unlock(0xD27FD380, 0xD27FB824, 0x8047C04) + <- ld.so.1:_lwp_mutex_unlock = 47 + <- ld.so.1:rt_mutex_unlock = 34 + -> ld.so.1:rt_bind_clear(0x1, 0xD279ECC0, 0xD27FDB2C) + <- ld.so.1:rt_bind_clear = 34 + <- ld.so.1:leave = 210 + <- ld.so.1:elf_bndr = 803 + <- ld.so.1:elf_rtbndr = 35 + +The output was huge, around 4500 lines long. Function names are prefixed +with their library name, eg "ld.so.1". + +This full output should be used with caution, as it enables so many probes +it could well be a burden on the system. + diff --git a/cddl/contrib/dtracetoolkit/Examples/dexplorer_example.txt b/cddl/contrib/dtracetoolkit/Examples/dexplorer_example.txt new file mode 100644 index 000000000000..cba6171c350e --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/dexplorer_example.txt @@ -0,0 +1,95 @@ +The following is a demonstration of the dexplorer program. + + +Here we run dexplorer with no arguments. By default it will sample various +system activities using DTrace at 5 seconds per sample. It creates an +output tar.gz file containing all the DTrace output, + + # dexplorer + Output dir will be the current dir (/export/home/root/DTrace/Dexplorer). + Hit enter for yes, or type path: + Starting dexplorer ver 0.70. + Sample interval is 5 seconds. Total run is > 100 seconds. + 0% Interrupts by CPU... + 5% Interrupt counts... + 10% Dispatcher queue length by CPU... + 15% Sdt counts... + 20% Pages paged in by process name... + 25% Files opened count... + 30% Disk I/O size distribution by process name... + 35% Minor faults by process name... + 40% Vminfo data by process name... + 45% Mib data by mib statistic... + 50% TCP write bytes by process... + 55% Sample process @ 1000 Hz... + 60% Syscall count by process name... + 65% Syscall count by syscall... + 70% Read bytes by process name... + 75% Write bytes by process name... + 80% Sysinfo counts by process name... + 85% New process counts with arguments... + 90% Signal counts... + 95% Syscall error counts... + 100% Done. + File is de_jupiter_200506271803.tar.gz + +As each sample is taken, a line of output is printed above. The above example +is for version 0.70, newer versions of dexplorer are likely to print more +lines as they take more samples. + +The final line states which file all the output is now in. + + + + +The following displays the contents of a dexplorer file, + + # gunzip de_jupiter_200506271803.tar.gz + # tar xf de_jupiter_200506271803.tar + de_jupiter_200506271803 + de_jupiter_200506271803/Cpu + de_jupiter_200506271803/Cpu/interrupt_by_cpu + de_jupiter_200506271803/Cpu/interrupt_time + de_jupiter_200506271803/Cpu/dispqlen_by_cpu + de_jupiter_200506271803/Cpu/sdt_count + de_jupiter_200506271803/Disk + de_jupiter_200506271803/Disk/pgpgin_by_processname + de_jupiter_200506271803/Disk/fileopen_count + de_jupiter_200506271803/Disk/sizedist_by_processname + de_jupiter_200506271803/Mem + de_jupiter_200506271803/Mem/minf_by_processname + de_jupiter_200506271803/Mem/vminfo_by_processname + de_jupiter_200506271803/Net + de_jupiter_200506271803/Net/mib_data + de_jupiter_200506271803/Net/tcpw_by_process + de_jupiter_200506271803/Proc + de_jupiter_200506271803/Proc/sample_process + de_jupiter_200506271803/Proc/syscall_by_processname + de_jupiter_200506271803/Proc/syscall_count + de_jupiter_200506271803/Proc/readb_by_processname + de_jupiter_200506271803/Proc/writeb_by_processname + de_jupiter_200506271803/Proc/sysinfo_by_processname + de_jupiter_200506271803/Proc/newprocess_count + de_jupiter_200506271803/Proc/signal_count + de_jupiter_200506271803/Proc/syscall_errors + de_jupiter_200506271803/Info + de_jupiter_200506271803/Info/uname-a + de_jupiter_200506271803/Info/psrinfo-v + de_jupiter_200506271803/Info/prtconf + de_jupiter_200506271803/Info/df-k + de_jupiter_200506271803/Info/ifconfig-a + de_jupiter_200506271803/Info/ps-o + de_jupiter_200506271803/Info/uptime + de_jupiter_200506271803/log + + + +The following demonstrates running dexplorer in full quiet mode, + + # dexplorer -qy -d /var/tmp + # + +No text is written to the screen (-qy). The output file will have been +put in /var/tmp (-d). + + diff --git a/cddl/contrib/dtracetoolkit/Examples/diskhits_example.txt b/cddl/contrib/dtracetoolkit/Examples/diskhits_example.txt new file mode 100644 index 000000000000..6fe3a859a972 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/diskhits_example.txt @@ -0,0 +1,107 @@ +The following is a demonstration of the diskhits command. + + +Here we run diskhits on a large file, /extra1/contents with is 46 Mb, and +currently hasn't been accessed (so isn't in any cache). + +While diskhits is running, the file is grep'd in another window. This causes +the entire file to be read, + + # ./diskhits /extra1/contents + Tracing... Hit Ctrl-C to end. + ^C + Location (KB), + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@ 47 + 2303 |@@ 41 + 4606 |@@ 41 + 6909 |@@ 42 + 9212 |@@ 41 + 11515 |@@ 41 + 13818 |@@ 42 + 16121 |@@ 43 + 18424 |@@ 42 + 20727 |@@ 41 + 23030 |@@ 41 + 25333 |@@ 41 + 27636 |@@ 41 + 29939 |@@ 42 + 32242 |@@ 44 + 34545 |@@ 41 + 36848 |@@ 41 + 39151 |@@ 41 + 41454 |@@ 41 + 43757 |@@ 40 + >= 46060 | 0 + + Size (KB), + + value ------------- Distribution ------------- count + 4 | 0 + 8 | 6 + 16 | 10 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 818 + 64 | 0 + + Total RW: 46064 KB + +Ok, so the file was read evently with each access around 32 to 63 Kb in size, +and a total of 46 Mb read. This all makes sense, as it is reading the file +for the first time. + + + +Now the same file is grep'd with diskhits running, this time we can see what +effect caching the file has made, + + # ./diskhits /extra1/contents + Tracing... Hit Ctrl-C to end. + ^C + Location (KB), + + value ------------- Distribution ------------- count + 2303 | 0 + 4606 | 5 + 6909 |@ 67 + 9212 |@@@@ 170 + 11515 |@@@@@ 216 + 13818 |@@@@@ 224 + 16121 |@@@@@@ 287 + 18424 |@@@@@ 227 + 20727 |@@@ 144 + 23030 |@@ 75 + 25333 |@ 59 + 27636 |@ 42 + 29939 |@ 41 + 32242 |@ 44 + 34545 |@ 41 + 36848 |@ 41 + 39151 |@ 41 + 41454 |@ 41 + 43757 |@ 39 + >= 46060 | 0 + + Size (KB), + + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@ 1137 + 8 |@@@@@ 211 + 16 |@@ 111 + 32 |@@@@@@@@ 345 + 64 | 0 + + Total RW: 29392 KB + +The difference is dramatic. This time only 29 Mb is read, leaving around +17 Mb that was read from the cache. The way the file is read differs - +in the later half of the file it looks the same, but in the first half there +are many more events; oddly enough, this is because the early part of the +file is cached more, the extra events are likely to be much smaller in size - +as indicated in the difference in the size distribution. + +It appears that everything less that 4606 Kb has remained in the cache, with +zero hits for that range. + diff --git a/cddl/contrib/dtracetoolkit/Examples/dispqlen_example.txt b/cddl/contrib/dtracetoolkit/Examples/dispqlen_example.txt new file mode 100644 index 000000000000..f3542c00ea82 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/dispqlen_example.txt @@ -0,0 +1,62 @@ +This is a demonstration of the dispqlen.d script, + + +Here we run it on a single CPU desktop, + + # dispqlen.d + Sampling... Hit Ctrl-C to end. + ^C + CPU 0 + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1790 + 1 |@@@ 160 + 2 | 10 + 3 | 0 + +The output shows the length of the dispatcher queue is mostly 0. This is +evidence that the CPU is not very saturated. It does not indicate that the +CPU is idle - as we are measuring the length of the queue, not what is +on the CPU. + + + +Here it is run on a multi CPU server, + + # dispqlen.d + Sampling... Hit Ctrl-C to end. + ^C + CPU 1 + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1573 + 1 |@@@@@@@@@ 436 + 2 | 4 + 3 | 0 + + CPU 4 + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@ 1100 + 1 |@@@@@@@@@@@@@@@@@@ 912 + 2 | 1 + 3 | 0 + + CPU 0 + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@@@@ 846 + 1 |@@@@@@@@@@@@@@@@@@@@@@@ 1167 + 2 | 0 + + CPU 5 + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@ 397 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1537 + 2 |@@ 79 + 3 | 0 + +The above output shows that threads are queueing up on CPU 5 much more than +CPU 0. + diff --git a/cddl/contrib/dtracetoolkit/Examples/dnlcps_example.txt b/cddl/contrib/dtracetoolkit/Examples/dnlcps_example.txt new file mode 100644 index 000000000000..eed35b41f70a --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/dnlcps_example.txt @@ -0,0 +1,47 @@ +The following is a demonstration of the dnlcps.d script. + + +Here we run dnlcps.d for o few seconds, then hit Ctrl-C, + + # dnlcps.d + Tracing... Hit Ctrl-C to end. + ^C + CMD: bash PID: 12508 + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@@@ 2 + >= 1 |@@@@@@@@@@@@@@@@@@@@@@@@ 3 + + CMD: nscd PID: 109 + + value ------------- Distribution ------------- count + 0 | 0 + >= 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + + CMD: in.routed PID: 143 + + value ------------- Distribution ------------- count + 0 | 0 + >= 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 12 + + CMD: ls PID: 12508 + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@ 2 + >= 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 22 + + CMD: find PID: 12507 + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@ 5768 + >= 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@ 11263 + +A "find" command was running at the time, which had 11,263 hits on the DNLC +and 5768 misses. An "ls" command scored 22 hits. + +The above distribution output can help us identify if procesess +are both using the DNLC a lot, and what hit rate they are scoring. + diff --git a/cddl/contrib/dtracetoolkit/Examples/dnlcsnoop_example.txt b/cddl/contrib/dtracetoolkit/Examples/dnlcsnoop_example.txt new file mode 100644 index 000000000000..45915f1088b4 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/dnlcsnoop_example.txt @@ -0,0 +1,88 @@ +The following is a demonstration of the dnlcsnoop.d script. + + +Here we run dnlcsnoop.d, while in another window a "find /etc/default" +command is executed, + + # dnlcsnoop.d + PID CMD TIME HIT PATH + 9185 bash 9 Y /etc + 9185 bash 3 Y /etc + 12293 bash 9 Y /usr + 12293 bash 3 Y /usr/bin + 12293 bash 4 Y /usr/bin/find + 12293 bash 7 Y /lib + 12293 bash 3 Y /lib/ld.so.1 + 12293 find 6 Y /usr + 12293 find 3 Y /usr/bin + 12293 find 3 Y /usr/bin/find + 12293 find 3 Y /usr + 12293 find 3 Y /usr/lib + 12293 find 3 Y /usr/lib/ld.so.1 + 12293 find 3 Y /usr/lib/.. + 12293 find 3 Y /usr/.. + 12293 find 3 Y /lib + 12293 find 3 Y /lib/ld.so.1 + 12293 find 3 Y /usr + 12293 find 3 Y /usr/bin + 12293 find 2 Y /usr/bin/find + 12293 find 4 Y /var + 12293 find 3 Y /var/ld + 12293 find 3 Y /var/ld/ld.config + 12293 find 3 Y /lib + 12293 find 3 Y /lib/libc.so.1 + 12293 find 3 Y /lib + 12293 find 3 Y /lib/libc.so.1 + 12293 find 3 Y /lib + 12293 find 3 Y /lib/libc.so.1 + 12293 find 8 Y /export + 12293 find 4 Y /export/home + 12293 find 3 Y /export/home/root + 12293 find 4 Y /export/home/root/CacheKit-0.93 + 12293 find 3 Y /export + 12293 find 3 Y /export/home + 12293 find 3 Y /export/home/root + 12293 find 3 Y /export/home/root/CacheKit-0.93 + 12293 find 3 Y /etc + 12293 find 3 Y /etc/default + 12293 find 3 Y /etc + 12293 find 3 Y /etc/default + 12293 find 5 N /etc/default/cron + 12293 find 3 N /etc/default/devfsadm + 12293 find 4 N /etc/default/fs + 12293 find 4 N /etc/default/kbd + 12293 find 3 N /etc/default/keyserv + 12293 find 4 N /etc/default/nss + 12293 find 3 N /etc/default/syslogd + 12293 find 3 N /etc/default/tar + 12293 find 4 N /etc/default/utmpd + 12293 find 5 N /etc/default/init + 12293 find 4 Y /etc/default/login + 12293 find 4 Y /etc/default/su + 12293 find 3 N /etc/default/passwd + 12293 find 3 N /etc/default/dhcpagent + 12293 find 4 N /etc/default/inetinit + 12293 find 3 N /etc/default/ipsec + 12293 find 3 N /etc/default/mpathd + 12293 find 3 N /etc/default/telnetd + 12293 find 3 Y /etc/default/nfs + 12293 find 3 N /etc/default/autofs + 12293 find 9 Y /etc/default/ftp + 12293 find 5 N /etc/default/rpc.nisd + 12293 find 5 N /etc/default/nfslogd + 12293 find 4 N /etc/default/lu + 12293 find 6 N /etc/default/power + 12293 find 5 N /etc/default/sys-suspend + 12293 find 6 N /etc/default/metassist.xml + 12293 find 5 N /etc/default/yppasswdd + 12293 find 4 N /etc/default/webconsole + 12293 find 5 Y /export + 12293 find 4 Y /export/home + 12293 find 4 Y /export/home/root + 12293 find 4 Y /export/home/root/CacheKit-0.93 + +The DNLC is the Directory Name Lookup Cache. Here we can see name lookups, +and whether the cache returned a hit. "/export/home/root/CacheKit-0.93" was +looked up a few times - this was the current directory that the find +command was executed from. + diff --git a/cddl/contrib/dtracetoolkit/Examples/dnlcstat_example.txt b/cddl/contrib/dtracetoolkit/Examples/dnlcstat_example.txt new file mode 100644 index 000000000000..a6ce1d6ec3d5 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/dnlcstat_example.txt @@ -0,0 +1,40 @@ +The following is a demonstration of the dnlcstat command. + + +Here we run dnlcstat with no options. It prints a line every second, + + # dnlcstat + dnlc %hit hit miss + 0 0 0 + 0 0 0 + 93 95 7 + 89 1920 231 + 89 2130 243 + 91 2358 232 + 92 1476 124 + 92 1953 159 + 94 2416 134 + 94 1962 114 + 95 2113 101 + 97 1969 54 + 98 1489 26 + 41 564 786 + 40 622 913 + 35 520 952 + 27 937 2503 + 22 1696 5806 + 22 955 3281 + 21 1377 5059 + 31 2043 4516 + 22 1423 4968 + 13 550 3438 + 2 95 3810 + 0 58 6410 + 4 223 4433 + 4 198 4491 + 7 339 4383 + +In another window, a "find /" was run. We can see the DNLC activity above, +initially there are high hit rates in the DNLC - over 90%. Eventually +the find command exhausts the DNLC, and the hit rate drops to below 10%. + diff --git a/cddl/contrib/dtracetoolkit/Examples/dtruss_example.txt b/cddl/contrib/dtracetoolkit/Examples/dtruss_example.txt new file mode 100644 index 000000000000..107fc1978426 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/dtruss_example.txt @@ -0,0 +1,120 @@ +The following demonstrates the dtruss command - a DTrace version of truss. +This version is designed to be less intrusive and safer than running truss. + +dtruss has many options. Here is the help for version 0.70, + + USAGE: dtruss [-acdefholL] [-t syscall] { -p PID | -n name | command } + + -p PID # examine this PID + -n name # examine this process name + -t syscall # examine this syscall only + -a # print all details + -c # print syscall counts + -d # print relative times (us) + -e # print elapsed times (us) + -f # follow children + -l # force printing pid/lwpid + -o # print on cpu times + -L # don't print pid/lwpid + -b bufsize # dynamic variable buf size + eg, + dtruss df -h # run and examine "df -h" + dtruss -p 1871 # examine PID 1871 + dtruss -n tar # examine all processes called "tar" + dtruss -f test.sh # run test.sh and follow children + + + +For example, here we dtruss any process with the name "ksh" - the Korn shell, + + # dtruss -n ksh + PID/LWP SYSCALL(args) = return + 27547/1: llseek(0x3F, 0xE4E, 0x0) = 3662 0 + 27547/1: read(0x3F, "\0", 0x400) = 0 0 + 27547/1: llseek(0x3F, 0x0, 0x0) = 3662 0 + 27547/1: write(0x3F, "ls -l\n\0", 0x8) = 8 0 + 27547/1: fdsync(0x3F, 0x10, 0xFEC1D444) = 0 0 + 27547/1: lwp_sigmask(0x3, 0x20000, 0x0) = 0xFFBFFEFF 0 + 27547/1: stat64("/usr/bin/ls\0", 0x8047A00, 0xFEC1D444) = 0 0 + 27547/1: lwp_sigmask(0x3, 0x0, 0x0) = 0xFFBFFEFF 0 + [...] + +The output for each system call does not yet evaluate as much as truss does. + + + +In the following example, syscall elapsed and overhead times are measured. +Elapsed times represent the time from syscall start to finish; overhead +times measure the time spent on the CPU, + + # dtruss -eon bash + PID/LWP ELAPSD CPU SYSCALL(args) = return + 3911/1: 41 26 write(0x2, "l\0", 0x1) = 1 0 + 3911/1: 1001579 43 read(0x0, "s\0", 0x1) = 1 0 + 3911/1: 38 26 write(0x2, "s\0", 0x1) = 1 0 + 3911/1: 1019129 43 read(0x0, " \001\0", 0x1) = 1 0 + 3911/1: 38 26 write(0x2, " \0", 0x1) = 1 0 + 3911/1: 998533 43 read(0x0, "-\0", 0x1) = 1 0 + 3911/1: 38 26 write(0x2, "-\001\0", 0x1) = 1 0 + 3911/1: 1094323 42 read(0x0, "l\0", 0x1) = 1 0 + 3911/1: 39 27 write(0x2, "l\001\0", 0x1) = 1 0 + 3911/1: 1210496 44 read(0x0, "\r\0", 0x1) = 1 0 + 3911/1: 40 28 write(0x2, "\n\001\0", 0x1) = 1 0 + 3911/1: 9 1 lwp_sigmask(0x3, 0x2, 0x0) = 0xFFBFFEFF 0 + 3911/1: 70 63 ioctl(0x0, 0x540F, 0x80F6D00) = 0 0 + +A bash command was in another window, where the "ls -l" command was being +typed. The keystrokes can be seen above, along with the long elapsed times +(keystroke delays), and short overhead times (as the bash process blocks +on the read and leaves the CPU). + + + +Now dtruss is put to the test. Here we truss a test program that runs several +hundred smaller programs, which in turn generate thousands of system calls. + +First, as a "control" we run the program without a truss or dtruss running, + + # time ./test + real 0m38.508s + user 0m5.299s + sys 0m25.668s + +Now we try truss, + + # time truss ./test 2> /dev/null + real 0m41.281s + user 0m0.558s + sys 0m1.351s + +Now we try dtruss, + + # time dtruss ./test 2> /dev/null + real 0m46.226s + user 0m6.771s + sys 0m31.703s + +In the above test, truss slowed the program from 38 seconds to 41. dtruss +slowed the program from 38 seconds to 46, slightly slower that truss... + +Now we try follow mode "-f". The test program does run several hundred +smaller programs, so now there are plenty more system calls to track, + + # time truss -f ./test 2> /dev/null + real 2m28.317s + user 0m0.893s + sys 0m3.527s + +Now we try dtruss, + + # time dtruss -f ./test 2> /dev/null + real 0m56.179s + user 0m10.040s + sys 0m38.185s + +Wow, the difference is huge! truss slows the program from 38 to 148 seconds; +but dtruss has only slowed the program from 38 to 56 seconds. + + + + diff --git a/cddl/contrib/dtracetoolkit/Examples/dvmstat_example.txt b/cddl/contrib/dtracetoolkit/Examples/dvmstat_example.txt new file mode 100644 index 000000000000..1fb7fbb739d1 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/dvmstat_example.txt @@ -0,0 +1,91 @@ +The following is a demonstration of the dvmstat program, + + +Here we run dvmstat to monitor all processes called "find". In another +window, a "find /" command is run, + + # dvmstat -n find + re maj mf fr epi epo api apo fpi fpo sy + 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 + 6336 0 372 0 0 0 0 0 0 0 22255 + 1624 0 0 0 0 0 0 0 0 0 5497 + 2292 0 0 0 0 0 0 0 0 0 7715 + 13064 0 0 0 0 0 0 0 0 0 43998 + 7972 168 0 0 0 0 0 0 168 0 38361 + 468 636 0 0 0 0 0 0 636 0 13774 + 376 588 0 0 0 0 0 0 588 0 10723 + 80 636 0 0 0 0 0 0 656 0 11078 + 48 772 0 0 0 0 0 0 812 0 9841 + 16 1028 0 0 0 0 0 0 1056 0 10752 + 0 1712 0 0 0 0 0 0 1740 0 12176 + 4 1224 0 0 0 0 0 0 1236 0 9024 + +The output above is spectacular! When the find command is first run, +it begins be reading data from the file cache, as indicated by the "re" +reclaims, and a lack of "fpi" filesystem page ins. + +Eventually the find command travels to places which are not cached, we can +see the "re" value drops, and both the "maj" major faults and "fpi" values +increase. This transition from cache hits to file system activity is +very clear from the above output. + + + +Here we run a dvmstat to examine the PID 3778, + + # dvmstat -p 3778 + re maj mf fr epi epo api apo fpi fpo sy + 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 + 24 28 0 0 0 0 0 0 28 0 109 + 4 148 16 0 0 0 0 0 148 0 1883 + 16 412 384 0 0 0 0 0 412 0 21019 + 0 0 0 0 0 0 0 0 0 0 3 + 0 0 0 0 0 0 0 0 0 0 221 + 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 84 + 0 0 0 0 0 0 0 0 0 0 0 + +Here we can see the statistics for that process only. + + + +The following runs the date command through dvmstat, + + # dvmstat date + Sun Jun 12 17:44:24 EST 2005 + re maj mf fr epi epo api apo fpi fpo sy + 16 0 208 0 0 0 0 0 0 0 38 + +The values above are for the date command only. + + + +Now we run dvmstat on a tar command. Here we tar around 50Mb of files, +so the command takes around 20 seconds to complete, + + # dvmstat tar cf backup.tar DTrace + re maj mf fr epi epo api apo fpi fpo sy + 20 256 304 0 8 0 0 0 352 0 621 + 4540 56 896 0 0 0 0 0 4636 0 1005 + 4432 12 644 0 0 0 0 0 4384 0 906 + 680 180 136 0 8 0 0 0 1056 0 502 + 2328 60 468 0 0 0 0 0 2296 0 592 + 1300 380 272 0 0 0 0 0 1704 0 1095 + 2816 72 560 0 0 0 0 0 2940 0 709 + 4084 40 416 0 0 0 0 0 4220 0 894 + 2764 4 276 0 0 0 0 0 2700 0 566 + 1824 96 328 0 0 0 0 0 2072 0 556 + 3408 80 392 0 20 0 0 0 3496 0 857 + 2804 92 552 0 4 0 0 0 2924 0 741 + 1344 16 272 0 0 0 0 0 1376 0 289 + 3284 52 520 0 12 0 0 0 3260 0 743 + 4832 200 812 0 0 0 0 0 5292 0 1276 + 11052 56 2200 0 0 0 0 0 8676 0 2326 + 5256 328 1020 0 8 0 0 0 4404 0 1725 + re maj mf fr epi epo api apo fpi fpo sy + 404 340 72 0 64 0 0 0 536 0 1135 + +Great! Activity from the tar command such as "fpi"s can be clearly seen. + diff --git a/cddl/contrib/dtracetoolkit/Examples/errinfo_example.txt b/cddl/contrib/dtracetoolkit/Examples/errinfo_example.txt new file mode 100644 index 000000000000..1dcb28d29db9 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/errinfo_example.txt @@ -0,0 +1,90 @@ +This is an example of the errinfo program, which prints details on syscall +failures. + +By default it "snoops" syscall failures and prints their details, + + # ./errinfo + EXEC SYSCALL ERR DESC + wnck-applet read 11 Resource temporarily unavailable + Xorg read 11 Resource temporarily unavailable + nautilus read 11 Resource temporarily unavailable + Xorg read 11 Resource temporarily unavailable + dsdm read 11 Resource temporarily unavailable + Xorg read 11 Resource temporarily unavailable + Xorg pollsys 4 interrupted system call + mozilla-bin lwp_park 62 timer expired + gnome-netstatus- ioctl 12 Not enough core + mozilla-bin lwp_park 62 timer expired + Xorg read 11 Resource temporarily unavailable + mozilla-bin lwp_park 62 timer expired + [...] + +which is useful to see these events live, but can scroll off the screen +somewhat rapidly.. so, + + + +The "-c" option will count the number of errors. Hit Ctrl-C to stop the +sample. For example, + +# ./errinfo -c +Tracing... Hit Ctrl-C to end. +^C + EXEC SYSCALL ERR COUNT DESC + nscd fcntl 22 1 Invalid argument + xscreensaver read 11 1 Resource temporarily unavailable + inetd lwp_park 62 1 timer expired + svc.startd lwp_park 62 1 timer expired + svc.configd lwp_park 62 1 timer expired + ttymon ioctl 25 1 Inappropriate ioctl for device +gnome-netstatus- ioctl 12 2 Not enough core + mozilla-bin lwp_kill 3 2 No such process + mozilla-bin connect 150 5 operation now in progress + svc.startd portfs 62 8 timer expired + java_vm lwp_cond_wait 62 8 timer expired + soffice.bin read 11 9 Resource temporarily unavailable + gnome-terminal read 11 23 Resource temporarily unavailable + mozilla-bin recv 11 26 Resource temporarily unavailable + nautilus read 11 26 Resource temporarily unavailable +gnome-settings-d read 11 26 Resource temporarily unavailable + gnome-smproxy read 11 34 Resource temporarily unavailable + gnome-panel read 11 42 Resource temporarily unavailable + dsdm read 11 112 Resource temporarily unavailable + metacity read 11 128 Resource temporarily unavailable + mozilla-bin lwp_park 62 133 timer expired + Xorg pollsys 4 147 interrupted system call + wnck-applet read 11 179 Resource temporarily unavailable + mozilla-bin read 11 258 Resource temporarily unavailable + Xorg read 11 1707 Resource temporarily unavailable + +Ok, so Xorg has received 1707 of the same type of error for the syscall read(). + + + +The "-n" option lets us match on one type of process only. In the following +we match processes that have the name "mozilla-bin", + +# ./errinfo -c -n mozilla-bin +Tracing... Hit Ctrl-C to end. +^C + EXEC SYSCALL ERR COUNT DESC + mozilla-bin getpeername 134 1 Socket is not connected + mozilla-bin recv 11 2 Resource temporarily unavailable + mozilla-bin lwp_kill 3 2 No such process + mozilla-bin connect 150 5 operation now in progress + mozilla-bin lwp_park 62 207 timer expired + mozilla-bin read 11 396 Resource temporarily unavailable + + + +The "-p" option lets us examine one PID only. The following example examines +PID 1119, + +# ./errinfo -c -p 1119 +Tracing... Hit Ctrl-C to end. +^C + EXEC SYSCALL ERR COUNT DESC + Xorg pollsys 4 47 interrupted system call + Xorg read 11 669 Resource temporarily unavailable + + diff --git a/cddl/contrib/dtracetoolkit/Examples/execsnoop_example.txt b/cddl/contrib/dtracetoolkit/Examples/execsnoop_example.txt new file mode 100644 index 000000000000..e55682a9e64a --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/execsnoop_example.txt @@ -0,0 +1,78 @@ +The following is an example of execsnoop. As processes are executed their +details are printed out. Another user was logged in running a few commands +which can be viewed below, + + # ./execsnoop + UID PID PPID ARGS + 100 3008 2656 ls + 100 3009 2656 ls -l + 100 3010 2656 cat /etc/passwd + 100 3011 2656 vi /etc/hosts + 100 3012 2656 date + 100 3013 2656 ls -l + 100 3014 2656 ls + 100 3015 2656 finger + [...] + + + +In this example the command "man gzip" was executed. The output lets us +see what the man command is actually doing, + + # ./execsnoop + UID PID PPID ARGS + 100 3064 2656 man gzip + 100 3065 3064 sh -c cd /usr/share/man; tbl /usr/share/man/man1/gzip.1 |nroff -u0 -Tlp -man - + 100 3067 3066 tbl /usr/share/man/man1/gzip.1 + 100 3068 3066 nroff -u0 -Tlp -man - + 100 3066 3065 col -x + 100 3069 3064 sh -c trap '' 1 15; /usr/bin/mv -f /tmp/mpoMaa_f /usr/share/man/cat1/gzip.1 2> + 100 3070 3069 /usr/bin/mv -f /tmp/mpoMaa_f /usr/share/man/cat1/gzip.1 + 100 3071 3064 sh -c more -s /tmp/mpoMaa_f + 100 3072 3071 more -s /tmp/mpoMaa_f + ^C + + + +Execsnoop has other options, + + # ./execsnoop -h + USAGE: execsnoop [-a|-A|-sv] [-c command] + execsnoop # default output + -a # print all data + -A # dump all data, space delimited + -s # include start time, us + -v # include start time, string + -c command # command name to snoop + + + +In particular the verbose option for human readable timestamps is +very useful, + + # ./execsnoop -v + STRTIME UID PID PPID ARGS + 2005 Jan 22 00:07:22 0 23053 20933 date + 2005 Jan 22 00:07:24 0 23054 20933 uname -a + 2005 Jan 22 00:07:25 0 23055 20933 ls -latr + 2005 Jan 22 00:07:27 0 23056 20933 df -k + 2005 Jan 22 00:07:29 0 23057 20933 ps -ef + 2005 Jan 22 00:07:29 0 23057 20933 ps -ef + 2005 Jan 22 00:07:34 0 23058 20933 uptime + 2005 Jan 22 00:07:34 0 23058 20933 uptime + [...] + + + +It is also possible to match particular commands. Here we watch +anyone using the vi command only, + + # ./execsnoop -vc vi + STRTIME UID PID PPID ARGS + 2005 Jan 22 00:10:33 0 23063 20933 vi /etc/passwd + 2005 Jan 22 00:10:40 0 23064 20933 vi /etc/shadow + 2005 Jan 22 00:10:51 0 23065 20933 vi /etc/group + 2005 Jan 22 00:10:57 0 23066 20933 vi /.rhosts + [...] + + diff --git a/cddl/contrib/dtracetoolkit/Examples/fddist_example.txt b/cddl/contrib/dtracetoolkit/Examples/fddist_example.txt new file mode 100644 index 000000000000..3d943b9e0185 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/fddist_example.txt @@ -0,0 +1,38 @@ +The following is a demonstration of the fddist command, + + +Here fddist is run for a few seconds on an idle workstation, + + Tracing reads and writes... Hit Ctrl-C to end. + ^C + EXEC: dtrace PID: 3288 + + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 2 | 0 + + EXEC: mozilla-bin PID: 1659 + + value ------------- Distribution ------------- count + 3 | 0 + 4 |@@@@@@@@@@ 28 + 5 | 0 + 6 |@@@@@@@@@@@@@@@ 40 + 7 |@@@@@@@@@@@@@@@ 40 + 8 | 0 + + EXEC: Xorg PID: 1532 + + value ------------- Distribution ------------- count + 22 | 0 + 23 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 57 + 24 | 0 + +The above displays the usage pattern for process file descriptors. +We can see the Xorg process (PID 1532) has made 57 reads or writes to +it's file descriptor 23. + +The pfiles(1) command can be used to help determine what file +descriptor 23 actually is. + diff --git a/cddl/contrib/dtracetoolkit/Examples/filebyproc_example.txt b/cddl/contrib/dtracetoolkit/Examples/filebyproc_example.txt new file mode 100644 index 000000000000..8267da2fc083 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/filebyproc_example.txt @@ -0,0 +1,27 @@ +The following is an example of the filebyproc.d script, + + # filebyproc.d + dtrace: description 'syscall::open*:entry ' matched 2 probes + CPU ID FUNCTION:NAME + 0 14 open:entry gnome-netstatus- /dev/kstat + 0 14 open:entry man /var/ld/ld.config + 0 14 open:entry man /lib/libc.so.1 + 0 14 open:entry man /usr/share/man/man.cf + 0 14 open:entry man /usr/share/man/windex + 0 14 open:entry man /usr/share/man/man1/ls.1 + 0 14 open:entry man /usr/share/man/man1/ls.1 + 0 14 open:entry man /tmp/mpqea4RF + 0 14 open:entry sh /var/ld/ld.config + 0 14 open:entry sh /lib/libc.so.1 + 0 14 open:entry neqn /var/ld/ld.config + 0 14 open:entry neqn /lib/libc.so.1 + 0 14 open:entry neqn /usr/share/lib/pub/eqnchar + 0 14 open:entry tbl /var/ld/ld.config + 0 14 open:entry tbl /lib/libc.so.1 + 0 14 open:entry tbl /usr/share/man/man1/ls.1 + 0 14 open:entry nroff /var/ld/ld.config + [...] + +In the above example, the command "man ls" was run. Each file that was +attempted to be opened can be seen, along with the program name responsible. + diff --git a/cddl/contrib/dtracetoolkit/Examples/fspaging_example.txt b/cddl/contrib/dtracetoolkit/Examples/fspaging_example.txt new file mode 100644 index 000000000000..c29cb086b832 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/fspaging_example.txt @@ -0,0 +1,32 @@ +The following is a short sample of output from the fspaging.d script. + + +fspaging.d traces syscall read and writes, vnode interface reads, writes, +getpage and putpage, and disk io. + + # ./fspaging.d + Event Device RW Size Offset Path + disk_io dad1 R 1024 0 /extra1 + disk_io dad1 R 8192 0 <none> + disk_io dad1 R 2048 0 <none> + sc-write . W 51200 0 /extra1/outfile + fop_write . W 51200 0 /extra1/outfile + fop_getpage . R 8192 0 /extra1/50k + disk_io dad1 R 8192 0 /extra1/50k + disk_ra dad1 R 8192 8 /extra1/50k + fop_getpage . R 8192 8 /extra1/50k + disk_ra dad1 R 34816 16 /extra1/50k + fop_getpage . R 8192 16 /extra1/50k + fop_getpage . R 8192 24 /extra1/50k + fop_getpage . R 8192 32 /extra1/50k + fop_getpage . R 8192 40 /extra1/50k + fop_getpage . R 8192 48 /extra1/50k + fop_putpage . W 8192 0 /extra1/outfile + fop_putpage . W 8192 8 /extra1/outfile + fop_putpage . W 8192 16 /extra1/outfile + fop_putpage . W 8192 24 /extra1/outfile + fop_putpage . W 8192 32 /extra1/outfile + fop_putpage . W 8192 40 /extra1/outfile + disk_io dad1 W 51200 0 /extra1/outfile + +For a full discussion of this example, see fsrw_example.txt. diff --git a/cddl/contrib/dtracetoolkit/Examples/fsrw_example.txt b/cddl/contrib/dtracetoolkit/Examples/fsrw_example.txt new file mode 100644 index 000000000000..b153303738ee --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/fsrw_example.txt @@ -0,0 +1,129 @@ +The following are demonstrations of the fsrw.d script. + + +Here the fsrw.d script was running while a 50 Kbyte file was read, + + # ./fsrw.d + Event Device RW Size Offset Path + sc-read . R 8192 0 /extra1/50k + fop_read . R 8192 0 /extra1/50k + disk_io cmdk0 R 8192 0 /extra1/50k + disk_ra cmdk0 R 8192 8 /extra1/50k + sc-read . R 8192 8 /extra1/50k + fop_read . R 8192 8 /extra1/50k + disk_ra cmdk0 R 34816 16 /extra1/50k + sc-read . R 8192 16 /extra1/50k + fop_read . R 8192 16 /extra1/50k + sc-read . R 8192 24 /extra1/50k + fop_read . R 8192 24 /extra1/50k + sc-read . R 8192 32 /extra1/50k + fop_read . R 8192 32 /extra1/50k + sc-read . R 8192 40 /extra1/50k + fop_read . R 8192 40 /extra1/50k + sc-read . R 8192 48 /extra1/50k + fop_read . R 8192 48 /extra1/50k + sc-read . R 8192 50 /extra1/50k + fop_read . R 8192 50 /extra1/50k + ^C + +By looking closely at the Offset (Kbytes) and Size of each transaction, we +can see how the read() system calls (sc-read) were satisfied by the file +system. There were 8 read() system calls, and 3 disk events - 2 of which were +UFS read-ahead (disk_ra). The final read-ahead was for 34 Kbytes and began +with an offset of 16 Kbytes, which read the remaining file data (34 + 16 = 50 +Kbytes). The subsequent read() system calls and corresponding fop_read() calls +returned from the page cache. + + + +The following demonstrates how a logical I/O is broken up into multiple +physical I/O events. Here a dd command was used to read 1 Mbytes from the +/var/sadm/install/contents file while fsrw.d was tracing. + + # ./fsrw.d + Event Device RW Size Offset Path + sc-read . R 1048576 0 /var/sadm/install/contents + fop_read . R 1048576 0 /var/sadm/install/contents + disk_ra cmdk0 R 4096 72 /var/sadm/install/contents + disk_ra cmdk0 R 8192 96 <none> + disk_ra cmdk0 R 57344 96 /var/sadm/install/contents + disk_ra cmdk0 R 57344 152 /var/sadm/install/contents + disk_ra cmdk0 R 57344 208 /var/sadm/install/contents + disk_ra cmdk0 R 49152 264 /var/sadm/install/contents + disk_ra cmdk0 R 57344 312 /var/sadm/install/contents + disk_ra cmdk0 R 57344 368 /var/sadm/install/contents + disk_ra cmdk0 R 57344 424 /var/sadm/install/contents + disk_ra cmdk0 R 57344 480 /var/sadm/install/contents + disk_ra cmdk0 R 57344 536 /var/sadm/install/contents + disk_ra cmdk0 R 57344 592 /var/sadm/install/contents + disk_ra cmdk0 R 57344 648 /var/sadm/install/contents + disk_ra cmdk0 R 57344 704 /var/sadm/install/contents + disk_ra cmdk0 R 57344 760 /var/sadm/install/contents + disk_ra cmdk0 R 57344 816 /var/sadm/install/contents + disk_ra cmdk0 R 57344 872 /var/sadm/install/contents + disk_ra cmdk0 R 57344 928 /var/sadm/install/contents + disk_ra cmdk0 R 57344 984 /var/sadm/install/contents + disk_ra cmdk0 R 57344 1040 /var/sadm/install/contents + ^C + +Both the read() syscall (sc-read) and the fop_read() call asked the file system +for 1048576 bytes, which was then broken into numerous disk I/O events of up to +56 Kbytes in size. The 8192 byte read with a path of "<none>" is likely to be +the file system reading the indirect block pointers for the +/var/sadm/install/contents file (something DTrace could confirm in detail). + + + + +The following traces activity as a cp command copies a 50 Kbyte file. + + # ./fsrw.d + Event Device RW Size Offset Path + disk_io dad1 R 1024 0 /extra1 + disk_io dad1 R 8192 0 <none> + disk_io dad1 R 8192 0 <none> + disk_io dad1 R 2048 0 <none> + disk_io dad1 R 2048 0 <none> + sc-write . W 51200 0 /extra1/outfile + fop_write . W 51200 0 /extra1/outfile + disk_io dad1 R 8192 0 /extra1/50k + disk_ra dad1 R 8192 8 /extra1/50k + disk_ra dad1 R 34816 16 /extra1/50k + disk_io dad1 R 2048 0 <none> + disk_io dad1 W 49152 0 /extra1/outfile + ^C + +Reads including UFS read-ahead can be seen as the file is read. +The output finishes with disk writes as the new file is flushed to disk. +The syscall write() and fop_write() can be seen to the /extra1/outfile, +however there is no syscall read() or fop_read() to /extra1/50k - which +we may have expected to occur before the writes. This is due to the way +the cp command now works, it uses mmap() to map files in for reading. +This activity can be seen if we also trace fop_getpage() and fop_putpage(), +as the fspaging.d dtrace script does. + + # ./fspaging.d + Event Device RW Size Offset Path + disk_io dad1 R 1024 0 /extra1 + disk_io dad1 R 8192 0 <none> + disk_io dad1 R 2048 0 <none> + sc-write . W 51200 0 /extra1/outfile + fop_write . W 51200 0 /extra1/outfile + fop_getpage . R 8192 0 /extra1/50k + disk_io dad1 R 8192 0 /extra1/50k + disk_ra dad1 R 8192 8 /extra1/50k + fop_getpage . R 8192 8 /extra1/50k + disk_ra dad1 R 34816 16 /extra1/50k + fop_getpage . R 8192 16 /extra1/50k + fop_getpage . R 8192 24 /extra1/50k + fop_getpage . R 8192 32 /extra1/50k + fop_getpage . R 8192 40 /extra1/50k + fop_getpage . R 8192 48 /extra1/50k + fop_putpage . W 8192 0 /extra1/outfile + fop_putpage . W 8192 8 /extra1/outfile + fop_putpage . W 8192 16 /extra1/outfile + fop_putpage . W 8192 24 /extra1/outfile + fop_putpage . W 8192 32 /extra1/outfile + fop_putpage . W 8192 40 /extra1/outfile + disk_io dad1 W 51200 0 /extra1/outfile + diff --git a/cddl/contrib/dtracetoolkit/Examples/guess_example.txt b/cddl/contrib/dtracetoolkit/Examples/guess_example.txt new file mode 100644 index 000000000000..74be8b3a4d81 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/guess_example.txt @@ -0,0 +1,39 @@ +The following is a demonstration of the guess.d script, + + +guess.d is a guessing game written in DTrace. It goes like this, + + # ./guess.d + guess.d - Guess a number between 1 and 100 + + Enter guess 1: 50 + Lower... + Enter guess 2: 25 + Higher... + Enter guess 3: 37 + Higher... + Enter guess 4: 44 + Higher... + Enter guess 5: 48 + Lower... + Enter guess 6: 46 + Lower... + Enter guess 7: 45 + Correct! That took 7 guesses. + + Please enter your name: Brendan Gregg + + Previous high scores, + Fred Nurk 7 + Brendan Gregg 7 + +It was written as a demonstration of the same code written in dozens of +languages. It makes a good demonstration, as it covers integer and string +variables, conditional statements, loops, keyboard input, screen output, +and file input and output. + +Written in DTrace however, is not such a good demonstration! DTrace doesn't +have loops (it doesn't really need them either) which made the code a +little odd. DTrace also doesn't have keyboard input... So this script is +somewhat amusing as an example, but not terribly useful. + diff --git a/cddl/contrib/dtracetoolkit/Examples/hotkernel_example.txt b/cddl/contrib/dtracetoolkit/Examples/hotkernel_example.txt new file mode 100644 index 000000000000..d8a5aec0b98f --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/hotkernel_example.txt @@ -0,0 +1,153 @@ +The following are demonstrations of the hotkernel DTrace program. + + +Here hotkernel is run for a couple of seconds then Ctrl-C is hit, + + # ./hotkernel + Sampling... Hit Ctrl-C to end. + ^C + FUNCTION COUNT PCNT + unix`swtch 1 0.1% + pcplusmp`apic_redistribute_compute 1 0.1% + genunix`strrput 1 0.1% + unix`sys_call 1 0.1% + genunix`fsflush_do_pages 1 0.1% + TS`ts_wakeup 1 0.1% + genunix`callout_schedule_1 1 0.1% + unix`page_create_putback 1 0.1% + unix`mutex_enter 4 0.3% + unix`cpu_halt 1575 99.2% + +The output summarises which kernel-level function was sampled on the +CPU the most. This report shows that unix`cpu_halt was sampled 1575 +times, which was 99.2% of the kernel-level samples. + +As it turns out, unix`cpu_halt is called on this x86 server as part of the +kernel idle thread - explaining why it is so often found on the CPU, + + # dtrace -n 'fbt::cpu_halt:entry { @[stack()] = count(); }' + dtrace: description 'fbt::cpu_halt:entry ' matched 1 probe + ^C + + unix`idle+0x3b + unix`thread_start+0x3 + 956 + +This kernel stack trace indicates that cpu_halt() is called by idle(). + +The following is a SPARC example, + + # ./hotkernel + Sampling... Hit Ctrl-C to end. + ^C + FUNCTION COUNT PCNT + genunix`fop_ioctl 1 0.1% + genunix`allocb_cred 1 0.1% + genunix`poll_common 1 0.1% + genunix`cv_block 1 0.1% + genunix`strioctl 1 0.1% + genunix`disp_lock_exit 1 0.1% + genunix`crfree 1 0.1% + ufs`ufs_getpage 1 0.1% + SUNW,UltraSPARC-IIi`copyin 1 0.1% + genunix`strmakedata 1 0.1% + genunix`cv_waituntil_sig 1 0.1% + SUNW,UltraSPARC-IIi`prefetch_page_r 1 0.1% + unix`set_freemem 1 0.1% + unix`page_trylock 1 0.1% + genunix`anon_get_ptr 1 0.1% + unix`page_hashin 1 0.1% + genunix`bt_getlowbit 1 0.1% + unix`pp_load_tlb 1 0.1% + unix`_resume_from_idle 1 0.1% + unix`hat_pageunload 1 0.1% + genunix`strrput 1 0.1% + genunix`strpoll 1 0.1% + unix`page_do_hashin 1 0.1% + unix`cpu_vm_stats_ks_update 1 0.1% + genunix`sleepq_wakeone_chan 1 0.1% + unix`lock_set_spl 1 0.1% + tl`tl_wput 1 0.1% + genunix`kstrgetmsg 1 0.1% + genunix`qbackenable 1 0.1% + genunix`releasef 1 0.1% + genunix`callout_execute 1 0.1% + uata`ata_hba_start 1 0.1% + genunix`pcacheset_cmp 1 0.1% + genunix`sleepq_insert 1 0.1% + genunix`syscall_mstate 1 0.1% + sockfs`sotpi_recvmsg 1 0.1% + genunix`strput 1 0.1% + genunix`timespectohz 1 0.1% + unix`lock_clear_splx 1 0.1% + genunix`read 1 0.1% + genunix`as_segcompar 1 0.1% + unix`atomic_cas_64 1 0.1% + unix`mutex_exit 1 0.1% + genunix`cv_unsleep 1 0.1% + unix`putnext 1 0.1% + unix`intr_thread 1 0.1% + genunix`hrt2tv 1 0.1% + sockfs`socktpi_poll 1 0.1% + unix`sfmmu_mlspl_enter 1 0.1% + SUNW,UltraSPARC-IIi`get_ecache_tag 1 0.1% + SUNW,UltraSPARC-IIi`gethrestime 1 0.1% + genunix`cv_timedwait_sig 1 0.1% + genunix`getq_noenab 1 0.1% + SUNW,UltraSPARC-IIi`flushecacheline 1 0.1% + unix`utl0 1 0.1% + genunix`anon_alloc 1 0.1% + unix`page_downgrade 1 0.1% + unix`setfrontdq 1 0.1% + genunix`timeout_common 1 0.1% + unix`bzero 1 0.1% + unix`ktl0 2 0.1% + genunix`canputnext 2 0.1% + genunix`clear_active_fd 2 0.1% + unix`sfmmu_tlb_demap 2 0.1% + unix`page_vpadd 2 0.1% + SUNW,UltraSPARC-IIi`check_ecache_line 2 0.1% + genunix`cyclic_softint 2 0.1% + genunix`restore_mstate 2 0.1% + genunix`anon_map_getpages 2 0.1% + genunix`putq 2 0.1% + unix`page_lookup_create 2 0.1% + dtrace`dtrace_dynvar_clean 2 0.1% + unix`sfmmu_pageunload 2 0.1% + genunix`cpu_decay 2 0.1% + genunix`kmem_cache_alloc 3 0.2% + unix`rw_exit 3 0.2% + tl`tl_wput_data_ser 3 0.2% + unix`page_get_replacement_page 3 0.2% + unix`page_sub 3 0.2% + genunix`clock 3 0.2% + SUNW,UltraSPARC-IIi`copyout 3 0.2% + unix`mutex_enter 4 0.2% + genunix`pcache_poll 5 0.3% + SUNW,UltraSPARC-IIi`scrub_ecache_line 5 0.3% + SUNW,UltraSPARC-IIi`hwblkpagecopy 22 1.2% + SUNW,UltraSPARC-IIi`hwblkclr 39 2.1% + unix`generic_idle_cpu 506 26.8% + unix`idle 1199 63.5% + +Which shows the most common function is unix`idle. + + + + +Now the hotkernel tool is demonstrated with the -m option, to only print +out samples by module, + + # ./hotkernel -m + Sampling... Hit Ctrl-C to end. + ^C + MODULE COUNT PCNT + usbms 1 0.0% + specfs 1 0.0% + uhci 1 0.0% + sockfs 2 0.0% + genunix 28 0.6% + unix 4539 99.3% + +Here, genunix and unix (the two core parts of the kernel) were the most +common module to be executing on-CPU. diff --git a/cddl/contrib/dtracetoolkit/Examples/hotspot_example.txt b/cddl/contrib/dtracetoolkit/Examples/hotspot_example.txt new file mode 100644 index 000000000000..179ba8d0a18f --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/hotspot_example.txt @@ -0,0 +1,34 @@ +The following is a demonstration of the hotspot.d script. + +Here the script is run while a large file is copied from one filesystem +(cmdk0 102,0) to another (cmdk0 102,3). We can see the file mostly resided +around the 9000 to 10999 Mb range on the source disk (102,0), and was +copied to the 0 to 999 Mb range on the target disk (102,3). + + # ./hotspot.d + Tracing... Hit Ctrl-C to end. + ^C + Disk: cmdk0 Major,Minor: 102,3 + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 418 + 1000 | 0 + + Disk: cmdk0 Major,Minor: 102,0 + + value ------------- Distribution ------------- count + < 0 | 0 + 0 | 1 + 1000 | 5 + 2000 | 0 + 3000 | 0 + 4000 | 0 + 5000 | 0 + 6000 | 0 + 7000 | 0 + 8000 | 0 + 9000 |@@@@@ 171 + 10000 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1157 + 11000 | 0 + diff --git a/cddl/contrib/dtracetoolkit/Examples/hotuser_example.txt b/cddl/contrib/dtracetoolkit/Examples/hotuser_example.txt new file mode 100644 index 000000000000..c038acd6cda8 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/hotuser_example.txt @@ -0,0 +1,107 @@ +The following are demonstrations of the hotuser DTrace program. + + +Here, hotuser is run on a test program called "dofuncs", which is hard coded +to spend half its time in delta(), a third in beta() and a sixth in alpha(). + + # ./hotuser -c ./dofuncs + Sampling... Hit Ctrl-C to end. + ^C + FUNCTION COUNT PCNT + dofuncs`alpha 511 16.5% + dofuncs`beta 1029 33.3% + dofuncs`delta 1552 50.2% + +hotuser has accurately sampled which user-level functions are on the CPU, +producing a report of the expected breakdown. The hottest user-level function +is delta(), which was sampled 1552 times - 50.2% of the total samples. + + + +Now hotuser is run on gunzip, to find which functions are most often +on the CPU, + + # ./hotuser -c 'gunzip contents.gz' + Sampling... Hit Ctrl-C to end. + + FUNCTION COUNT PCNT + libc.so.1`_free_unlocked 1 0.1% + gunzip`unzip 1 0.1% + ld.so.1`strcmp 1 0.1% + gunzip`inflate_dynamic 1 0.1% + libc.so.1`_write 1 0.1% + gunzip`write_buf 1 0.1% + gunzip`0x2d990 2 0.3% + libc.so.1`write 2 0.3% + gunzip`0x2d994 2 0.3% + ld.so.1`rtld_db_preinit 3 0.4% + gunzip`0x2d98c 7 0.9% + gunzip`huft_build 9 1.2% + libc_psr.so.1`memcpy 138 18.5% + gunzip`inflate_codes 233 31.2% + gunzip`updcrc 344 46.1% + +This shows that updcrc() was sampled 344 times, and 46.1% of the total +samples. + + + +A -l option will provide a breakdown on libraries only. hotuser +is run on gzip to show library usage only, + + # ./hotuser -lc 'gzip contents' + Sampling... Hit Ctrl-C to end. + + LIBRARY COUNT PCNT + libc.so.1 2 0.0% + libc_psr.so.1 37 0.9% + gzip 4113 99.1% + +This shows that code in the gzip binary itself was on the CPU 99.1% of +the sample times, with libc_psr.so.1 code on the CPU 0.9% of the time. + + + +The following shows library usage of mozilla. The pgrep command is used to +match the most recent PID of mozilla-bin. + + # ./hotuser -lp `pgrep -n mozilla-bin` + Sampling... Hit Ctrl-C to end. + ^C + LIBRARY COUNT PCNT + libplds4.so 1 0.1% + libappcomps.so 1 0.1% + libi18n.so 1 0.1% + libuconv.so 1 0.1% + libpref.so 1 0.1% + libblueprint.so 1 0.1% + libz.so.1 2 0.2% + libcaps.so 2 0.2% + libXrender.so.1 2 0.2% + libimglib2.so 2 0.2% + libXft.so.2 3 0.3% + libCrun.so.1 3 0.3% + libdocshell.so 3 0.3% + libplc4.so 4 0.4% + libgtk-x11-2.0.so.0.400.9 5 0.5% + libjsd.so 5 0.5% + libX11.so.4 5 0.5% + libnecko.so 8 0.9% + libwidget_gtk2.so 9 1.0% + libgkgfx.so 13 1.4% + libglib-2.0.so.0.400.1 14 1.5% + libgfx_gtk.so 18 2.0% + libnspr4.so 20 2.2% + libxpconnect.so 22 2.4% + libgdk-x11-2.0.so.0.400.9 23 2.5% + libgobject-2.0.so.0.400.1 25 2.7% + libhtmlpars.so 27 3.0% + libfontconfig.so.1 41 4.5% + libxpcom.so 49 5.4% + mozilla-bin 55 6.0% + libmozjs.so 80 8.8% + libc.so.1 115 12.6% + libgklayout.so 352 38.6% + +This shows that 352 samples found code from libgklayout.so running, which +was 38.6% of the samples. diff --git a/cddl/contrib/dtracetoolkit/Examples/httpdstat_example.txt b/cddl/contrib/dtracetoolkit/Examples/httpdstat_example.txt new file mode 100644 index 000000000000..b9f59e8ca687 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/httpdstat_example.txt @@ -0,0 +1,36 @@ +The following is an example of using the httpdstat.d script. + + +This Solaris 10 server is running Apache as a webserver. The script matches +on the process name "httpd". Here it shows many GET connections, + + # httpdstat.d + TIME NUM GET POST HEAD TRACE + 2005 Nov 29 18:46:46 38 38 0 0 0 + 2005 Nov 29 18:46:47 109 109 0 0 0 + 2005 Nov 29 18:46:48 112 112 0 0 0 + 2005 Nov 29 18:46:49 113 113 0 0 0 + 2005 Nov 29 18:46:50 107 107 0 0 0 + 2005 Nov 29 18:46:51 56 56 0 0 0 + 2005 Nov 29 18:46:52 0 0 0 0 0 + 2005 Nov 29 18:46:53 0 0 0 0 0 + 2005 Nov 29 18:46:54 20 20 0 0 0 + 2005 Nov 29 18:46:55 48 48 0 0 0 + ^C + +For a few seconds we had around 100 GETs per second. + + + +httpdstat.d accepts an argument as the sample interval, here we print a +line every 30 seconds, + + # httpdstat.d 30 + TIME NUM GET POST HEAD TRACE + 2005 Nov 29 18:50:49 462 458 3 1 0 + 2005 Nov 29 18:51:19 421 413 5 2 1 + 2005 Nov 29 18:51:49 1361 1358 3 0 0 + ^C + +The values are for the entire interval. + diff --git a/cddl/contrib/dtracetoolkit/Examples/icmpstat_example.txt b/cddl/contrib/dtracetoolkit/Examples/icmpstat_example.txt new file mode 100644 index 000000000000..e8b8cfe6500b --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/icmpstat_example.txt @@ -0,0 +1,29 @@ +The following is a demonstration of the icmpstat.d script, + + +Here we run it and catch an inbound ping, + + # icmpstat.d + 2005 Jul 25 23:05:39, + + STATISTIC VALUE + + 2005 Jul 25 23:05:40, + + STATISTIC VALUE + icmpOutMsgs 1 + icmpOutEchoReps 1 + icmpInEchos 1 + icmpInMsgs 1 + + 2005 Jul 25 23:05:41, + + STATISTIC VALUE + + ^C + +Files such as /usr/include/inet/mib2.h may explain each of the statistics. + +The icmpstat.d is a simple demonstration of tracing ICMP activity. It may +serve as the starting point for other scripts. + diff --git a/cddl/contrib/dtracetoolkit/Examples/intbycpu_example.txt b/cddl/contrib/dtracetoolkit/Examples/intbycpu_example.txt new file mode 100644 index 000000000000..5ed213cba6ba --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/intbycpu_example.txt @@ -0,0 +1,11 @@ +The following is a demonstration of the intbycpu.d script, + + # intbycpu.d + Tracing... Hit Ctrl-C to end. + ^C + CPU INTERRUPTS + 0 374 + 1 412 + +In the above output, CPU 1 had 412 interrupts, and CPU 0 had 374. + diff --git a/cddl/contrib/dtracetoolkit/Examples/intoncpu_example.txt b/cddl/contrib/dtracetoolkit/Examples/intoncpu_example.txt new file mode 100644 index 000000000000..ed408eb6a17d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/intoncpu_example.txt @@ -0,0 +1,93 @@ +The following is an example of the intoncpu.d script. + + +Here we run it for a few seconds then hit Ctrl-C, + + # ./intoncpu.d + Tracing... Hit Ctrl-C to end. + ^C + uhci1 + + value ------------- Distribution ------------- count + 2048 | 0 + 4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 8192 | 0 + uhci0 + + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 16 + 2048 |@@@@ 2 + 4096 |@@ 1 + 8192 |@@ 1 + 16384 | 0 + rtls0 + + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@ 8 + 2048 |@@@@@@@@@@ 5 + 4096 |@@@@@@ 3 + 8192 | 0 + 16384 |@@ 1 + 32768 |@@ 1 + 65536 |@@@@ 2 + 131072 | 0 + +The rtls0 driver (the network interface) has encourtered the most interrupts, +with the time taken to process each interrupt visible as a distribution. +These times ranged from around 1000 ns (1 us), to at least 65536 ns (65 us). + +To determine which devices the instance names represent (eg, "uhci1"), the +/etc/path_to_inst file could be examied. + + + +The following is a longer example of running intoncpu.d, + + # ./intoncpu.d + Tracing... Hit Ctrl-C to end. + ^C + uhci1 + + value ------------- Distribution ------------- count + 2048 | 0 + 4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 8192 | 0 + ata1 + + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@ 2 + 32768 |@@@@@@@@@@@@@@@@@@@@ 2 + 65536 | 0 + ata0 + + value ------------- Distribution ------------- count + 2048 | 0 + 4096 |@@@@@@@@@@@@@ 55 + 8192 |@@@@@@@@@@@@@@@@@@@@@@@@@@ 113 + 16384 |@ 5 + 32768 | 0 + uhci0 + + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1288 + 2048 |@@ 53 + 4096 | 6 + 8192 | 0 + rtls0 + + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@ 665 + 2048 |@@@@@@@@@ 307 + 4096 |@ 35 + 8192 | 0 + 16384 |@@@@@@@ 229 + 32768 |@@@ 91 + 65536 |@ 19 + 131072 | 1 + 262144 | 0 + diff --git a/cddl/contrib/dtracetoolkit/Examples/inttimes_example.txt b/cddl/contrib/dtracetoolkit/Examples/inttimes_example.txt new file mode 100644 index 000000000000..384d700ba234 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/inttimes_example.txt @@ -0,0 +1,18 @@ +The following is a demonstration of the inttimes.d script, + + +Here we run it for a few seconds then hit Ctrl-C, + + # inttimes.d + Tracing... Hit Ctrl-C to end. + ^C + DEVICE TIME (ns) + ata0 22324 + uhci1 45893 + ata1 138559 + uhci0 229226 + i80420 1305617 + rtls0 2540175 + +In the above output, we can see that the rtls0 driver spent 2540 us on the +CPU servicing interrupts, while ata0 spent only 22 us. diff --git a/cddl/contrib/dtracetoolkit/Examples/iofile_example.txt b/cddl/contrib/dtracetoolkit/Examples/iofile_example.txt new file mode 100644 index 000000000000..f4fc476910f0 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/iofile_example.txt @@ -0,0 +1,35 @@ +The following is a demonstration of the iofile.d script, + + +Here we run it while a tar command is backing up /var/adm, + + # iofile.d + Tracing... Hit Ctrl-C to end. + ^C + PID CMD TIME FILE + 5206 tar 109 /var/adm/acct/nite + 5206 tar 110 /var/adm/acct/sum + 5206 tar 114 /var/adm/acct/fiscal + 5206 tar 117 /var/adm/messages.3 + 5206 tar 172 /var/adm/sa + 5206 tar 3605 /var/adm/messages.2 + 5206 tar 4548 /var/adm/spellhist + 5206 tar 5769 /var/adm/exacct/brendan1task + 5206 tar 6416 /var/adm/acct + 5206 tar 7587 /var/adm/messages.1 + 5206 tar 8246 /var/adm/exacct/task + 5206 tar 8320 /var/adm/pool + 5206 tar 8973 /var/adm/pool/history + 5206 tar 9183 /var/adm/exacct + 3 fsflush 10882 <none> + 5206 tar 11861 /var/adm/exacct/flow + 5206 tar 12042 /var/adm/messages.0 + 5206 tar 12408 /var/adm/sm.bin + 5206 tar 13021 /var/adm/sulog + 5206 tar 19007 /var/adm/streams + 5206 tar 21811 <none> + 5206 tar 24918 /var/adm/exacct/proc + +In the above output, we can see that the tar command spent 24918 us (25 ms) +waiting for disk I/O on the /var/adm/exacct/proc file. + diff --git a/cddl/contrib/dtracetoolkit/Examples/iofileb_example.txt b/cddl/contrib/dtracetoolkit/Examples/iofileb_example.txt new file mode 100644 index 000000000000..21597f7e776d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/iofileb_example.txt @@ -0,0 +1,23 @@ +The following is a demonstration of the iofileb.d script, + + +Here we run it while a tar command is backing up /var/adm, + + # ./iofileb.d + Tracing... Hit Ctrl-C to end. + ^C + PID CMD KB FILE + 29529 tar 56 /var/adm/sa/sa31 + 29529 tar 56 /var/adm/sa/sa03 + 29529 tar 56 /var/adm/sa/sa02 + 29529 tar 56 /var/adm/sa/sa01 + 29529 tar 56 /var/adm/sa/sa04 + 29529 tar 56 /var/adm/sa/sa27 + 29529 tar 56 /var/adm/sa/sa28 + 29529 tar 324 /var/adm/exacct/task + 29529 tar 736 /var/adm/wtmpx + +In the above output, we can see that the tar command has caused 736 Kbytes +of the /var/adm/wtmpx file to be read from disk. All af the Kbyte values +measured are for disk activity. + diff --git a/cddl/contrib/dtracetoolkit/Examples/iopattern_example.txt b/cddl/contrib/dtracetoolkit/Examples/iopattern_example.txt new file mode 100644 index 000000000000..818a4a22e6dc --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/iopattern_example.txt @@ -0,0 +1,57 @@ +The following is a demonstration of the iopattern program, + + +Here we run iopattern for a few seconds then hit Ctrl-C. There is a "dd" +command running on this system to intentionally create heavy sequential +disk activity, + + # iopattern + %RAN %SEQ COUNT MIN MAX AVG KR KW + 1 99 465 4096 57344 52992 23916 148 + 0 100 556 57344 57344 57344 31136 0 + 0 100 634 57344 57344 57344 35504 0 + 6 94 554 512 57344 54034 29184 49 + 0 100 489 57344 57344 57344 27384 0 + 21 79 568 4096 57344 46188 25576 44 + 4 96 431 4096 57344 56118 23620 0 + ^C + +In the above output we can see that the disk activity is mostly sequential. +The disks are also pulling around 30 Mb during each sample, with a large +average event size. + + + +The following demonstrates iopattern while running a "find" command to +cause random disk activity, + + # iopattern + %RAN %SEQ COUNT MIN MAX AVG KR KW + 86 14 400 1024 8192 1543 603 0 + 81 19 455 1024 8192 1606 714 0 + 89 11 469 512 8192 1854 550 299 + 83 17 463 1024 8192 1782 806 0 + 87 13 394 1024 8192 1551 597 0 + 85 15 348 512 57344 2835 808 155 + 91 9 513 512 47616 2812 570 839 + 76 24 317 512 35840 3755 562 600 + ^C + +In the above output, we can see from the percentages that the disk events +were mostly random. We can also see that the average event size is small - +which makes sense if we are reading through many directory files. + + + +iopattern has options. Here we print timestamps "-v" and measure every 10 +seconds, + + # iopattern -v 10 + TIME %RAN %SEQ COUNT MIN MAX AVG KR KW + 2005 Jul 25 20:40:55 97 3 33 512 8192 1163 8 29 + 2005 Jul 25 20:41:05 0 0 0 0 0 0 0 0 + 2005 Jul 25 20:41:15 84 16 6 512 11776 5973 22 13 + 2005 Jul 25 20:41:25 100 0 26 512 8192 1496 8 30 + 2005 Jul 25 20:41:35 0 0 0 0 0 0 0 0 + ^C + diff --git a/cddl/contrib/dtracetoolkit/Examples/iopending_example.txt b/cddl/contrib/dtracetoolkit/Examples/iopending_example.txt new file mode 100644 index 000000000000..f4bc8225c867 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/iopending_example.txt @@ -0,0 +1,126 @@ +The following is a demonstration of the iopending tool, + +Here we run it with a sample interval of 1 second, + + # iopending 1 + Tracing... Please wait. + 2006 Jan 6 20:21:59, load: 0.02, disk_r: 0 KB, disk_w: 0 KB + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1010 + 1 | 0 + + 2006 Jan 6 20:22:00, load: 0.03, disk_r: 0 KB, disk_w: 0 KB + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1000 + 1 | 0 + + 2006 Jan 6 20:22:01, load: 0.03, disk_r: 0 KB, disk_w: 0 KB + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1000 + 1 | 0 + + ^C + +The iopending tool samples at 1000 Hz, and prints a distribution of how many +disk events were "pending" completion. In the above example the disks are +quiet - for all the samples there are zero disk events pending. + + + +Now iopending is run with no arguments. It will default to an interval of 5 +seconds, + + # iopending + Tracing... Please wait. + 2006 Jan 6 19:15:41, load: 0.03, disk_r: 3599 KB, disk_w: 0 KB + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4450 + 1 |@@@ 390 + 2 |@ 80 + 3 | 40 + 4 | 20 + 5 | 30 + 6 | 0 + + ^C + +In the above output there was a little disk activity. For 390 samples there +was 1 I/O event pending; for 80 samples there was 2, and so on. + + + + +In the following example iopending is run during heavy disk activity. We +print output every 10 seconds, + + # iopending 10 + Tracing... Please wait. + 2006 Jan 6 20:58:07, load: 0.03, disk_r: 25172 KB, disk_w: 33321 KB + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@ 2160 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6720 + 2 |@@@@ 1000 + 3 | 50 + 4 | 30 + 5 | 20 + 6 | 10 + 7 | 10 + 8 | 10 + 9 | 0 + + 2006 Jan 6 20:58:17, load: 0.05, disk_r: 8409 KB, disk_w: 12449 KB + + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 7260 + 1 |@@@@@@@ 1700 + 2 |@ 300 + 3 | 0 + 4 | 10 + 5 | 10 + 6 | 10 + 7 | 20 + 8 | 0 + 9 | 0 + 10 | 0 + 11 | 0 + 12 | 0 + 13 | 0 + 14 | 0 + 15 | 0 + 16 | 0 + 17 | 10 + 18 | 20 + 19 | 0 + 20 | 0 + 21 | 0 + 22 | 0 + 23 | 0 + 24 | 0 + 25 | 0 + 26 | 0 + 27 | 0 + 28 | 0 + 29 | 0 + 30 | 0 + 31 | 10 + >= 32 |@@@ 650 + + ^C + +In the first output, most of the time (67%) there was 1 event pending, +and for a short time there were 8 events pending. In the second output we +see many samples were off the scale - 650 samples at 32 or more pending +events. For this sample I had typed "sync" in another window, which +queued many disk events immediately which were eventually completed. + diff --git a/cddl/contrib/dtracetoolkit/Examples/iosnoop_example.txt b/cddl/contrib/dtracetoolkit/Examples/iosnoop_example.txt new file mode 100644 index 000000000000..addb7dcbbe46 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/iosnoop_example.txt @@ -0,0 +1,39 @@ +The following demonstrates iosnoop. It was run on a system that was +fairly quiet until a tar command was run, + +# ./iosnoop + UID PID D BLOCK SIZE COMM PATHNAME + 0 0 W 1067 512 sched <none> + 0 0 W 6496304 1024 sched <none> + 0 3 W 6498797 512 fsflush <none> + 0 0 W 1067 512 sched <none> + 0 0 W 6496304 1024 sched <none> + 100 443 R 892288 4096 Xsun /usr/openwin/bin/Xsun + 100 443 R 891456 4096 Xsun /usr/openwin/bin/Xsun + 100 15795 R 3808 8192 tar /usr/bin/eject + 100 15795 R 35904 6144 tar /usr/bin/eject + 100 15795 R 39828 6144 tar /usr/bin/env + 100 15795 R 3872 8192 tar /usr/bin/expr + 100 15795 R 21120 7168 tar /usr/bin/expr + 100 15795 R 43680 6144 tar /usr/bin/false + 100 15795 R 44176 6144 tar /usr/bin/fdetach + 100 15795 R 3920 8192 tar /usr/bin/fdformat + 100 15795 R 3936 8192 tar /usr/bin/fdformat + 100 15795 R 4080 8192 tar /usr/bin/fdformat + 100 15795 R 9680 3072 tar /usr/bin/fdformat + 100 15795 R 4096 8192 tar /usr/bin/fgrep + 100 15795 R 46896 6144 tar /usr/bin/fgrep + 100 15795 R 4112 8192 tar /usr/bin/file + 100 15795 R 4128 8192 tar /usr/bin/file + 100 15795 R 4144 8192 tar /usr/bin/file + 100 15795 R 21552 7168 tar /usr/bin/file + 100 15795 R 4192 8192 tar /usr/bin/fmli + 100 15795 R 4208 8192 tar /usr/bin/fmli + 100 15795 R 4224 57344 tar /usr/bin/fmli + 100 15795 R 4336 24576 tar /usr/bin/fmli + 100 15795 R 695792 8192 tar <none> + 100 15795 R 696432 57344 tar /usr/bin/fmli +[...] + + + diff --git a/cddl/contrib/dtracetoolkit/Examples/iotop_example.txt b/cddl/contrib/dtracetoolkit/Examples/iotop_example.txt new file mode 100644 index 000000000000..8cf55c189ba3 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/iotop_example.txt @@ -0,0 +1,142 @@ +The following are demonstrations of the iotop program, + + +Here we run iotop with the -C option to not clear the screen, but instead +provide a scrolling output, + + # iotop -C + Tracing... Please wait. + 2005 Jul 16 00:34:40, load: 1.21, disk_r: 12891 KB, disk_w: 1087 KB + + UID PID PPID CMD DEVICE MAJ MIN D BYTES + 0 3 0 fsflush cmdk0 102 4 W 512 + 0 3 0 fsflush cmdk0 102 0 W 11776 + 0 27751 20320 tar cmdk0 102 16 W 23040 + 0 3 0 fsflush cmdk0 102 0 R 73728 + 0 0 0 sched cmdk0 102 0 R 548864 + 0 0 0 sched cmdk0 102 0 W 1078272 + 0 27751 20320 tar cmdk0 102 16 R 1514496 + 0 27751 20320 tar cmdk0 102 3 R 11767808 + + 2005 Jul 16 00:34:45, load: 1.23, disk_r: 83849 KB, disk_w: 488 KB + + UID PID PPID CMD DEVICE MAJ MIN D BYTES + 0 0 0 sched cmdk0 102 4 W 1536 + 0 0 0 sched cmdk0 102 0 R 131072 + 0 27752 20320 find cmdk0 102 0 R 262144 + 0 0 0 sched cmdk0 102 0 W 498176 + 0 27751 20320 tar cmdk0 102 3 R 11780096 + 0 27751 20320 tar cmdk0 102 5 R 29745152 + 0 27751 20320 tar cmdk0 102 4 R 47203328 + + 2005 Jul 16 00:34:50, load: 1.25, disk_r: 22394 KB, disk_w: 2 KB + + UID PID PPID CMD DEVICE MAJ MIN D BYTES + 0 27752 20320 find cmdk0 102 0 W 2048 + 0 0 0 sched cmdk0 102 0 R 16384 + 0 321 1 automountd cmdk0 102 0 R 22528 + 0 27752 20320 find cmdk0 102 0 R 1462272 + 0 27751 20320 tar cmdk0 102 5 R 17465344 + +In the above output, we can see a tar command is reading from the cmdk0 +disk, from several different slices (different minor numbers), on the last +report focusing on 102,5 (an "ls -lL" in /dev/dsk can explain the number to +slice mappings). + +The disk_r and disk_w values give a summary of the overall activity in +bytes. + + + +Bytes can be used as a yardstick to determine which process is keeping the +disks busy, however either of the delta times available from iotop would +be more accurate (as they take into account whether the activity is random +or sequential). + + # iotop -Co + Tracing... Please wait. + 2005 Jul 16 00:39:03, load: 1.10, disk_r: 5302 KB, disk_w: 20 KB + + UID PID PPID CMD DEVICE MAJ MIN D DISKTIME + 0 0 0 sched cmdk0 102 0 W 532 + 0 0 0 sched cmdk0 102 0 R 245398 + 0 27758 20320 find cmdk0 102 0 R 3094794 + + 2005 Jul 16 00:39:08, load: 1.14, disk_r: 5268 KB, disk_w: 273 KB + + UID PID PPID CMD DEVICE MAJ MIN D DISKTIME + 0 3 0 fsflush cmdk0 102 0 W 2834 + 0 0 0 sched cmdk0 102 0 W 263527 + 0 0 0 sched cmdk0 102 0 R 285015 + 0 3 0 fsflush cmdk0 102 0 R 519187 + 0 27758 20320 find cmdk0 102 0 R 2429232 + + 2005 Jul 16 00:39:13, load: 1.16, disk_r: 602 KB, disk_w: 1238 KB + + UID PID PPID CMD DEVICE MAJ MIN D DISKTIME + 0 3 0 fsflush cmdk0 102 4 W 200 + 0 3 0 fsflush cmdk0 102 6 W 260 + 0 3 0 fsflush cmdk0 102 0 W 883 + 0 27758 20320 find cmdk0 102 0 R 55686 + 0 3 0 fsflush cmdk0 102 0 R 317508 + 0 0 0 sched cmdk0 102 0 R 320195 + 0 0 0 sched cmdk0 102 0 W 571084 + [...] + +The disk time is in microseconds. In the first sample, we can see the find +command caused a total of 3.094 seconds of disk time - the duration of the +samples here is 5 seconds (the default), so it would be fair to say that +the find command is keeping the disk 60% busy. + + + +A new option for iotop is to print percents "-P" which are based on disk +I/O times, and hense are a fair measurementt of what is keeping the disks +busy. + + # iotop -PC 1 + Tracing... Please wait. + 2005 Nov 18 15:26:14, load: 0.24, disk_r: 13176 KB, disk_w: 0 KB + + UID PID PPID CMD DEVICE MAJ MIN D %I/O + 0 2215 1663 bart cmdk0 102 0 R 85 + + 2005 Nov 18 15:26:15, load: 0.25, disk_r: 5263 KB, disk_w: 0 KB + + UID PID PPID CMD DEVICE MAJ MIN D %I/O + 0 2214 1663 find cmdk0 102 0 R 15 + 0 2215 1663 bart cmdk0 102 0 R 67 + + 2005 Nov 18 15:26:16, load: 0.25, disk_r: 8724 KB, disk_w: 0 KB + + UID PID PPID CMD DEVICE MAJ MIN D %I/O + 0 2214 1663 find cmdk0 102 0 R 10 + 0 2215 1663 bart cmdk0 102 0 R 71 + + 2005 Nov 18 15:26:17, load: 0.25, disk_r: 7528 KB, disk_w: 0 KB + + UID PID PPID CMD DEVICE MAJ MIN D %I/O + 0 2214 1663 find cmdk0 102 0 R 0 + 0 2215 1663 bart cmdk0 102 0 R 85 + + 2005 Nov 18 15:26:18, load: 0.26, disk_r: 11389 KB, disk_w: 0 KB + + UID PID PPID CMD DEVICE MAJ MIN D %I/O + 0 2214 1663 find cmdk0 102 0 R 2 + 0 2215 1663 bart cmdk0 102 0 R 80 + + 2005 Nov 18 15:26:19, load: 0.26, disk_r: 22109 KB, disk_w: 0 KB + + UID PID PPID CMD DEVICE MAJ MIN D %I/O + 0 2215 1663 bart cmdk0 102 0 R 76 + + ^C + +In the above output, bart and find jostle for disk access as they create +a database of file checksums. The command was, + + find / | bart create -I > /dev/null + +Note that the %I/O is in terms of 1 disk. A %I/O of say 200 is allowed - it +would mean that effectively 2 disks were at 100%, or 4 disks at 50%, etc. + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_calldist_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_calldist_example.txt new file mode 100644 index 000000000000..b659c0afc3ed --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_calldist_example.txt @@ -0,0 +1,247 @@ +This is an example of j_calldist.d showing the elapsed times for different +types of Java operations. + +This traces activity from all Java processes on the system with hotspot +provider support (1.6.0), and produces the output in graphical format, showing +a histogram of the amount of time taken by each call. Method calls are only +visible when using the flag "+ExtendedDTraceProbes". eg, +java -XX:+ExtendedDTraceProbes classfile + +Because of the extensive results returned otherwise, this script will show you +a configurable number of results in each section. The default (as in this +example) is ten. + +Here we see it tracing the activity of Code/Java/Func_abc. + +# j_calldist.d +Tracing... Hit Ctrl-C to end. +^C + +Top 10 elapsed times (us), + +Top 10 exclusive method elapsed times (us), + PID=311342, method, sun/net/www/ParseUtil.decode + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@ 3 + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@ 5 + 2048 |@@@@ 1 + 4096 | 0 + + PID=311342, method, java/net/URLClassLoader.<clinit> + value ------------- Distribution ------------- count + 4096 | 0 + 8192 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16384 | 0 + + PID=311342, method, java/util/jar/JarFile.hasClassPathAttribute + value ------------- Distribution ------------- count + 4096 | 0 + 8192 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16384 | 0 + + PID=311342, method, java/util/zip/ZipFile.read + value ------------- Distribution ------------- count + 4096 | 0 + 8192 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16384 | 0 + + PID=311342, method, sun/nio/cs/US_ASCII.newEncoder + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 |@@@@@@@@@@@@@@@@@@@@ 1 + 16384 | 0 + + PID=311342, method, java/util/zip/ZipFile.getInputStream + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 |@@@@@@@@@@@@@@@@@@@@ 1 + 16384 | 0 + + PID=311342, method, sun/nio/cs/US_ASCII.newDecoder + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@ 1 + 16 |@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 |@@@@@@@@@@ 1 + 16384 | 0 + + PID=311342, method, java/util/HashMap.<init> + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@ 8 + 16 |@@@@@@@@@@@@@@@@ 9 + 32 |@@@@@@@@@ 5 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 |@@ 1 + 16384 | 0 + + PID=311342, method, java/io/UnixFileSystem.normalize + value ------------- Distribution ------------- count + 4 | 0 + 8 |@ 1 + 16 | 0 + 32 | 0 + 64 |@@@@@@@@@ 8 + 128 |@@@@@@@@@@@@@ 11 + 256 |@@@@@@ 5 + 512 |@@@@@@@@@ 8 + 1024 | 0 + 2048 | 0 + 4096 |@ 1 + 8192 | 0 + + PID=311342, method, java/lang/Thread.sleep + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 1048576 | 0 + + +Top 10 inclusive method elapsed times (us), + PID=311342, method, java/net/URLClassLoader$1.run + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@ 1 + 32768 | 0 + 65536 |@@@@@@@@@@@@@@@@@@@@ 1 + 131072 | 0 + + PID=311342, method, java/net/URLClassLoader.findClass + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@ 1 + 32768 | 0 + 65536 |@@@@@@@@@@@@@@@@@@@@ 1 + 131072 | 0 + + PID=311342, method, sun/misc/URLClassPath.getLoader + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@ 1 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 |@@@@@@ 2 + 4096 |@@@@@@@@@@@@@@@@@@@@@@@@@ 8 + 8192 | 0 + 16384 |@@@ 1 + 32768 | 0 + 65536 |@@@ 1 + 131072 | 0 + + PID=311342, method, java/lang/ClassLoader.loadClass + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@ 6 + 256 |@@@@@@@@@@@@@@@@@@@@@@ 15 + 512 |@@@@ 3 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 | 0 + 16384 | 0 + 32768 | 0 + 65536 |@@@@ 3 + 131072 | 0 + + PID=311342, method, java/security/AccessController.doPrivileged + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@ 2 + 32 |@ 1 + 64 |@@@@ 4 + 128 |@@@@@@@@@@@@@@@@ 17 + 256 |@ 1 + 512 |@@@@ 4 + 1024 |@@ 2 + 2048 |@ 1 + 4096 |@@@@@@ 6 + 8192 |@ 1 + 16384 |@@ 2 + 32768 | 0 + 65536 |@@ 2 + 131072 | 0 + + PID=311342, method, Func_abc.func_c + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + PID=311342, method, Func_abc.func_b + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + PID=311342, method, java/lang/Thread.sleep + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 1048576 | 0 + + PID=311342, method, Func_abc.func_a + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + + PID=311342, method, Func_abc.main + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + +The elapsed times section is empty. It would show us anything that is not a +Java method - garbage collection for example. However there was nothing of +the kind in this example. + +The exclusive method elapsed times show us the time spent in the top ten most +time consuming methods, not including time spent in subroutines called by +those methods. + +The inclusive method elapsed times show us the time spent in the top ten most +time consuming methods including time spent in subroutines called by those +methods. + +It is important to pay close attention to the third column, "count" as this +will indicate if there were any instances in a particular timeframe, even if +the number is too small to show up on the histogram clearly. diff --git a/cddl/contrib/dtracetoolkit/Examples/j_calls_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_calls_example.txt new file mode 100644 index 000000000000..3aacb2c9025c --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_calls_example.txt @@ -0,0 +1,137 @@ +The following are examples of running the j_calls.d script. + +This traces activity from all Java processes on the system with hotspot +provider support (1.6.0). Method calls and object allocation are only visible +when using the flag "+ExtendedDTraceProbes". eg, +java -XX:+ExtendedDTraceProbes classfile + +Here we see it running on Code/Java/Func_abc + +# j_calls.d +Tracing... Hit Ctrl-C to end. +^C + + PID TYPE NAME COUNT + 311334 cload Func_abc 1 + 311334 cload java/io/BufferedInputStream 1 + 311334 cload java/io/BufferedOutputStream 1 + 311334 cload java/io/BufferedReader 1 + 311334 cload java/io/BufferedWriter 1 + 311334 cload java/io/Closeable 1 + 311334 cload java/io/Console 1 + 311334 cload java/io/Console$1 1 + 311334 cload java/io/Console$1$1 1 + 311334 cload java/io/DataInput 1 + 311334 cload java/io/DataInputStream 1 + 311334 cload java/io/DeleteOnExitHook 1 + 311334 cload java/io/ExpiringCache 1 + 311334 cload java/io/ExpiringCache$1 1 + 311334 cload java/io/ExpiringCache$Entry 1 + 311334 cload java/io/File 1 + 311334 cload java/io/File$1 1 + 311334 cload java/io/FileDescriptor 1 + 311334 cload java/io/FileInputStream 1 + 311334 cload java/io/FileOutputStream 1 + 311334 cload java/io/FilePermission 1 + 311334 cload java/io/FilePermission$1 1 + 311334 cload java/io/FilePermissionCollection 1 + 311334 cload java/io/FileReader 1 + 311334 cload java/io/FileSystem 1 + 311334 cload java/io/FilterInputStream 1 + 311334 cload java/io/FilterOutputStream 1 + 311334 cload java/io/Flushable 1 + 311334 cload java/io/InputStream 1 + 311334 cload java/io/InputStreamReader 1 + 311334 cload java/io/ObjectStreamClass 1 + 311334 cload java/io/ObjectStreamField 1 + 311334 cload java/io/OutputStream 1 + 311334 cload java/io/OutputStreamWriter 1 + 311334 cload java/io/PrintStream 1 + 311334 cload java/io/Reader 1 + 311334 cload java/io/Serializable 1 + 311334 cload java/io/UnixFileSystem 1 + 311334 cload java/io/Writer 1 + 311334 cload java/lang/AbstractStringBuilder 1 + 311334 cload java/lang/Appendable 1 + 311334 cload java/lang/ApplicationShutdownHooks 1 + 311334 cload java/lang/ArithmeticException 1 + 311334 cload java/lang/ArrayStoreException 1 + 311334 cload java/lang/Boolean 1 + 311334 cload java/lang/Byte 1 + 311334 cload java/lang/CharSequence 1 + 311334 cload java/lang/Character 1 + 311334 cload java/lang/CharacterDataLatin1 1 + 311334 cload java/lang/Class 1 +[... 1400 lines truncated ...] + 311334 method java/lang/Class.getClassLoader0 34 + 311334 method java/lang/String.toLowerCase 34 + 311334 method sun/security/action/GetPropertyAction.run 34 + 311334 method java/nio/CharBuffer.arrayOffset 36 + 311334 method java/util/HashMap.getEntry 36 + 311334 method java/io/File.<init> 37 + 311334 method java/io/UnixFileSystem.prefixLength 37 + 311334 oalloc java/io/File 37 + 311334 oalloc java/lang/reflect/Field 37 + 311334 method java/io/BufferedReader.readLine 38 + 311334 method java/util/concurrent/locks/AbstractOwnableSynchronizer.setExclusiveOwnerThread 38 + 311334 method java/lang/CharacterDataLatin1.toLowerCase 41 + 311334 method java/lang/CharacterDataLatin1.getProperties 43 + 311334 method java/security/AccessController.doPrivileged 43 + 311334 method java/util/Vector.size 43 + 311334 method java/nio/Buffer.position 44 + 311334 method java/nio/ByteBuffer.arrayOffset 44 + 311334 method java/lang/System.getProperty 48 + 311334 method java/util/Properties.getProperty 50 + 311334 method java/util/BitSet.expandTo 51 + 311334 method java/util/BitSet.set 51 + 311334 method java/lang/System.checkKey 56 + 311334 method java/lang/Thread.currentThread 57 + 311334 method java/util/Hashtable$Entry.<init> 57 + 311334 oalloc [Ljava/lang/String; 57 + 311334 oalloc java/util/Hashtable$Entry 57 + 311334 method java/util/Hashtable.get 59 + 311334 method java/util/Hashtable.put 63 + 311334 method java/util/BitSet.checkInvariants 71 + 311334 method java/util/BitSet.wordIndex 72 + 311334 method java/lang/StringBuilder.<init> 73 + 311334 method java/lang/StringBuilder.toString 73 + 311334 oalloc java/lang/StringBuilder 73 + 311334 method java/lang/AbstractStringBuilder.expandCapacity 81 + 311334 method java/util/HashMap.hash 81 + 311334 method java/util/HashMap.indexFor 81 + 311334 method java/lang/AbstractStringBuilder.<init> 82 + 311334 method java/lang/Character.toLowerCase 82 + 311334 method java/lang/String.startsWith 83 + 311334 method java/util/Arrays.copyOf 87 + 311334 method java/lang/String.lastIndexOf 90 + 311334 method java/lang/String.substring 94 + 311334 method java/util/Arrays.copyOfRange 107 + 311334 method java/lang/String.getChars 156 + 311334 method java/lang/System.getSecurityManager 174 + 311334 method java/lang/String.<init> 175 + 311334 method java/lang/String.equals 202 + 311334 method java/lang/Math.min 208 + 311334 method java/lang/String.hashCode 213 + 311334 method java/lang/String.indexOf 302 + 311334 oalloc [Ljava/lang/Object; 326 + 311334 method java/lang/System.arraycopy 360 + 311334 oalloc [I 374 + 311334 oalloc java/lang/Class 395 + 311334 oalloc [B 406 + 311334 oalloc [S 486 + 311334 method java/lang/StringBuilder.append 533 + 311334 oalloc [[I 541 + 311334 method java/lang/AbstractStringBuilder.append 549 + 311334 method java/lang/Object.<init> 823 + 311334 oalloc java/lang/String 931 + 311334 oalloc [C 1076 + 311334 method java/lang/String.charAt 1960 + +This shows us each of the events associated with the PID 311334, and the +number of times each event happened. These events can be of type cload (class +load), method (method call), mcompile (method compile), mload (compiled method +load), oalloc (object alloc) or thread (thread start). + +In this case you can see 1960 calls to java/lang/String.charAt, and 1076 +object allocations of type [C. + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_calltime_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_calltime_example.txt new file mode 100644 index 000000000000..937e06f2a08a --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_calltime_example.txt @@ -0,0 +1,67 @@ +The following are examples of j_calltime.d. + +This script traces the elapsed time of Java methods and prints a report of the +top ten in each category. This number is configurable with simple edit of +the DTrace script + +Here it traces the example program, Code/Java/Func_abc + +# j_calltime.d +Tracing... Hit Ctrl-C to end. +^C + +Top 10 counts, + PID TYPE NAME COUNT + 311358 method java/lang/String.equals 202 + 311358 method java/lang/Math.min 208 + 311358 method java/lang/String.hashCode 213 + 311358 method java/lang/String.indexOf 302 + 311358 method java/lang/System.arraycopy 360 + 311358 method java/lang/StringBuilder.append 533 + 311358 method java/lang/AbstractStringBuilder.append 549 + 311358 method java/lang/Object.<init> 823 + 311358 method java/lang/String.charAt 1960 + 0 total - 12020 + +Top 10 elapsed times (us), + PID TYPE NAME TOTAL + +Top 10 exclusive method elapsed times (us), + PID TYPE NAME TOTAL + 311358 method java/nio/ByteBuffer.<init> 5430 + 311358 method java/lang/String.charAt 6079 + 311358 method java/lang/String.<init> 7306 + 311358 method java/lang/StringBuilder.append 10240 + 311358 method java/util/StringTokenizer.scanToken 11075 + 311358 method java/net/URL.<clinit> 12519 + 311358 method java/io/UnixFileSystem.normalize 13218 + 311358 method sun/net/www/ParseUtil.decode 14208 + 311358 method java/lang/Thread.sleep 3016374 + 0 total - 3344993 + +Top 10 inclusive method elapsed times (us), + PID TYPE NAME TOTAL + 311358 method sun/misc/Launcher.<clinit> 129120 + 311358 method java/lang/ClassLoader.initSystemClassLoader 129851 + 311358 method java/lang/ClassLoader.getSystemClassLoader 129897 + 311358 method java/lang/ClassLoader.loadClass 267404 + 311358 method java/security/AccessController.doPrivileged 278364 + 311358 method Func_abc.func_c 1009971 + 311358 method Func_abc.func_b 2019995 + 311358 method java/lang/Thread.sleep 3016374 + 311358 method Func_abc.func_a 3027043 + 311358 method Func_abc.main 3027068 + +Counts shows us how many times each different method was called, and how +many methods were called in total. + +The exclusive method elapsed times show the time that each method spent +processing code - while not in other method. + +The inclusive method elapsed times show the time that each method spent +processing code, including the time spent in other calls. + +These elapsed times are the absolute time from when the method began to +when it completed - which includes off-CPU time due to other system events +such as I/O, scheduling, interrupts, etc. + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_classflow_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_classflow_example.txt new file mode 100644 index 000000000000..b8a9b75000cd --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_classflow_example.txt @@ -0,0 +1,89 @@ +Following are examples of j_classflow.d. + +This watches Java method entries and returns from all Java processes on the +system with hotspot provider support (1.6.0) and the flag +"+ExtendedDTraceProbes". eg, java -XX:+ExtendedDTraceProbes classfile + +Here we can see it run on Code/Java/Func_abc. + +# j_classflow.d Func_abc + C PID TIME(us) -- CLASS.METHOD + 0 311425 4789778117827 -> Func_abc.main + 0 311425 4789778117844 -> Func_abc.func_a + 0 311425 4789779120071 -> Func_abc.func_b + 0 311425 4789780130070 -> Func_abc.func_c + 0 311425 4789781140067 <- Func_abc.func_c + 0 311425 4789781140079 <- Func_abc.func_b + 0 311425 4789781140087 <- Func_abc.func_a + 0 311425 4789781140095 <- Func_abc.main +^C + +The first column, C gives us the CPU ID. + +The second column, TIME(us), gives us the time since boot in microseconds. + +The third column, PID gives us the Process ID. + +The fourth column, CLASS.METHOD gives us the Java class and method name. + +We can see that Func_abc.main called Func.abc.func_a, which in turn +called Func_abc.funcb etc. + +Here we can see an example of running it on java/io/BufferedOutputStream + +# j_classflow.d java/io/BufferedOutputStream + C PID TIME(us) -- CLASS.METHOD + 0 311461 4790094765413 -> java/io/BufferedOutputStream.<init> + 0 311461 4790094765459 <- java/io/BufferedOutputStream.<init> + 0 311461 4790094779559 -> java/io/BufferedOutputStream.<init> + 0 311461 4790094779595 <- java/io/BufferedOutputStream.<init> + 0 311461 4790094965883 -> java/io/BufferedOutputStream.write + 0 311461 4790094965913 <- java/io/BufferedOutputStream.write + 0 311461 4790094965926 -> java/io/BufferedOutputStream.flush + 0 311461 4790094965936 -> java/io/BufferedOutputStream.flushBuffer + 0 311461 4790094966279 <- java/io/BufferedOutputStream.flushBuffer + 0 311461 4790094966293 <- java/io/BufferedOutputStream.flush + 0 311461 4790094966588 -> java/io/BufferedOutputStream.write + 0 311461 4790094966602 <- java/io/BufferedOutputStream.write + 0 311461 4790094966610 -> java/io/BufferedOutputStream.flush + 0 311461 4790094966618 -> java/io/BufferedOutputStream.flushBuffer + 0 311461 4790094966778 <- java/io/BufferedOutputStream.flushBuffer + 0 311461 4790094966787 <- java/io/BufferedOutputStream.flush + 0 311461 4790094966811 -> java/io/BufferedOutputStream.flush + 0 311461 4790094966819 -> java/io/BufferedOutputStream.flushBuffer + 0 311461 4790094966828 <- java/io/BufferedOutputStream.flushBuffer + 0 311461 4790094966836 <- java/io/BufferedOutputStream.flush + 0 311461 4790095970345 -> java/io/BufferedOutputStream.write + 0 311461 4790095970372 <- java/io/BufferedOutputStream.write + 0 311461 4790095970382 -> java/io/BufferedOutputStream.flush + 0 311461 4790095970390 -> java/io/BufferedOutputStream.flushBuffer + 0 311461 4790095970453 <- java/io/BufferedOutputStream.flushBuffer + 0 311461 4790095970462 <- java/io/BufferedOutputStream.flush + 0 311461 4790095970737 -> java/io/BufferedOutputStream.write + 0 311461 4790095970751 <- java/io/BufferedOutputStream.write + 0 311461 4790095970759 -> java/io/BufferedOutputStream.flush + 0 311461 4790095970766 -> java/io/BufferedOutputStream.flushBuffer + 0 311461 4790095970795 <- java/io/BufferedOutputStream.flushBuffer + 0 311461 4790095970804 <- java/io/BufferedOutputStream.flush + 0 311461 4790095970828 -> java/io/BufferedOutputStream.flush + 0 311461 4790095970836 -> java/io/BufferedOutputStream.flushBuffer + 0 311461 4790095970844 <- java/io/BufferedOutputStream.flushBuffer + 0 311461 4790095970853 <- java/io/BufferedOutputStream.flush + 0 311461 4790096980348 -> java/io/BufferedOutputStream.write + 0 311461 4790096980373 <- java/io/BufferedOutputStream.write + 0 311461 4790096980383 -> java/io/BufferedOutputStream.flush + 0 311461 4790096980391 -> java/io/BufferedOutputStream.flushBuffer + 0 311461 4790096980452 <- java/io/BufferedOutputStream.flushBuffer + 0 311461 4790096980460 <- java/io/BufferedOutputStream.flush + 0 311461 4790096980735 -> java/io/BufferedOutputStream.write + 0 311461 4790096980749 <- java/io/BufferedOutputStream.write + 0 311461 4790096980757 -> java/io/BufferedOutputStream.flush + 0 311461 4790096980765 -> java/io/BufferedOutputStream.flushBuffer + 0 311461 4790096980794 <- java/io/BufferedOutputStream.flushBuffer + 0 311461 4790096980803 <- java/io/BufferedOutputStream.flush + 0 311461 4790096980826 -> java/io/BufferedOutputStream.flush + 0 311461 4790096980834 -> java/io/BufferedOutputStream.flushBuffer + 0 311461 4790096980843 <- java/io/BufferedOutputStream.flushBuffer + 0 311461 4790096980851 <- java/io/BufferedOutputStream.flush + + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_cpudist_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_cpudist_example.txt new file mode 100644 index 000000000000..15abac649a5f --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_cpudist_example.txt @@ -0,0 +1,252 @@ +This is an example of j_cpudist.d showing the elapsed times for different +types of Java operations. + +This traces activity from all Java processes on the system with hotspot +provider support (1.6.0), and produces the output in graphical format, showing +a histogram of the amount of time taken by each call. Method calls are only +visible when using the flag "+ExtendedDTraceProbes". eg, +java -XX:+ExtendedDTraceProbes classfile + +Because of the extensive results returned otherwise, this script will show you +a configurable number of results in each section. The default (as in this +example) is ten. + +Here we see it tracing the activity of Code/Java/Func_abc. + +# j_cpudist.d +Tracing... Hit Ctrl-C to end. +^C + +Top 10 on-CPU times (us), + +Top 10 exclusive method on-CPU times (us), + PID=311364, method, java/lang/AbstractStringBuilder.append + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 382 + 2 |@@@@@@@@@@@ 151 + 4 |@ 13 + 8 | 1 + 16 | 1 + 32 | 1 + 64 | 0 + + PID=311364, method, java/util/Arrays.copyOf + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 68 + 4 |@@@@@@@ 15 + 8 | 0 + 16 | 0 + 32 | 1 + 64 | 1 + 128 | 0 + 256 |@ 2 + 512 | 0 + + PID=311364, method, java/io/UnixFileSystem.normalize + value ------------- Distribution ------------- count + 1 | 0 + 2 |@ 1 + 4 | 0 + 8 |@@@@@@@@@@@ 9 + 16 |@@@@@@@@@@@@@@ 12 + 32 |@@@@@@ 5 + 64 |@@@@@@@ 6 + 128 |@ 1 + 256 | 0 + + PID=311364, method, java/io/File.<clinit> + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + PID=311364, method, sun/misc/URLClassPath$JarLoader.getJarFile + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + PID=311364, method, java/io/FilePermission$1.run + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 2 + 4 |@@@@@@@@@@ 1 + 8 | 0 + 16 | 0 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 |@@@@@@@@@@ 1 + 2048 | 0 + + PID=311364, method, java/lang/StringBuilder.append + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 526 + 4 | 2 + 8 | 0 + 16 | 4 + 32 | 1 + 64 | 0 + + PID=311364, method, java/lang/String.<init> + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 162 + 4 |@@ 10 + 8 | 0 + 16 | 0 + 32 | 0 + 64 | 1 + 128 | 0 + 256 | 1 + 512 | 0 + 1024 | 1 + 2048 | 0 + + PID=311364, method, java/lang/String.charAt + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1953 + 2 | 3 + 4 | 1 + 8 | 1 + 16 | 2 + 32 | 0 + + PID=311364, method, java/lang/System.initializeSystemClass + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + +Top 10 inclusive method on-CPU times (us), + PID=311364, method, sun/misc/Launcher$ExtClassLoader.<init> + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32768 | 0 + + PID=311364, method, sun/misc/Launcher$ExtClassLoader.getExtClassLoader + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32768 | 0 + + PID=311364, method, sun/misc/Launcher$ExtClassLoader.getExtURLs + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32768 | 0 + + PID=311364, method, sun/misc/Launcher.<clinit> + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32768 | 0 + + PID=311364, method, sun/misc/Launcher.<init> + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32768 | 0 + + PID=311364, method, java/lang/ClassLoader.loadClassInternal + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 128 |@@@@@@@@@ 2 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 | 0 + 16384 |@@@@ 1 + 32768 | 0 + + PID=311364, method, sun/misc/Launcher$AppClassLoader.loadClass + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 128 |@@@@@@@@@ 2 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 | 0 + 16384 |@@@@ 1 + 32768 | 0 + + PID=311364, method, sun/misc/URLClassPath.getLoader + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@ 1 + 8 | 0 + 16 | 0 + 32 | 0 + 64 | 0 + 128 | 0 + 256 |@@@ 1 + 512 |@@@@@@@@@@@@@@@@@@@@@@ 7 + 1024 |@@@@@@ 2 + 2048 | 0 + 4096 |@@@ 1 + 8192 |@@@ 1 + 16384 | 0 + + PID=311364, method, java/lang/ClassLoader.loadClass + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@ 6 + 64 |@@@@@@@@@@@@@@@@@@@@@ 14 + 128 |@@@@@@ 4 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 |@ 1 + 16384 |@@@ 2 + 32768 | 0 + + PID=311364, method, java/security/AccessController.doPrivileged + value ------------- Distribution ------------- count + 2 | 0 + 4 |@ 1 + 8 |@@@@ 4 + 16 |@@@@@@@@@@ 11 + 32 |@@@@@@@@@@ 11 + 64 | 0 + 128 |@@@ 3 + 256 |@ 1 + 512 |@@@@@ 5 + 1024 |@@ 2 + 2048 |@ 1 + 4096 |@ 1 + 8192 |@@ 2 + 16384 |@ 1 + 32768 | 0 + +The elapsed times section is empty. It would show us anything that is not a +Java method - garbage collection for example. However there was nothing of +the kind in this example. + +The exclusive method elapsed times show us the time spent on-CPU by the most +time consuming methods, not including time spent in subroutines called by +those methods. + +The inclusive method elapsed times show us the time spent on-CPU by the top +ten most time consuming methods including time spent in subroutines called by +those methods. + +It is important to pay close attention to the third column, "count" as this +will indicate if there were any instances in a particular timeframe, even if +the number is too small to show up on the histogram clearly. + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_cputime_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_cputime_example.txt new file mode 100644 index 000000000000..0947cc05cbcd --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_cputime_example.txt @@ -0,0 +1,75 @@ +The following are examples of j_cputime.d. + +This script traces the on-CPU time of Java methods and prints a report. Here +it traces the example program, Code/Java/Func_abc + +# j_cputime.d +Tracing... Hit Ctrl-C to end. +^C + +Top 10 counts, + PID TYPE NAME COUNT + 311374 method java/lang/String.equals 202 + 311374 method java/lang/Math.min 208 + 311374 method java/lang/String.hashCode 213 + 311374 method java/lang/String.indexOf 302 + 311374 method java/lang/System.arraycopy 360 + 311374 method java/lang/StringBuilder.append 533 + 311374 method java/lang/AbstractStringBuilder.append 549 + 311374 method java/lang/Object.<init> 823 + 311374 method java/lang/String.charAt 1960 + 0 total - 12020 + +Top 10 on-CPU times (us), + PID TYPE NAME TOTAL + +Top 10 exclusive method on-CPU times (us), + PID TYPE NAME TOTAL + 311374 method java/io/FilePermission$1.run 1055 + 311374 method java/util/Arrays.copyOf 1110 + 311374 method sun/net/www/ParseUtil.decode 1161 + 311374 method java/io/File.<clinit> 1212 + 311374 method java/lang/StringBuilder.append 1228 + 311374 method java/io/UnixFileSystem.normalize 1402 + 311374 method java/lang/String.<init> 2251 + 311374 method java/lang/String.charAt 2262 + 311374 method java/lang/System.initializeSystemClass 2751 + 0 total - 99868 + +Top 10 inclusive method on-CPU times (us), + PID TYPE NAME TOTAL + 311374 method java/lang/ClassLoader.loadClassInternal 25826 + 311374 method sun/misc/Launcher$ExtClassLoader.getExtClassLoader 25914 + 311374 method java/net/URL.<init> 27677 + 311374 method sun/misc/Launcher.<init> 28566 + 311374 method sun/misc/Launcher.<clinit> 28744 + 311374 method java/lang/ClassLoader.initSystemClassLoader 29241 + 311374 method java/lang/ClassLoader.getSystemClassLoader 29249 + 311374 method java/lang/System.initializeSystemClass 33814 + 311374 method java/lang/ClassLoader.loadClass 66564 + 311374 method java/security/AccessController.doPrivileged 67499 + +You can see that it prints the top ten results in each of four categories. + +The first section reports how many times each subroutine was called, and it's +type. + +The second section reports on the on-CPU time of anything that was not of type +"method", in this case - none. + +The exclusive method on-CPU times shows, amongst other results, that +java/lang/String.charAt spent around 2,200 microseconds on-CPU. This times +excludes time spent in other subroutines. + +The inclusive method on-CPU times show the times that various methods +spent on-CPU. This includes the time spent in other subroutines called. + +These on-CPU times are the time the thread spent running on a CPU, from when +the subroutine began to when it completed. This does not include time +spent off-CPU time such as sleeping for I/O or waiting for scheduling. + +On-CPU times are useful for showing who is causing the CPUs to be busy. +See Notes/ALLoncpu_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive subroutine time. + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_events_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_events_example.txt new file mode 100644 index 000000000000..2c48700f3d21 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_events_example.txt @@ -0,0 +1,134 @@ +The following are examples of j_events.d. + +This counts events from all Java processes on the system with hotspot +provider support (1.6.0). Some events such as method calls are only visible +when using the flag "+ExtendedDTraceProbes". eg, +java -XX:+ExtendedDTraceProbes classfile + +Here you can see it running while the program Code/Java/Func_abc + +# j_events.d +Tracing... Hit Ctrl-C to end. +^C + + PID EVENT COUNT + 311379 AttachCurrentThread-entry 1 + 311379 AttachCurrentThread-return 1 + 311379 CallIntMethod-entry 1 + 311379 CallIntMethod-return 1 + 311379 CallStaticBooleanMethod-entry 1 + 311379 CallStaticBooleanMethod-return 1 + 311379 CallStaticObjectMethod-entry 1 + 311379 CallStaticObjectMethod-return 1 + 311379 CallStaticObjectMethodV-entry 1 + 311379 CallStaticObjectMethodV-return 1 + 311379 CallStaticVoidMethod-entry 1 + 311379 CallStaticVoidMethod-return 1 + 311379 CreateJavaVM-entry 1 + 311379 CreateJavaVM-return 1 + 311379 DestroyJavaVM-entry 1 + 311379 DestroyJavaVM-return 1 + 311379 DetachCurrentThread-entry 1 + 311379 DetachCurrentThread-return 1 + 311379 ExceptionCheck-entry 1 + 311379 ExceptionCheck-return 1 + 311379 ExceptionClear-entry 1 + 311379 ExceptionClear-return 1 + 311379 GetDefaultJavaVMInitArgs-entry 1 + 311379 GetDefaultJavaVMInitArgs-return 1 + 311379 GetJavaVM-entry 1 + 311379 GetJavaVM-return 1 + 311379 GetStringRegion-entry 1 + 311379 GetStringRegion-return 1 + 311379 NewByteArray-entry 1 + 311379 NewByteArray-return 1 + 311379 NewObject-entry 1 + 311379 NewObject-return 1 + 311379 NewObjectV-entry 1 + 311379 NewObjectV-return 1 + 311379 SetBooleanField-entry 1 + 311379 SetBooleanField-return 1 + 311379 ToReflectedMethod-entry 1 + 311379 ToReflectedMethod-return 1 + 311379 vm-init-begin 1 + 311379 vm-init-end 1 + 311379 vm-shutdown 1 + 311379 NewGlobalRef-entry 2 + 311379 NewGlobalRef-return 2 + 311379 monitor-wait 2 + 311379 GetStaticFieldID-entry 3 + 311379 GetStaticFieldID-return 3 + 311379 NewObjectArray-entry 3 + 311379 NewObjectArray-return 3 + 311379 SetStaticObjectField-entry 3 + 311379 SetStaticObjectField-return 3 + 311379 GetStaticMethodID-entry 4 + 311379 GetStaticMethodID-return 4 + 311379 EnsureLocalCapacity-entry 5 + 311379 EnsureLocalCapacity-return 5 + 311379 SetByteArrayRegion-entry 5 + 311379 SetByteArrayRegion-return 5 + 311379 SetLongField-entry 5 + 311379 SetLongField-return 5 + 311379 GetMethodID-entry 6 + 311379 GetMethodID-return 6 + 311379 GetObjectArrayElement-entry 6 + 311379 GetObjectArrayElement-return 6 + 311379 GetSuperclass-entry 6 + 311379 GetSuperclass-return 6 + 311379 thread-start 6 + 311379 SetIntField-entry 8 + 311379 SetIntField-return 8 + 311379 GetArrayLength-entry 9 + 311379 GetArrayLength-return 9 + 311379 GetByteArrayRegion-entry 9 + 311379 GetByteArrayRegion-return 9 + 311379 RegisterNatives-entry 9 + 311379 RegisterNatives-return 9 + 311379 GetObjectClass-entry 10 + 311379 GetObjectClass-return 10 + 311379 FindClass-entry 11 + 311379 FindClass-return 11 + 311379 SetObjectArrayElement-entry 12 + 311379 SetObjectArrayElement-return 12 + 311379 GetStringUTFLength-entry 18 + 311379 GetStringUTFLength-return 18 + 311379 GetStringUTFRegion-entry 18 + 311379 GetStringUTFRegion-return 18 + 311379 GetFieldID-entry 21 + 311379 GetFieldID-return 21 + 309790 CallStaticVoidMethod-entry 24 + 309790 CallStaticVoidMethod-return 24 + 194441 CallStaticVoidMethod-entry 26 + 194441 CallStaticVoidMethod-return 26 + 311379 GetStringUTFChars-entry 29 + 311379 GetStringUTFChars-return 29 + 311379 ReleaseStringUTFChars-entry 29 + 311379 ReleaseStringUTFChars-return 29 + 311379 CallObjectMethod-entry 30 + 311379 CallObjectMethod-return 30 + 311379 GetStringCritical-entry 35 + 311379 GetStringCritical-return 35 + 311379 ReleaseStringCritical-entry 35 + 311379 ReleaseStringCritical-return 35 + 311379 ExceptionOccurred-entry 46 + 311379 ExceptionOccurred-return 46 + 311379 GetStringLength-entry 54 + 311379 GetStringLength-return 54 + 311379 NewStringUTF-entry 54 + 311379 NewStringUTF-return 54 + 311379 NewString-entry 55 + 311379 NewString-return 55 + 311379 GetObjectField-entry 60 + 311379 GetObjectField-return 60 + 311379 DeleteLocalRef-entry 108 + 311379 DeleteLocalRef-return 108 + 311379 class-loaded 327 + 311379 object-alloc 5389 + 311379 method-return 12024 + 311379 method-entry 12031 + +You can see that nearly all of the events recorded are from PID 311379, which +we can assume in this case is the program in question. Not all of the lines +correspond to this, however, which is something to be aware of while analysing +the results. diff --git a/cddl/contrib/dtracetoolkit/Examples/j_flow_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_flow_example.txt new file mode 100644 index 000000000000..433bef314224 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_flow_example.txt @@ -0,0 +1,1292 @@ +The following are examples of j_flow.d. + +This is a simple script to trace the not-so-simple flow of Java methods and +classes. Here it traces the example program, Code/Java/func_abc + +# j_flow.d + C PID TIME(us) -- CLASS.METHOD + 0 311403 4789112583163 -> java/lang/Object.<clinit> + 0 311403 4789112583207 -> java/lang/Object.registerNatives + 0 311403 4789112583323 <- java/lang/Object.registerNatives + 0 311403 4789112583333 <- java/lang/Object.<clinit> + 0 311403 4789112583343 -> java/lang/String.<clinit> + 0 311403 4789112583732 -> java/lang/String$CaseInsensitiveComparator.<init> + 0 311403 4789112583743 -> java/lang/String$CaseInsensitiveComparator.<init> + 0 311403 4789112583752 -> java/lang/Object.<init> + 0 311403 4789112583760 <- java/lang/Object.<init> + 0 311403 4789112583767 <- java/lang/String$CaseInsensitiveComparator.<init> + 0 311403 4789112583774 <- java/lang/String$CaseInsensitiveComparator.<init> + 0 311403 4789112583783 <- java/lang/String.<clinit> + 0 311403 4789112583849 -> java/lang/System.<clinit> + 0 311403 4789112583859 -> java/lang/System.registerNatives + 0 311403 4789112583878 <- java/lang/System.registerNatives + 0 311403 4789112583887 -> java/lang/System.nullInputStream + 0 311403 4789112583895 -> java/lang/System.currentTimeMillis + 0 311403 4789112583905 <- java/lang/System.currentTimeMillis + 0 311403 4789112583913 <- java/lang/System.nullInputStream + 0 311403 4789112583923 -> java/lang/System.nullPrintStream + 0 311403 4789112583929 -> java/lang/System.currentTimeMillis + 0 311403 4789112583937 <- java/lang/System.currentTimeMillis + 0 311403 4789112583944 <- java/lang/System.nullPrintStream + 0 311403 4789112583951 -> java/lang/System.nullPrintStream + 0 311403 4789112583958 -> java/lang/System.currentTimeMillis + 0 311403 4789112583965 <- java/lang/System.currentTimeMillis + 0 311403 4789112583972 <- java/lang/System.nullPrintStream + 0 311403 4789112583982 <- java/lang/System.<clinit> + 0 311403 4789112584058 -> java/lang/ThreadGroup.<init> + 0 311403 4789112584068 -> java/lang/Object.<init> + 0 311403 4789112584075 <- java/lang/Object.<init> + 0 311403 4789112584100 <- java/lang/ThreadGroup.<init> + 0 311403 4789112584109 -> java/lang/ThreadGroup.<init> + 0 311403 4789112584116 -> java/lang/Object.<init> + 0 311403 4789112584123 <- java/lang/Object.<init> + 0 311403 4789112584139 -> java/lang/ThreadGroup.checkAccess + 0 311403 4789112584148 -> java/lang/System.getSecurityManager + 0 311403 4789112584157 <- java/lang/System.getSecurityManager + 0 311403 4789112584164 <- java/lang/ThreadGroup.checkAccess + 0 311403 4789112584175 -> java/lang/ThreadGroup.add + 0 311403 4789112584196 <- java/lang/ThreadGroup.add + 0 311403 4789112584202 <- java/lang/ThreadGroup.<init> + 0 311403 4789112584385 -> java/lang/Thread.<clinit> + 0 311403 4789112584396 -> java/lang/Thread.registerNatives + 0 311403 4789112584421 <- java/lang/Thread.registerNatives + 0 311403 4789112584779 -> java/lang/RuntimePermission.<init> + 0 311403 4789112584789 -> java/security/BasicPermission.<init> + 0 311403 4789112584798 -> java/security/Permission.<init> + 0 311403 4789112584806 -> java/lang/Object.<init> + 0 311403 4789112584814 <- java/lang/Object.<init> + 0 311403 4789112584823 <- java/security/Permission.<init> + 0 311403 4789112584831 -> java/security/BasicPermission.init + 0 311403 4789112584842 -> java/lang/String.length + 0 311403 4789112584850 <- java/lang/String.length + 0 311403 4789112584860 -> java/lang/String.charAt + 0 311403 4789112584869 <- java/lang/String.charAt + 0 311403 4789112584880 -> java/lang/String.equals + 0 311403 4789112584888 <- java/lang/String.equals + 0 311403 4789112584896 <- java/security/BasicPermission.init + 0 311403 4789112584903 <- java/security/BasicPermission.<init> + 0 311403 4789112584910 <- java/lang/RuntimePermission.<init> + 0 311403 4789112585319 -> sun/misc/SoftCache.<init> + 0 311403 4789112585329 -> java/util/AbstractMap.<init> + 0 311403 4789112585337 -> java/lang/Object.<init> + 0 311403 4789112585345 <- java/lang/Object.<init> + 0 311403 4789112585355 <- java/util/AbstractMap.<init> + 0 311403 4789112585485 -> java/lang/ref/ReferenceQueue.<clinit> + 0 311403 4789112585554 -> java/lang/ref/ReferenceQueue$Null.<init> + 0 311403 4789112585564 -> java/lang/ref/ReferenceQueue$Null.<init> + 0 311403 4789112585572 -> java/lang/ref/ReferenceQueue.<init> + 0 311403 4789112585581 -> java/lang/Object.<init> + 0 311403 4789112585589 <- java/lang/Object.<init> + 0 311403 4789112585646 -> java/lang/ref/ReferenceQueue$Lock.<init> + 0 311403 4789112585656 -> java/lang/ref/ReferenceQueue$Lock.<init> + 0 311403 4789112585664 -> java/lang/Object.<init> + 0 311403 4789112585671 <- java/lang/Object.<init> + 0 311403 4789112585678 <- java/lang/ref/ReferenceQueue$Lock.<init> + 0 311403 4789112585685 <- java/lang/ref/ReferenceQueue$Lock.<init> + 0 311403 4789112585696 <- java/lang/ref/ReferenceQueue.<init> + 0 311403 4789112585702 <- java/lang/ref/ReferenceQueue$Null.<init> + 0 311403 4789112585709 <- java/lang/ref/ReferenceQueue$Null.<init> + 0 311403 4789112585717 -> java/lang/ref/ReferenceQueue$Null.<init> + 0 311403 4789112585723 -> java/lang/ref/ReferenceQueue$Null.<init> + 0 311403 4789112585729 -> java/lang/ref/ReferenceQueue.<init> + 0 311403 4789112585736 -> java/lang/Object.<init> + 0 311403 4789112585743 <- java/lang/Object.<init> + 0 311403 4789112585748 -> java/lang/ref/ReferenceQueue$Lock.<init> + 0 311403 4789112585755 -> java/lang/ref/ReferenceQueue$Lock.<init> + 0 311403 4789112585761 -> java/lang/Object.<init> + 0 311403 4789112585768 <- java/lang/Object.<init> + 0 311403 4789112585796 <- java/lang/ref/ReferenceQueue$Lock.<init> + 0 311403 4789112585803 <- java/lang/ref/ReferenceQueue$Lock.<init> +[... 22800 lines truncated ...] + 0 311403 4789112982170 <- java/lang/reflect/Method.getModifiers + 0 311403 4789112982182 -> Func_abc.main + 0 311403 4789112982193 -> Func_abc.func_a + 0 311403 4789112982201 -> java/lang/ClassLoader.checkPackageAccess + 0 311403 4789112982208 -> java/lang/System.getSecurityManager + 0 311403 4789112982215 <- java/lang/System.getSecurityManager + 0 311403 4789112982221 -> java/util/HashSet.add + 0 311403 4789112982228 -> java/util/HashMap.put + 0 311403 4789112982234 -> java/lang/Object.hashCode + 0 311403 4789112982241 <- java/lang/Object.hashCode + 0 311403 4789112982247 -> java/util/HashMap.hash + 0 311403 4789112982254 <- java/util/HashMap.hash + 0 311403 4789112982260 -> java/util/HashMap.indexFor + 0 311403 4789112982267 <- java/util/HashMap.indexFor + 0 311403 4789112982274 <- java/util/HashMap.put + 0 311403 4789112982280 <- java/util/HashSet.add + 0 311403 4789112982287 <- java/lang/ClassLoader.checkPackageAccess + 0 311403 4789112982349 -> java/lang/ClassLoader.loadClassInternal + 0 311403 4789112982356 -> java/lang/ClassLoader.loadClass + 0 311403 4789112982363 -> sun/misc/Launcher$AppClassLoader.loadClass + 0 311403 4789112982369 -> java/lang/String.lastIndexOf + 0 311403 4789112982376 -> java/lang/String.lastIndexOf + 0 311403 4789112982384 <- java/lang/String.lastIndexOf + 0 311403 4789112982391 <- java/lang/String.lastIndexOf + 0 311403 4789112982396 -> java/lang/System.getSecurityManager + 0 311403 4789112982404 <- java/lang/System.getSecurityManager + 0 311403 4789112982410 -> java/lang/ClassLoader.loadClass + 0 311403 4789112982416 -> java/lang/ClassLoader.findLoadedClass + 0 311403 4789112982422 -> java/lang/ClassLoader.check + 0 311403 4789112982429 <- java/lang/ClassLoader.check + 0 311403 4789112982435 -> java/lang/ClassLoader.checkName + 0 311403 4789112982442 -> java/lang/String.indexOf + 0 311403 4789112982448 -> java/lang/String.indexOf + 0 311403 4789112982456 <- java/lang/String.indexOf + 0 311403 4789112982462 <- java/lang/String.indexOf + 0 311403 4789112982468 -> sun/misc/VM.allowArraySyntax + 0 311403 4789112982475 <- sun/misc/VM.allowArraySyntax + 0 311403 4789112982481 -> java/lang/String.charAt + 0 311403 4789112982488 <- java/lang/String.charAt + 0 311403 4789112982495 <- java/lang/ClassLoader.checkName + 0 311403 4789112982501 -> java/lang/ClassLoader.findLoadedClass0 + 0 311403 4789112982510 <- java/lang/ClassLoader.findLoadedClass0 + 0 311403 4789112982517 <- java/lang/ClassLoader.findLoadedClass + 0 311403 4789112982524 -> java/lang/ClassLoader.loadClass + 0 311403 4789112982530 -> java/lang/ClassLoader.findLoadedClass + 0 311403 4789112982536 -> java/lang/ClassLoader.check + 0 311403 4789112982543 <- java/lang/ClassLoader.check + 0 311403 4789112982549 -> java/lang/ClassLoader.checkName + 0 311403 4789112982555 -> java/lang/String.indexOf + 0 311403 4789112982561 -> java/lang/String.indexOf + 0 311403 4789112982569 <- java/lang/String.indexOf + 0 311403 4789112982576 <- java/lang/String.indexOf + 0 311403 4789112982582 -> sun/misc/VM.allowArraySyntax + 0 311403 4789112982589 <- sun/misc/VM.allowArraySyntax + 0 311403 4789112982594 -> java/lang/String.charAt + 0 311403 4789112982602 <- java/lang/String.charAt + 0 311403 4789112982608 <- java/lang/ClassLoader.checkName + 0 311403 4789112982614 -> java/lang/ClassLoader.findLoadedClass0 + 0 311403 4789112982623 <- java/lang/ClassLoader.findLoadedClass0 + 0 311403 4789112982630 <- java/lang/ClassLoader.findLoadedClass + 0 311403 4789112982636 -> java/lang/ClassLoader.findBootstrapClass0 + 0 311403 4789112982642 -> java/lang/ClassLoader.check + 0 311403 4789112982650 <- java/lang/ClassLoader.check + 0 311403 4789112982655 -> java/lang/ClassLoader.checkName + 0 311403 4789112982662 -> java/lang/String.indexOf + 0 311403 4789112982668 -> java/lang/String.indexOf + 0 311403 4789112982676 <- java/lang/String.indexOf + 0 311403 4789112982682 <- java/lang/String.indexOf + 0 311403 4789112982688 -> sun/misc/VM.allowArraySyntax + 0 311403 4789112982695 <- sun/misc/VM.allowArraySyntax + 0 311403 4789112982701 -> java/lang/String.charAt + 0 311403 4789112982708 <- java/lang/String.charAt + 0 311403 4789112982715 <- java/lang/ClassLoader.checkName + 0 311403 4789112982720 -> java/lang/ClassLoader.findBootstrapClass + 0 311403 4789112982730 <- java/lang/ClassLoader.findBootstrapClass + 0 311403 4789112982737 <- java/lang/ClassLoader.findBootstrapClass0 + 0 311403 4789112982744 <- java/lang/ClassLoader.loadClass + 0 311403 4789112982751 <- java/lang/ClassLoader.loadClass + 0 311403 4789112982757 <- sun/misc/Launcher$AppClassLoader.loadClass + 0 311403 4789112982764 <- java/lang/ClassLoader.loadClass + 0 311403 4789112982771 <- java/lang/ClassLoader.loadClassInternal + 0 311403 4789112982780 -> java/lang/ClassLoader.checkPackageAccess + 0 311403 4789112982787 -> java/lang/System.getSecurityManager + 0 311403 4789112982794 <- java/lang/System.getSecurityManager + 0 311403 4789112982800 -> java/util/HashSet.add + 0 311403 4789112982806 -> java/util/HashMap.put + 0 311403 4789112982813 -> java/lang/Object.hashCode + 0 311403 4789112982820 <- java/lang/Object.hashCode + 0 311403 4789112982826 -> java/util/HashMap.hash + 0 311403 4789112982833 <- java/util/HashMap.hash + 0 311403 4789112982839 -> java/util/HashMap.indexFor + 0 311403 4789112982846 <- java/util/HashMap.indexFor + 0 311403 4789112982853 <- java/util/HashMap.put + 0 311403 4789112982859 <- java/util/HashSet.add + 0 311403 4789112982866 <- java/lang/ClassLoader.checkPackageAccess + 0 311403 4789112982879 -> java/io/PrintStream.println + 0 311403 4789112982889 -> java/io/PrintStream.print + 0 311403 4789112982897 -> java/io/PrintStream.write + 0 311403 4789112982906 -> java/io/PrintStream.ensureOpen + 0 311403 4789112982916 <- java/io/PrintStream.ensureOpen + 0 311403 4789112982927 -> java/io/Writer.write + 0 311403 4789112982939 -> java/io/BufferedWriter.write + 0 311403 4789112982948 -> java/io/BufferedWriter.ensureOpen + 0 311403 4789112982956 <- java/io/BufferedWriter.ensureOpen + 0 311403 4789112982964 -> java/io/BufferedWriter.min + 0 311403 4789112982971 <- java/io/BufferedWriter.min + 0 311403 4789112982980 -> java/lang/String.getChars + 0 311403 4789112982987 -> java/lang/System.arraycopy + 0 311403 4789112982995 <- java/lang/System.arraycopy + 0 311403 4789112983002 <- java/lang/String.getChars + 0 311403 4789112983009 <- java/io/BufferedWriter.write + 0 311403 4789112983016 <- java/io/Writer.write + 0 311403 4789112983024 -> java/io/BufferedWriter.flushBuffer + 0 311403 4789112983031 -> java/io/BufferedWriter.ensureOpen + 0 311403 4789112983038 <- java/io/BufferedWriter.ensureOpen + 0 311403 4789112983046 -> java/io/OutputStreamWriter.write + 0 311403 4789112983056 -> sun/nio/cs/StreamEncoder.write + 0 311403 4789112983066 -> sun/nio/cs/StreamEncoder.ensureOpen + 0 311403 4789112983073 <- sun/nio/cs/StreamEncoder.ensureOpen + 0 311403 4789112983082 -> sun/nio/cs/StreamEncoder.implWrite + 0 311403 4789112983093 -> java/nio/CharBuffer.wrap + 0 311403 4789112983099 -> java/nio/HeapCharBuffer.<init> + 0 311403 4789112983106 -> java/nio/CharBuffer.<init> + 0 311403 4789112983113 -> java/nio/Buffer.<init> + 0 311403 4789112983119 -> java/lang/Object.<init> + 0 311403 4789112983126 <- java/lang/Object.<init> + 0 311403 4789112983133 -> java/nio/Buffer.limit + 0 311403 4789112983140 <- java/nio/Buffer.limit + 0 311403 4789112983146 -> java/nio/Buffer.position + 0 311403 4789112983153 <- java/nio/Buffer.position + 0 311403 4789112983160 <- java/nio/Buffer.<init> + 0 311403 4789112983166 <- java/nio/CharBuffer.<init> + 0 311403 4789112983173 <- java/nio/HeapCharBuffer.<init> + 0 311403 4789112983180 <- java/nio/CharBuffer.wrap + 0 311403 4789112983188 -> java/nio/Buffer.hasRemaining + 0 311403 4789112983196 <- java/nio/Buffer.hasRemaining + 0 311403 4789112983206 -> java/nio/charset/CharsetEncoder.encode + 0 311403 4789112983216 -> sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311403 4789112983226 -> java/nio/CharBuffer.hasArray + 0 311403 4789112983233 <- java/nio/CharBuffer.hasArray + 0 311403 4789112983243 -> java/nio/ByteBuffer.hasArray + 0 311403 4789112983250 <- java/nio/ByteBuffer.hasArray + 0 311403 4789112983259 -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311403 4789112983267 -> java/nio/CharBuffer.array + 0 311403 4789112983274 <- java/nio/CharBuffer.array + 0 311403 4789112983282 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789112983289 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789112983297 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789112983305 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789112983316 -> java/nio/ByteBuffer.array + 0 311403 4789112983323 <- java/nio/ByteBuffer.array + 0 311403 4789112983331 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789112983338 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789112983346 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789112983354 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789112983366 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789112983374 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789112983382 -> java/nio/Buffer.position + 0 311403 4789112983389 <- java/nio/Buffer.position + 0 311403 4789112983395 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789112983402 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789112983410 -> java/nio/Buffer.position + 0 311403 4789112983417 <- java/nio/Buffer.position + 0 311403 4789112983424 <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311403 4789112983431 <- sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311403 4789112983439 -> java/nio/charset/CoderResult.isOverflow + 0 311403 4789112983447 <- java/nio/charset/CoderResult.isOverflow + 0 311403 4789112983454 -> java/nio/charset/CoderResult.isUnderflow + 0 311403 4789112983462 <- java/nio/charset/CoderResult.isUnderflow + 0 311403 4789112983469 <- java/nio/charset/CharsetEncoder.encode + 0 311403 4789112983477 -> java/nio/charset/CoderResult.isUnderflow + 0 311403 4789112983485 <- java/nio/charset/CoderResult.isUnderflow + 0 311403 4789112983494 -> java/nio/Buffer.remaining + 0 311403 4789112983501 <- java/nio/Buffer.remaining + 0 311403 4789112983508 <- sun/nio/cs/StreamEncoder.implWrite + 0 311403 4789112983515 <- sun/nio/cs/StreamEncoder.write + 0 311403 4789112983522 <- java/io/OutputStreamWriter.write + 0 311403 4789112983528 <- java/io/BufferedWriter.flushBuffer + 0 311403 4789112983537 -> java/io/OutputStreamWriter.flushBuffer + 0 311403 4789112983546 -> sun/nio/cs/StreamEncoder.flushBuffer + 0 311403 4789112983555 -> sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311403 4789112983565 -> sun/nio/cs/StreamEncoder.writeBytes + 0 311403 4789112983574 -> java/nio/Buffer.flip + 0 311403 4789112983581 <- java/nio/Buffer.flip + 0 311403 4789112983591 -> java/nio/ByteBuffer.array + 0 311403 4789112983598 <- java/nio/ByteBuffer.array + 0 311403 4789112983606 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789112983613 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789112983623 -> java/io/PrintStream.write + 0 311403 4789112983629 -> java/io/PrintStream.ensureOpen + 0 311403 4789112983636 <- java/io/PrintStream.ensureOpen + 0 311403 4789112983645 -> java/io/BufferedOutputStream.write + 0 311403 4789112983657 -> java/lang/System.arraycopy + 0 311403 4789112983664 <- java/lang/System.arraycopy + 0 311403 4789112983671 <- java/io/BufferedOutputStream.write + 0 311403 4789112983679 -> java/io/BufferedOutputStream.flush + 0 311403 4789112983688 -> java/io/BufferedOutputStream.flushBuffer + 0 311403 4789112983698 -> java/io/FileOutputStream.write + 0 311403 4789112983707 -> java/io/FileOutputStream.writeBytes + 0 311403 4789112983860 <- java/io/FileOutputStream.writeBytes + 0 311403 4789112983868 <- java/io/FileOutputStream.write + 0 311403 4789112983874 <- java/io/BufferedOutputStream.flushBuffer + 0 311403 4789112983885 <- java/io/BufferedOutputStream.flush + 0 311403 4789112983892 <- java/io/PrintStream.write + 0 311403 4789112983901 -> java/nio/Buffer.clear + 0 311403 4789112983909 <- java/nio/Buffer.clear + 0 311403 4789112983915 <- sun/nio/cs/StreamEncoder.writeBytes + 0 311403 4789112983922 <- sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311403 4789112983929 <- sun/nio/cs/StreamEncoder.flushBuffer + 0 311403 4789112983936 <- java/io/OutputStreamWriter.flushBuffer + 0 311403 4789112983946 -> java/lang/String.indexOf + 0 311403 4789112983952 -> java/lang/String.indexOf + 0 311403 4789112983961 <- java/lang/String.indexOf + 0 311403 4789112983967 <- java/lang/String.indexOf + 0 311403 4789112983974 <- java/io/PrintStream.write + 0 311403 4789112983981 <- java/io/PrintStream.print + 0 311403 4789112983989 -> java/io/PrintStream.newLine + 0 311403 4789112983995 -> java/io/PrintStream.ensureOpen + 0 311403 4789112984002 <- java/io/PrintStream.ensureOpen + 0 311403 4789112984010 -> java/io/BufferedWriter.newLine + 0 311403 4789112984019 -> java/io/Writer.write + 0 311403 4789112984025 -> java/io/BufferedWriter.write + 0 311403 4789112984031 -> java/io/BufferedWriter.ensureOpen + 0 311403 4789112984039 <- java/io/BufferedWriter.ensureOpen + 0 311403 4789112984045 -> java/io/BufferedWriter.min + 0 311403 4789112984052 <- java/io/BufferedWriter.min + 0 311403 4789112984058 -> java/lang/String.getChars + 0 311403 4789112984064 -> java/lang/System.arraycopy + 0 311403 4789112984072 <- java/lang/System.arraycopy + 0 311403 4789112984078 <- java/lang/String.getChars + 0 311403 4789112984085 <- java/io/BufferedWriter.write + 0 311403 4789112984092 <- java/io/Writer.write + 0 311403 4789112984099 <- java/io/BufferedWriter.newLine + 0 311403 4789112984104 -> java/io/BufferedWriter.flushBuffer + 0 311403 4789112984111 -> java/io/BufferedWriter.ensureOpen + 0 311403 4789112984118 <- java/io/BufferedWriter.ensureOpen + 0 311403 4789112984124 -> java/io/OutputStreamWriter.write + 0 311403 4789112984130 -> sun/nio/cs/StreamEncoder.write + 0 311403 4789112984137 -> sun/nio/cs/StreamEncoder.ensureOpen + 0 311403 4789112984144 <- sun/nio/cs/StreamEncoder.ensureOpen + 0 311403 4789112984150 -> sun/nio/cs/StreamEncoder.implWrite + 0 311403 4789112984156 -> java/nio/CharBuffer.wrap + 0 311403 4789112984163 -> java/nio/HeapCharBuffer.<init> + 0 311403 4789112984169 -> java/nio/CharBuffer.<init> + 0 311403 4789112984175 -> java/nio/Buffer.<init> + 0 311403 4789112984181 -> java/lang/Object.<init> + 0 311403 4789112984189 <- java/lang/Object.<init> + 0 311403 4789112984194 -> java/nio/Buffer.limit + 0 311403 4789112984202 <- java/nio/Buffer.limit + 0 311403 4789112984207 -> java/nio/Buffer.position + 0 311403 4789112984214 <- java/nio/Buffer.position + 0 311403 4789112984221 <- java/nio/Buffer.<init> + 0 311403 4789112984228 <- java/nio/CharBuffer.<init> + 0 311403 4789112984234 <- java/nio/HeapCharBuffer.<init> + 0 311403 4789112984241 <- java/nio/CharBuffer.wrap + 0 311403 4789112984247 -> java/nio/Buffer.hasRemaining + 0 311403 4789112984254 <- java/nio/Buffer.hasRemaining + 0 311403 4789112984260 -> java/nio/charset/CharsetEncoder.encode + 0 311403 4789112984266 -> sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311403 4789112984273 -> java/nio/CharBuffer.hasArray + 0 311403 4789112984280 <- java/nio/CharBuffer.hasArray + 0 311403 4789112984286 -> java/nio/ByteBuffer.hasArray + 0 311403 4789112984293 <- java/nio/ByteBuffer.hasArray + 0 311403 4789112984299 -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311403 4789112984305 -> java/nio/CharBuffer.array + 0 311403 4789112984312 <- java/nio/CharBuffer.array + 0 311403 4789112984318 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789112984325 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789112984331 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789112984338 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789112984344 -> java/nio/ByteBuffer.array + 0 311403 4789112984352 <- java/nio/ByteBuffer.array + 0 311403 4789112984358 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789112984365 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789112984371 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789112984378 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789112984384 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789112984391 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789112984397 -> java/nio/Buffer.position + 0 311403 4789112984404 <- java/nio/Buffer.position + 0 311403 4789112984410 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789112984417 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789112984423 -> java/nio/Buffer.position + 0 311403 4789112984430 <- java/nio/Buffer.position + 0 311403 4789112984437 <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311403 4789112984444 <- sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311403 4789112984450 -> java/nio/charset/CoderResult.isOverflow + 0 311403 4789112984457 <- java/nio/charset/CoderResult.isOverflow + 0 311403 4789112984463 -> java/nio/charset/CoderResult.isUnderflow + 0 311403 4789112984470 <- java/nio/charset/CoderResult.isUnderflow + 0 311403 4789112984477 <- java/nio/charset/CharsetEncoder.encode + 0 311403 4789112984483 -> java/nio/charset/CoderResult.isUnderflow + 0 311403 4789112984491 <- java/nio/charset/CoderResult.isUnderflow + 0 311403 4789112984497 -> java/nio/Buffer.remaining + 0 311403 4789112984504 <- java/nio/Buffer.remaining + 0 311403 4789112984510 <- sun/nio/cs/StreamEncoder.implWrite + 0 311403 4789112984517 <- sun/nio/cs/StreamEncoder.write + 0 311403 4789112984524 <- java/io/OutputStreamWriter.write + 0 311403 4789112984531 <- java/io/BufferedWriter.flushBuffer + 0 311403 4789112984536 -> java/io/OutputStreamWriter.flushBuffer + 0 311403 4789112984543 -> sun/nio/cs/StreamEncoder.flushBuffer + 0 311403 4789112984549 -> sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311403 4789112984556 -> sun/nio/cs/StreamEncoder.writeBytes + 0 311403 4789112984562 -> java/nio/Buffer.flip + 0 311403 4789112984569 <- java/nio/Buffer.flip + 0 311403 4789112984575 -> java/nio/ByteBuffer.array + 0 311403 4789112984582 <- java/nio/ByteBuffer.array + 0 311403 4789112984588 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789112984595 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789112984601 -> java/io/PrintStream.write + 0 311403 4789112984607 -> java/io/PrintStream.ensureOpen + 0 311403 4789112984615 <- java/io/PrintStream.ensureOpen + 0 311403 4789112984621 -> java/io/BufferedOutputStream.write + 0 311403 4789112984627 -> java/lang/System.arraycopy + 0 311403 4789112984635 <- java/lang/System.arraycopy + 0 311403 4789112984641 <- java/io/BufferedOutputStream.write + 0 311403 4789112984647 -> java/io/BufferedOutputStream.flush + 0 311403 4789112984654 -> java/io/BufferedOutputStream.flushBuffer + 0 311403 4789112984660 -> java/io/FileOutputStream.write + 0 311403 4789112984666 -> java/io/FileOutputStream.writeBytes + 0 311403 4789112984712 <- java/io/FileOutputStream.writeBytes + 0 311403 4789112984719 <- java/io/FileOutputStream.write + 0 311403 4789112984726 <- java/io/BufferedOutputStream.flushBuffer + 0 311403 4789112984733 <- java/io/BufferedOutputStream.flush + 0 311403 4789112984740 <- java/io/PrintStream.write + 0 311403 4789112984746 -> java/nio/Buffer.clear + 0 311403 4789112984753 <- java/nio/Buffer.clear + 0 311403 4789112984760 <- sun/nio/cs/StreamEncoder.writeBytes + 0 311403 4789112984766 <- sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311403 4789112984773 <- sun/nio/cs/StreamEncoder.flushBuffer + 0 311403 4789112984780 <- java/io/OutputStreamWriter.flushBuffer + 0 311403 4789112984786 -> java/io/BufferedOutputStream.flush + 0 311403 4789112984792 -> java/io/BufferedOutputStream.flushBuffer + 0 311403 4789112984800 <- java/io/BufferedOutputStream.flushBuffer + 0 311403 4789112984807 <- java/io/BufferedOutputStream.flush + 0 311403 4789112984813 <- java/io/PrintStream.newLine + 0 311403 4789112984820 <- java/io/PrintStream.println + 0 311403 4789112984835 -> java/lang/ClassLoader.loadClassInternal + 0 311403 4789112984842 -> java/lang/ClassLoader.loadClass + 0 311403 4789112984849 -> sun/misc/Launcher$AppClassLoader.loadClass + 0 311403 4789112984855 -> java/lang/String.lastIndexOf + 0 311403 4789112984862 -> java/lang/String.lastIndexOf + 0 311403 4789112984870 <- java/lang/String.lastIndexOf + 0 311403 4789112984877 <- java/lang/String.lastIndexOf + 0 311403 4789112984882 -> java/lang/System.getSecurityManager + 0 311403 4789112984890 <- java/lang/System.getSecurityManager + 0 311403 4789112984896 -> java/lang/ClassLoader.loadClass + 0 311403 4789112984902 -> java/lang/ClassLoader.findLoadedClass + 0 311403 4789112984908 -> java/lang/ClassLoader.check + 0 311403 4789112984915 <- java/lang/ClassLoader.check + 0 311403 4789112984921 -> java/lang/ClassLoader.checkName + 0 311403 4789112984927 -> java/lang/String.indexOf + 0 311403 4789112984934 -> java/lang/String.indexOf + 0 311403 4789112984942 <- java/lang/String.indexOf + 0 311403 4789112984948 <- java/lang/String.indexOf + 0 311403 4789112984954 -> sun/misc/VM.allowArraySyntax + 0 311403 4789112984961 <- sun/misc/VM.allowArraySyntax + 0 311403 4789112984967 -> java/lang/String.charAt + 0 311403 4789112984974 <- java/lang/String.charAt + 0 311403 4789112984981 <- java/lang/ClassLoader.checkName + 0 311403 4789112984987 -> java/lang/ClassLoader.findLoadedClass0 + 0 311403 4789112984998 <- java/lang/ClassLoader.findLoadedClass0 + 0 311403 4789112985005 <- java/lang/ClassLoader.findLoadedClass + 0 311403 4789112985011 -> java/lang/ClassLoader.loadClass + 0 311403 4789112985018 -> java/lang/ClassLoader.findLoadedClass + 0 311403 4789112985024 -> java/lang/ClassLoader.check + 0 311403 4789112985031 <- java/lang/ClassLoader.check + 0 311403 4789112985037 -> java/lang/ClassLoader.checkName + 0 311403 4789112985043 -> java/lang/String.indexOf + 0 311403 4789112985049 -> java/lang/String.indexOf + 0 311403 4789112985057 <- java/lang/String.indexOf + 0 311403 4789112985064 <- java/lang/String.indexOf + 0 311403 4789112985070 -> sun/misc/VM.allowArraySyntax + 0 311403 4789112985077 <- sun/misc/VM.allowArraySyntax + 0 311403 4789112985083 -> java/lang/String.charAt + 0 311403 4789112985090 <- java/lang/String.charAt + 0 311403 4789112985096 <- java/lang/ClassLoader.checkName + 0 311403 4789112985102 -> java/lang/ClassLoader.findLoadedClass0 + 0 311403 4789112985111 <- java/lang/ClassLoader.findLoadedClass0 + 0 311403 4789112985118 <- java/lang/ClassLoader.findLoadedClass + 0 311403 4789112985124 -> java/lang/ClassLoader.findBootstrapClass0 + 0 311403 4789112985130 -> java/lang/ClassLoader.check + 0 311403 4789112985138 <- java/lang/ClassLoader.check + 0 311403 4789112985143 -> java/lang/ClassLoader.checkName + 0 311403 4789112985150 -> java/lang/String.indexOf + 0 311403 4789112985156 -> java/lang/String.indexOf + 0 311403 4789112985164 <- java/lang/String.indexOf + 0 311403 4789112985170 <- java/lang/String.indexOf + 0 311403 4789112985176 -> sun/misc/VM.allowArraySyntax + 0 311403 4789112985183 <- sun/misc/VM.allowArraySyntax + 0 311403 4789112985189 -> java/lang/String.charAt + 0 311403 4789112985196 <- java/lang/String.charAt + 0 311403 4789112985203 <- java/lang/ClassLoader.checkName + 0 311403 4789112985208 -> java/lang/ClassLoader.findBootstrapClass + 0 311403 4789112985219 <- java/lang/ClassLoader.findBootstrapClass + 0 311403 4789112985226 <- java/lang/ClassLoader.findBootstrapClass0 + 0 311403 4789112985233 <- java/lang/ClassLoader.loadClass + 0 311403 4789112985240 <- java/lang/ClassLoader.loadClass + 0 311403 4789112985247 <- sun/misc/Launcher$AppClassLoader.loadClass + 0 311403 4789112985253 <- java/lang/ClassLoader.loadClass + 0 311403 4789112985260 <- java/lang/ClassLoader.loadClassInternal + 0 311403 4789112985270 -> java/lang/ClassLoader.checkPackageAccess + 0 311403 4789112985277 -> java/lang/System.getSecurityManager + 0 311403 4789112985285 <- java/lang/System.getSecurityManager + 0 311403 4789112985291 -> java/util/HashSet.add + 0 311403 4789112985297 -> java/util/HashMap.put + 0 311403 4789112985304 -> java/lang/Object.hashCode + 0 311403 4789112985311 <- java/lang/Object.hashCode + 0 311403 4789112985317 -> java/util/HashMap.hash + 0 311403 4789112985324 <- java/util/HashMap.hash + 0 311403 4789112985330 -> java/util/HashMap.indexFor + 0 311403 4789112985337 <- java/util/HashMap.indexFor + 0 311403 4789112985344 <- java/util/HashMap.put + 0 311403 4789112985351 <- java/util/HashSet.add + 0 311403 4789112985358 <- java/lang/ClassLoader.checkPackageAccess + 0 311403 4789112985371 -> java/lang/Thread.currentThread + 0 311403 4789112985379 <- java/lang/Thread.currentThread + 0 311403 4789112985387 -> java/lang/Thread.sleep + 0 311403 4789113990048 <- java/lang/Thread.sleep + 0 311403 4789113990080 -> Func_abc.func_b + 0 311403 4789113990104 -> java/io/PrintStream.println + 0 311403 4789113990112 -> java/io/PrintStream.print + 0 311403 4789113990118 -> java/io/PrintStream.write + 0 311403 4789113990125 -> java/io/PrintStream.ensureOpen + 0 311403 4789113990133 <- java/io/PrintStream.ensureOpen + 0 311403 4789113990139 -> java/io/Writer.write + 0 311403 4789113990147 -> java/io/BufferedWriter.write + 0 311403 4789113990154 -> java/io/BufferedWriter.ensureOpen + 0 311403 4789113990161 <- java/io/BufferedWriter.ensureOpen + 0 311403 4789113990168 -> java/io/BufferedWriter.min + 0 311403 4789113990176 <- java/io/BufferedWriter.min + 0 311403 4789113990182 -> java/lang/String.getChars + 0 311403 4789113990189 -> java/lang/System.arraycopy + 0 311403 4789113990198 <- java/lang/System.arraycopy + 0 311403 4789113990205 <- java/lang/String.getChars + 0 311403 4789113990212 <- java/io/BufferedWriter.write + 0 311403 4789113990219 <- java/io/Writer.write + 0 311403 4789113990225 -> java/io/BufferedWriter.flushBuffer + 0 311403 4789113990231 -> java/io/BufferedWriter.ensureOpen + 0 311403 4789113990238 <- java/io/BufferedWriter.ensureOpen + 0 311403 4789113990245 -> java/io/OutputStreamWriter.write + 0 311403 4789113990252 -> sun/nio/cs/StreamEncoder.write + 0 311403 4789113990258 -> sun/nio/cs/StreamEncoder.ensureOpen + 0 311403 4789113990265 <- sun/nio/cs/StreamEncoder.ensureOpen + 0 311403 4789113990272 -> sun/nio/cs/StreamEncoder.implWrite + 0 311403 4789113990279 -> java/nio/CharBuffer.wrap + 0 311403 4789113990286 -> java/nio/HeapCharBuffer.<init> + 0 311403 4789113990293 -> java/nio/CharBuffer.<init> + 0 311403 4789113990299 -> java/nio/Buffer.<init> + 0 311403 4789113990306 -> java/lang/Object.<init> + 0 311403 4789113990313 <- java/lang/Object.<init> + 0 311403 4789113990320 -> java/nio/Buffer.limit + 0 311403 4789113990327 <- java/nio/Buffer.limit + 0 311403 4789113990333 -> java/nio/Buffer.position + 0 311403 4789113990340 <- java/nio/Buffer.position + 0 311403 4789113990347 <- java/nio/Buffer.<init> + 0 311403 4789113990354 <- java/nio/CharBuffer.<init> + 0 311403 4789113990360 <- java/nio/HeapCharBuffer.<init> + 0 311403 4789113990367 <- java/nio/CharBuffer.wrap + 0 311403 4789113990373 -> java/nio/Buffer.hasRemaining + 0 311403 4789113990381 <- java/nio/Buffer.hasRemaining + 0 311403 4789113990387 -> java/nio/charset/CharsetEncoder.encode + 0 311403 4789113990394 -> sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311403 4789113990401 -> java/nio/CharBuffer.hasArray + 0 311403 4789113990409 <- java/nio/CharBuffer.hasArray + 0 311403 4789113990415 -> java/nio/ByteBuffer.hasArray + 0 311403 4789113990422 <- java/nio/ByteBuffer.hasArray + 0 311403 4789113990428 -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311403 4789113990435 -> java/nio/CharBuffer.array + 0 311403 4789113990442 <- java/nio/CharBuffer.array + 0 311403 4789113990448 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789113990455 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789113990461 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789113990468 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789113990475 -> java/nio/ByteBuffer.array + 0 311403 4789113990482 <- java/nio/ByteBuffer.array + 0 311403 4789113990488 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789113990495 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789113990501 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789113990508 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789113990517 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789113990524 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789113990529 -> java/nio/Buffer.position + 0 311403 4789113990537 <- java/nio/Buffer.position + 0 311403 4789113990542 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789113990550 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789113990555 -> java/nio/Buffer.position + 0 311403 4789113990563 <- java/nio/Buffer.position + 0 311403 4789113990569 <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311403 4789113990576 <- sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311403 4789113990583 -> java/nio/charset/CoderResult.isOverflow + 0 311403 4789113990590 <- java/nio/charset/CoderResult.isOverflow + 0 311403 4789113990596 -> java/nio/charset/CoderResult.isUnderflow + 0 311403 4789113990603 <- java/nio/charset/CoderResult.isUnderflow + 0 311403 4789113990610 <- java/nio/charset/CharsetEncoder.encode + 0 311403 4789113990616 -> java/nio/charset/CoderResult.isUnderflow + 0 311403 4789113990624 <- java/nio/charset/CoderResult.isUnderflow + 0 311403 4789113990630 -> java/nio/Buffer.remaining + 0 311403 4789113990637 <- java/nio/Buffer.remaining + 0 311403 4789113990643 <- sun/nio/cs/StreamEncoder.implWrite + 0 311403 4789113990650 <- sun/nio/cs/StreamEncoder.write + 0 311403 4789113990657 <- java/io/OutputStreamWriter.write + 0 311403 4789113990664 <- java/io/BufferedWriter.flushBuffer + 0 311403 4789113990670 -> java/io/OutputStreamWriter.flushBuffer + 0 311403 4789113990677 -> sun/nio/cs/StreamEncoder.flushBuffer + 0 311403 4789113990683 -> sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311403 4789113990690 -> sun/nio/cs/StreamEncoder.writeBytes + 0 311403 4789113990697 -> java/nio/Buffer.flip + 0 311403 4789113990704 <- java/nio/Buffer.flip + 0 311403 4789113990710 -> java/nio/ByteBuffer.array + 0 311403 4789113990717 <- java/nio/ByteBuffer.array + 0 311403 4789113990723 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789113990730 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789113990736 -> java/io/PrintStream.write + 0 311403 4789113990742 -> java/io/PrintStream.ensureOpen + 0 311403 4789113990749 <- java/io/PrintStream.ensureOpen + 0 311403 4789113990756 -> java/io/BufferedOutputStream.write + 0 311403 4789113990763 -> java/lang/System.arraycopy + 0 311403 4789113990770 <- java/lang/System.arraycopy + 0 311403 4789113990777 <- java/io/BufferedOutputStream.write + 0 311403 4789113990783 -> java/io/BufferedOutputStream.flush + 0 311403 4789113990790 -> java/io/BufferedOutputStream.flushBuffer + 0 311403 4789113990797 -> java/io/FileOutputStream.write + 0 311403 4789113990803 -> java/io/FileOutputStream.writeBytes + 0 311403 4789113990841 <- java/io/FileOutputStream.writeBytes + 0 311403 4789113990848 <- java/io/FileOutputStream.write + 0 311403 4789113990855 <- java/io/BufferedOutputStream.flushBuffer + 0 311403 4789113990862 <- java/io/BufferedOutputStream.flush + 0 311403 4789113990869 <- java/io/PrintStream.write + 0 311403 4789113990875 -> java/nio/Buffer.clear + 0 311403 4789113990882 <- java/nio/Buffer.clear + 0 311403 4789113990888 <- sun/nio/cs/StreamEncoder.writeBytes + 0 311403 4789113990895 <- sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311403 4789113990902 <- sun/nio/cs/StreamEncoder.flushBuffer + 0 311403 4789113990909 <- java/io/OutputStreamWriter.flushBuffer + 0 311403 4789113990915 -> java/lang/String.indexOf + 0 311403 4789113990922 -> java/lang/String.indexOf + 0 311403 4789113990930 <- java/lang/String.indexOf + 0 311403 4789113990936 <- java/lang/String.indexOf + 0 311403 4789113990943 <- java/io/PrintStream.write + 0 311403 4789113990950 <- java/io/PrintStream.print + 0 311403 4789113990956 -> java/io/PrintStream.newLine + 0 311403 4789113990962 -> java/io/PrintStream.ensureOpen + 0 311403 4789113990969 <- java/io/PrintStream.ensureOpen + 0 311403 4789113990975 -> java/io/BufferedWriter.newLine + 0 311403 4789113990981 -> java/io/Writer.write + 0 311403 4789113990988 -> java/io/BufferedWriter.write + 0 311403 4789113990994 -> java/io/BufferedWriter.ensureOpen + 0 311403 4789113991001 <- java/io/BufferedWriter.ensureOpen + 0 311403 4789113991007 -> java/io/BufferedWriter.min + 0 311403 4789113991014 <- java/io/BufferedWriter.min + 0 311403 4789113991020 -> java/lang/String.getChars + 0 311403 4789113991026 -> java/lang/System.arraycopy + 0 311403 4789113991034 <- java/lang/System.arraycopy + 0 311403 4789113991040 <- java/lang/String.getChars + 0 311403 4789113991047 <- java/io/BufferedWriter.write + 0 311403 4789113991054 <- java/io/Writer.write + 0 311403 4789113991060 <- java/io/BufferedWriter.newLine + 0 311403 4789113991066 -> java/io/BufferedWriter.flushBuffer + 0 311403 4789113991072 -> java/io/BufferedWriter.ensureOpen + 0 311403 4789113991080 <- java/io/BufferedWriter.ensureOpen + 0 311403 4789113991086 -> java/io/OutputStreamWriter.write + 0 311403 4789113991092 -> sun/nio/cs/StreamEncoder.write + 0 311403 4789113991098 -> sun/nio/cs/StreamEncoder.ensureOpen + 0 311403 4789113991106 <- sun/nio/cs/StreamEncoder.ensureOpen + 0 311403 4789113991112 -> sun/nio/cs/StreamEncoder.implWrite + 0 311403 4789113991118 -> java/nio/CharBuffer.wrap + 0 311403 4789113991124 -> java/nio/HeapCharBuffer.<init> + 0 311403 4789113991131 -> java/nio/CharBuffer.<init> + 0 311403 4789113991137 -> java/nio/Buffer.<init> + 0 311403 4789113991143 -> java/lang/Object.<init> + 0 311403 4789113991150 <- java/lang/Object.<init> + 0 311403 4789113991156 -> java/nio/Buffer.limit + 0 311403 4789113991163 <- java/nio/Buffer.limit + 0 311403 4789113991169 -> java/nio/Buffer.position + 0 311403 4789113991176 <- java/nio/Buffer.position + 0 311403 4789113991182 <- java/nio/Buffer.<init> + 0 311403 4789113991189 <- java/nio/CharBuffer.<init> + 0 311403 4789113991196 <- java/nio/HeapCharBuffer.<init> + 0 311403 4789113991202 <- java/nio/CharBuffer.wrap + 0 311403 4789113991208 -> java/nio/Buffer.hasRemaining + 0 311403 4789113991215 <- java/nio/Buffer.hasRemaining + 0 311403 4789113991221 -> java/nio/charset/CharsetEncoder.encode + 0 311403 4789113991281 -> sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311403 4789113991287 -> java/nio/CharBuffer.hasArray + 0 311403 4789113991295 <- java/nio/CharBuffer.hasArray + 0 311403 4789113991301 -> java/nio/ByteBuffer.hasArray + 0 311403 4789113991308 <- java/nio/ByteBuffer.hasArray + 0 311403 4789113991314 -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311403 4789113991320 -> java/nio/CharBuffer.array + 0 311403 4789113991328 <- java/nio/CharBuffer.array + 0 311403 4789113991333 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789113991341 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789113991347 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789113991354 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789113991360 -> java/nio/ByteBuffer.array + 0 311403 4789113991367 <- java/nio/ByteBuffer.array + 0 311403 4789113991373 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789113991380 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789113991386 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789113991393 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789113991400 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789113991407 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789113991413 -> java/nio/Buffer.position + 0 311403 4789113991420 <- java/nio/Buffer.position + 0 311403 4789113991426 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789113991433 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789113991439 -> java/nio/Buffer.position + 0 311403 4789113991446 <- java/nio/Buffer.position + 0 311403 4789113991453 <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311403 4789113991459 <- sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311403 4789113991465 -> java/nio/charset/CoderResult.isOverflow + 0 311403 4789113991473 <- java/nio/charset/CoderResult.isOverflow + 0 311403 4789113991479 -> java/nio/charset/CoderResult.isUnderflow + 0 311403 4789113991486 <- java/nio/charset/CoderResult.isUnderflow + 0 311403 4789113991493 <- java/nio/charset/CharsetEncoder.encode + 0 311403 4789113991499 -> java/nio/charset/CoderResult.isUnderflow + 0 311403 4789113991506 <- java/nio/charset/CoderResult.isUnderflow + 0 311403 4789113991512 -> java/nio/Buffer.remaining + 0 311403 4789113991519 <- java/nio/Buffer.remaining + 0 311403 4789113991526 <- sun/nio/cs/StreamEncoder.implWrite + 0 311403 4789113991533 <- sun/nio/cs/StreamEncoder.write + 0 311403 4789113991539 <- java/io/OutputStreamWriter.write + 0 311403 4789113991546 <- java/io/BufferedWriter.flushBuffer + 0 311403 4789113991552 -> java/io/OutputStreamWriter.flushBuffer + 0 311403 4789113991559 -> sun/nio/cs/StreamEncoder.flushBuffer + 0 311403 4789113991565 -> sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311403 4789113991572 -> sun/nio/cs/StreamEncoder.writeBytes + 0 311403 4789113991578 -> java/nio/Buffer.flip + 0 311403 4789113991585 <- java/nio/Buffer.flip + 0 311403 4789113991591 -> java/nio/ByteBuffer.array + 0 311403 4789113991598 <- java/nio/ByteBuffer.array + 0 311403 4789113991604 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789113991611 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789113991617 -> java/io/PrintStream.write + 0 311403 4789113991623 -> java/io/PrintStream.ensureOpen + 0 311403 4789113991630 <- java/io/PrintStream.ensureOpen + 0 311403 4789113991636 -> java/io/BufferedOutputStream.write + 0 311403 4789113991643 -> java/lang/System.arraycopy + 0 311403 4789113991651 <- java/lang/System.arraycopy + 0 311403 4789113991657 <- java/io/BufferedOutputStream.write + 0 311403 4789113991663 -> java/io/BufferedOutputStream.flush + 0 311403 4789113991670 -> java/io/BufferedOutputStream.flushBuffer + 0 311403 4789113991676 -> java/io/FileOutputStream.write + 0 311403 4789113991682 -> java/io/FileOutputStream.writeBytes + 0 311403 4789113991701 <- java/io/FileOutputStream.writeBytes + 0 311403 4789113991708 <- java/io/FileOutputStream.write + 0 311403 4789113991720 <- java/io/BufferedOutputStream.flushBuffer + 0 311403 4789113991728 <- java/io/BufferedOutputStream.flush + 0 311403 4789113991734 <- java/io/PrintStream.write + 0 311403 4789113991740 -> java/nio/Buffer.clear + 0 311403 4789113991747 <- java/nio/Buffer.clear + 0 311403 4789113991754 <- sun/nio/cs/StreamEncoder.writeBytes + 0 311403 4789113991761 <- sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311403 4789113991768 <- sun/nio/cs/StreamEncoder.flushBuffer + 0 311403 4789113991774 <- java/io/OutputStreamWriter.flushBuffer + 0 311403 4789113991780 -> java/io/BufferedOutputStream.flush + 0 311403 4789113991787 -> java/io/BufferedOutputStream.flushBuffer + 0 311403 4789113991794 <- java/io/BufferedOutputStream.flushBuffer + 0 311403 4789113991801 <- java/io/BufferedOutputStream.flush + 0 311403 4789113991808 <- java/io/PrintStream.newLine + 0 311403 4789113991815 <- java/io/PrintStream.println + 0 311403 4789113991821 -> java/lang/Thread.currentThread + 0 311403 4789113991828 <- java/lang/Thread.currentThread + 0 311403 4789113991834 -> java/lang/Thread.sleep + 0 311403 4789115000050 <- java/lang/Thread.sleep + 0 311403 4789115000081 -> Func_abc.func_c + 0 311403 4789115000105 -> java/io/PrintStream.println + 0 311403 4789115000113 -> java/io/PrintStream.print + 0 311403 4789115000120 -> java/io/PrintStream.write + 0 311403 4789115000126 -> java/io/PrintStream.ensureOpen + 0 311403 4789115000134 <- java/io/PrintStream.ensureOpen + 0 311403 4789115000141 -> java/io/Writer.write + 0 311403 4789115000148 -> java/io/BufferedWriter.write + 0 311403 4789115000155 -> java/io/BufferedWriter.ensureOpen + 0 311403 4789115000162 <- java/io/BufferedWriter.ensureOpen + 0 311403 4789115000170 -> java/io/BufferedWriter.min + 0 311403 4789115000177 <- java/io/BufferedWriter.min + 0 311403 4789115000183 -> java/lang/String.getChars + 0 311403 4789115000191 -> java/lang/System.arraycopy + 0 311403 4789115000199 <- java/lang/System.arraycopy + 0 311403 4789115000206 <- java/lang/String.getChars + 0 311403 4789115000213 <- java/io/BufferedWriter.write + 0 311403 4789115000220 <- java/io/Writer.write + 0 311403 4789115000226 -> java/io/BufferedWriter.flushBuffer + 0 311403 4789115000233 -> java/io/BufferedWriter.ensureOpen + 0 311403 4789115000240 <- java/io/BufferedWriter.ensureOpen + 0 311403 4789115000246 -> java/io/OutputStreamWriter.write + 0 311403 4789115000253 -> sun/nio/cs/StreamEncoder.write + 0 311403 4789115000260 -> sun/nio/cs/StreamEncoder.ensureOpen + 0 311403 4789115000267 <- sun/nio/cs/StreamEncoder.ensureOpen + 0 311403 4789115000274 -> sun/nio/cs/StreamEncoder.implWrite + 0 311403 4789115000281 -> java/nio/CharBuffer.wrap + 0 311403 4789115000288 -> java/nio/HeapCharBuffer.<init> + 0 311403 4789115000294 -> java/nio/CharBuffer.<init> + 0 311403 4789115000301 -> java/nio/Buffer.<init> + 0 311403 4789115000307 -> java/lang/Object.<init> + 0 311403 4789115000315 <- java/lang/Object.<init> + 0 311403 4789115000321 -> java/nio/Buffer.limit + 0 311403 4789115000328 <- java/nio/Buffer.limit + 0 311403 4789115000334 -> java/nio/Buffer.position + 0 311403 4789115000342 <- java/nio/Buffer.position + 0 311403 4789115000348 <- java/nio/Buffer.<init> + 0 311403 4789115000355 <- java/nio/CharBuffer.<init> + 0 311403 4789115000362 <- java/nio/HeapCharBuffer.<init> + 0 311403 4789115000368 <- java/nio/CharBuffer.wrap + 0 311403 4789115000374 -> java/nio/Buffer.hasRemaining + 0 311403 4789115000382 <- java/nio/Buffer.hasRemaining + 0 311403 4789115000388 -> java/nio/charset/CharsetEncoder.encode + 0 311403 4789115000396 -> sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311403 4789115000402 -> java/nio/CharBuffer.hasArray + 0 311403 4789115000410 <- java/nio/CharBuffer.hasArray + 0 311403 4789115000416 -> java/nio/ByteBuffer.hasArray + 0 311403 4789115000424 <- java/nio/ByteBuffer.hasArray + 0 311403 4789115000430 -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311403 4789115000436 -> java/nio/CharBuffer.array + 0 311403 4789115000444 <- java/nio/CharBuffer.array + 0 311403 4789115000450 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789115000457 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789115000463 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789115000470 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789115000476 -> java/nio/ByteBuffer.array + 0 311403 4789115000483 <- java/nio/ByteBuffer.array + 0 311403 4789115000489 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789115000496 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789115000502 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789115000509 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789115000518 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789115000525 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789115000531 -> java/nio/Buffer.position + 0 311403 4789115000538 <- java/nio/Buffer.position + 0 311403 4789115000544 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789115000551 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789115000557 -> java/nio/Buffer.position + 0 311403 4789115000564 <- java/nio/Buffer.position + 0 311403 4789115000570 <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311403 4789115000577 <- sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311403 4789115000584 -> java/nio/charset/CoderResult.isOverflow + 0 311403 4789115000591 <- java/nio/charset/CoderResult.isOverflow + 0 311403 4789115000597 -> java/nio/charset/CoderResult.isUnderflow + 0 311403 4789115000605 <- java/nio/charset/CoderResult.isUnderflow + 0 311403 4789115000611 <- java/nio/charset/CharsetEncoder.encode + 0 311403 4789115000617 -> java/nio/charset/CoderResult.isUnderflow + 0 311403 4789115000625 <- java/nio/charset/CoderResult.isUnderflow + 0 311403 4789115000631 -> java/nio/Buffer.remaining + 0 311403 4789115000638 <- java/nio/Buffer.remaining + 0 311403 4789115000645 <- sun/nio/cs/StreamEncoder.implWrite + 0 311403 4789115000652 <- sun/nio/cs/StreamEncoder.write + 0 311403 4789115000658 <- java/io/OutputStreamWriter.write + 0 311403 4789115000665 <- java/io/BufferedWriter.flushBuffer + 0 311403 4789115000671 -> java/io/OutputStreamWriter.flushBuffer + 0 311403 4789115000678 -> sun/nio/cs/StreamEncoder.flushBuffer + 0 311403 4789115000685 -> sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311403 4789115000692 -> sun/nio/cs/StreamEncoder.writeBytes + 0 311403 4789115000698 -> java/nio/Buffer.flip + 0 311403 4789115000705 <- java/nio/Buffer.flip + 0 311403 4789115000711 -> java/nio/ByteBuffer.array + 0 311403 4789115000718 <- java/nio/ByteBuffer.array + 0 311403 4789115000724 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789115000731 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789115000738 -> java/io/PrintStream.write + 0 311403 4789115000744 -> java/io/PrintStream.ensureOpen + 0 311403 4789115000751 <- java/io/PrintStream.ensureOpen + 0 311403 4789115000758 -> java/io/BufferedOutputStream.write + 0 311403 4789115000764 -> java/lang/System.arraycopy + 0 311403 4789115000772 <- java/lang/System.arraycopy + 0 311403 4789115000778 <- java/io/BufferedOutputStream.write + 0 311403 4789115000785 -> java/io/BufferedOutputStream.flush + 0 311403 4789115000791 -> java/io/BufferedOutputStream.flushBuffer + 0 311403 4789115000798 -> java/io/FileOutputStream.write + 0 311403 4789115000805 -> java/io/FileOutputStream.writeBytes + 0 311403 4789115000843 <- java/io/FileOutputStream.writeBytes + 0 311403 4789115000850 <- java/io/FileOutputStream.write + 0 311403 4789115000857 <- java/io/BufferedOutputStream.flushBuffer + 0 311403 4789115000864 <- java/io/BufferedOutputStream.flush + 0 311403 4789115000871 <- java/io/PrintStream.write + 0 311403 4789115000877 -> java/nio/Buffer.clear + 0 311403 4789115000884 <- java/nio/Buffer.clear + 0 311403 4789115000891 <- sun/nio/cs/StreamEncoder.writeBytes + 0 311403 4789115000897 <- sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311403 4789115000904 <- sun/nio/cs/StreamEncoder.flushBuffer + 0 311403 4789115000911 <- java/io/OutputStreamWriter.flushBuffer + 0 311403 4789115000917 -> java/lang/String.indexOf + 0 311403 4789115000924 -> java/lang/String.indexOf + 0 311403 4789115000932 <- java/lang/String.indexOf + 0 311403 4789115000939 <- java/lang/String.indexOf + 0 311403 4789115000945 <- java/io/PrintStream.write + 0 311403 4789115000952 <- java/io/PrintStream.print + 0 311403 4789115000958 -> java/io/PrintStream.newLine + 0 311403 4789115000964 -> java/io/PrintStream.ensureOpen + 0 311403 4789115000971 <- java/io/PrintStream.ensureOpen + 0 311403 4789115000977 -> java/io/BufferedWriter.newLine + 0 311403 4789115000983 -> java/io/Writer.write + 0 311403 4789115000990 -> java/io/BufferedWriter.write + 0 311403 4789115000996 -> java/io/BufferedWriter.ensureOpen + 0 311403 4789115001003 <- java/io/BufferedWriter.ensureOpen + 0 311403 4789115001009 -> java/io/BufferedWriter.min + 0 311403 4789115001016 <- java/io/BufferedWriter.min + 0 311403 4789115001022 -> java/lang/String.getChars + 0 311403 4789115001029 -> java/lang/System.arraycopy + 0 311403 4789115001036 <- java/lang/System.arraycopy + 0 311403 4789115001042 <- java/lang/String.getChars + 0 311403 4789115001049 <- java/io/BufferedWriter.write + 0 311403 4789115001056 <- java/io/Writer.write + 0 311403 4789115001062 <- java/io/BufferedWriter.newLine + 0 311403 4789115001068 -> java/io/BufferedWriter.flushBuffer + 0 311403 4789115001075 -> java/io/BufferedWriter.ensureOpen + 0 311403 4789115001082 <- java/io/BufferedWriter.ensureOpen + 0 311403 4789115001088 -> java/io/OutputStreamWriter.write + 0 311403 4789115001094 -> sun/nio/cs/StreamEncoder.write + 0 311403 4789115001101 -> sun/nio/cs/StreamEncoder.ensureOpen + 0 311403 4789115001108 <- sun/nio/cs/StreamEncoder.ensureOpen + 0 311403 4789115001114 -> sun/nio/cs/StreamEncoder.implWrite + 0 311403 4789115001120 -> java/nio/CharBuffer.wrap + 0 311403 4789115001127 -> java/nio/HeapCharBuffer.<init> + 0 311403 4789115001133 -> java/nio/CharBuffer.<init> + 0 311403 4789115001139 -> java/nio/Buffer.<init> + 0 311403 4789115001145 -> java/lang/Object.<init> + 0 311403 4789115001152 <- java/lang/Object.<init> + 0 311403 4789115001158 -> java/nio/Buffer.limit + 0 311403 4789115001165 <- java/nio/Buffer.limit + 0 311403 4789115001171 -> java/nio/Buffer.position + 0 311403 4789115001178 <- java/nio/Buffer.position + 0 311403 4789115001185 <- java/nio/Buffer.<init> + 0 311403 4789115001191 <- java/nio/CharBuffer.<init> + 0 311403 4789115001198 <- java/nio/HeapCharBuffer.<init> + 0 311403 4789115001204 <- java/nio/CharBuffer.wrap + 0 311403 4789115001210 -> java/nio/Buffer.hasRemaining + 0 311403 4789115001217 <- java/nio/Buffer.hasRemaining + 0 311403 4789115001223 -> java/nio/charset/CharsetEncoder.encode + 0 311403 4789115001230 -> sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311403 4789115001236 -> java/nio/CharBuffer.hasArray + 0 311403 4789115001243 <- java/nio/CharBuffer.hasArray + 0 311403 4789115001249 -> java/nio/ByteBuffer.hasArray + 0 311403 4789115001256 <- java/nio/ByteBuffer.hasArray + 0 311403 4789115001262 -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311403 4789115001269 -> java/nio/CharBuffer.array + 0 311403 4789115001276 <- java/nio/CharBuffer.array + 0 311403 4789115001281 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789115001288 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789115001294 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789115001302 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789115001308 -> java/nio/ByteBuffer.array + 0 311403 4789115001315 <- java/nio/ByteBuffer.array + 0 311403 4789115001320 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789115001328 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789115001334 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789115001341 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789115001347 -> java/nio/CharBuffer.arrayOffset + 0 311403 4789115001354 <- java/nio/CharBuffer.arrayOffset + 0 311403 4789115001360 -> java/nio/Buffer.position + 0 311403 4789115001367 <- java/nio/Buffer.position + 0 311403 4789115001373 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789115001380 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789115001386 -> java/nio/Buffer.position + 0 311403 4789115001393 <- java/nio/Buffer.position + 0 311403 4789115001400 <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311403 4789115001407 <- sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311403 4789115001413 -> java/nio/charset/CoderResult.isOverflow + 0 311403 4789115001420 <- java/nio/charset/CoderResult.isOverflow + 0 311403 4789115001426 -> java/nio/charset/CoderResult.isUnderflow + 0 311403 4789115001433 <- java/nio/charset/CoderResult.isUnderflow + 0 311403 4789115001440 <- java/nio/charset/CharsetEncoder.encode + 0 311403 4789115001446 -> java/nio/charset/CoderResult.isUnderflow + 0 311403 4789115001453 <- java/nio/charset/CoderResult.isUnderflow + 0 311403 4789115001459 -> java/nio/Buffer.remaining + 0 311403 4789115001466 <- java/nio/Buffer.remaining + 0 311403 4789115001473 <- sun/nio/cs/StreamEncoder.implWrite + 0 311403 4789115001480 <- sun/nio/cs/StreamEncoder.write + 0 311403 4789115001487 <- java/io/OutputStreamWriter.write + 0 311403 4789115001493 <- java/io/BufferedWriter.flushBuffer + 0 311403 4789115001499 -> java/io/OutputStreamWriter.flushBuffer + 0 311403 4789115001506 -> sun/nio/cs/StreamEncoder.flushBuffer + 0 311403 4789115001512 -> sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311403 4789115001519 -> sun/nio/cs/StreamEncoder.writeBytes + 0 311403 4789115001525 -> java/nio/Buffer.flip + 0 311403 4789115001532 <- java/nio/Buffer.flip + 0 311403 4789115001538 -> java/nio/ByteBuffer.array + 0 311403 4789115001545 <- java/nio/ByteBuffer.array + 0 311403 4789115001551 -> java/nio/ByteBuffer.arrayOffset + 0 311403 4789115001558 <- java/nio/ByteBuffer.arrayOffset + 0 311403 4789115001564 -> java/io/PrintStream.write + 0 311403 4789115001570 -> java/io/PrintStream.ensureOpen + 0 311403 4789115001577 <- java/io/PrintStream.ensureOpen + 0 311403 4789115001583 -> java/io/BufferedOutputStream.write + 0 311403 4789115001590 -> java/lang/System.arraycopy + 0 311403 4789115001597 <- java/lang/System.arraycopy + 0 311403 4789115001604 <- java/io/BufferedOutputStream.write + 0 311403 4789115001610 -> java/io/BufferedOutputStream.flush + 0 311403 4789115001621 -> java/io/BufferedOutputStream.flushBuffer + 0 311403 4789115001628 -> java/io/FileOutputStream.write + 0 311403 4789115001634 -> java/io/FileOutputStream.writeBytes + 0 311403 4789115001652 <- java/io/FileOutputStream.writeBytes + 0 311403 4789115001706 <- java/io/FileOutputStream.write + 0 311403 4789115001713 <- java/io/BufferedOutputStream.flushBuffer + 0 311403 4789115001720 <- java/io/BufferedOutputStream.flush + 0 311403 4789115001727 <- java/io/PrintStream.write + 0 311403 4789115001733 -> java/nio/Buffer.clear + 0 311403 4789115001740 <- java/nio/Buffer.clear + 0 311403 4789115001747 <- sun/nio/cs/StreamEncoder.writeBytes + 0 311403 4789115001753 <- sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311403 4789115001760 <- sun/nio/cs/StreamEncoder.flushBuffer + 0 311403 4789115001767 <- java/io/OutputStreamWriter.flushBuffer + 0 311403 4789115001773 -> java/io/BufferedOutputStream.flush + 0 311403 4789115001779 -> java/io/BufferedOutputStream.flushBuffer + 0 311403 4789115001787 <- java/io/BufferedOutputStream.flushBuffer + 0 311403 4789115001794 <- java/io/BufferedOutputStream.flush + 0 311403 4789115001801 <- java/io/PrintStream.newLine + 0 311403 4789115001807 <- java/io/PrintStream.println + 0 311403 4789115001813 -> java/lang/Thread.currentThread + 0 311403 4789115001821 <- java/lang/Thread.currentThread + 0 311403 4789115001827 -> java/lang/Thread.sleep + 0 311403 4789116010060 <- java/lang/Thread.sleep + 0 311403 4789116010073 <- Func_abc.func_c + 0 311403 4789116010080 <- Func_abc.func_b + 0 311403 4789116010086 <- Func_abc.func_a + 0 311403 4789116010093 <- Func_abc.main + 0 311403 4789116010118 -> java/lang/Thread.exit + 0 311403 4789116010145 -> java/lang/ThreadGroup.remove + 0 311403 4789116010160 -> java/lang/System.arraycopy + 0 311403 4789116010169 <- java/lang/System.arraycopy + 0 311403 4789116010178 -> java/lang/Object.notifyAll + 0 311403 4789116010192 <- java/lang/Object.notifyAll + 0 311403 4789116010199 <- java/lang/ThreadGroup.remove + 0 311403 4789116010212 <- java/lang/Thread.exit + 0 311403 4789116010380 -> java/lang/Thread.<init> + 0 311403 4789116010388 -> java/lang/Object.<init> + 0 311403 4789116010395 <- java/lang/Object.<init> + 0 311403 4789116010402 -> java/lang/Object.<init> + 0 311403 4789116010409 <- java/lang/Object.<init> + 0 311403 4789116010415 -> java/lang/Thread.init + 0 311403 4789116010422 -> java/lang/Thread.currentThread + 0 311403 4789116010430 <- java/lang/Thread.currentThread + 0 311403 4789116010436 -> java/lang/System.getSecurityManager + 0 311403 4789116010444 <- java/lang/System.getSecurityManager + 0 311403 4789116010450 -> java/lang/ThreadGroup.checkAccess + 0 311403 4789116010457 -> java/lang/System.getSecurityManager + 0 311403 4789116010464 <- java/lang/System.getSecurityManager + 0 311403 4789116010471 <- java/lang/ThreadGroup.checkAccess + 0 311403 4789116010477 -> java/lang/ThreadGroup.addUnstarted + 0 311403 4789116010484 <- java/lang/ThreadGroup.addUnstarted + 0 311403 4789116010491 -> java/lang/String.toCharArray + 0 311403 4789116010499 -> java/lang/String.getChars + 0 311403 4789116010506 -> java/lang/System.arraycopy + 0 311403 4789116010514 <- java/lang/System.arraycopy + 0 311403 4789116010521 <- java/lang/String.getChars + 0 311403 4789116010527 <- java/lang/String.toCharArray + 0 311403 4789116010534 -> java/lang/Thread.getContextClassLoader + 0 311403 4789116010541 <- java/lang/Thread.getContextClassLoader + 0 311403 4789116010548 -> java/security/AccessController.getContext + 0 311403 4789116010554 -> java/security/AccessController.getStackAccessControlContext + 0 311403 4789116010569 <- java/security/AccessController.getStackAccessControlContext + 0 311403 4789116010576 -> java/security/AccessControlContext.optimize + 0 311403 4789116010583 -> java/security/AccessController.getInheritedAccessControlContext + 0 311403 4789116010591 <- java/security/AccessController.getInheritedAccessControlContext + 0 311403 4789116010599 <- java/security/AccessControlContext.optimize + 0 311403 4789116010606 <- java/security/AccessController.getContext + 0 311403 4789116010612 -> java/lang/Thread.setPriority + 0 311403 4789116010618 -> java/lang/Thread.checkAccess + 0 311403 4789116010625 -> java/lang/System.getSecurityManager + 0 311403 4789116010632 <- java/lang/System.getSecurityManager + 0 311403 4789116010639 <- java/lang/Thread.checkAccess + 0 311403 4789116010645 -> java/lang/Thread.setPriority0 + 0 311403 4789116010664 <- java/lang/Thread.setPriority0 + 0 311403 4789116010671 <- java/lang/Thread.setPriority + 0 311403 4789116010678 -> java/lang/Thread.nextThreadID + 0 311403 4789116010686 <- java/lang/Thread.nextThreadID + 0 311403 4789116010693 <- java/lang/Thread.init + 0 311403 4789116010700 <- java/lang/Thread.<init> + 0 311403 4789116010707 -> java/lang/ThreadGroup.add + 0 311403 4789116010716 <- java/lang/ThreadGroup.add + 0 311403 4789116010729 -> java/lang/Shutdown.shutdown + 0 311403 4789116010740 -> java/lang/Shutdown.sequence + 0 311403 4789116010748 -> java/lang/Shutdown.runHooks + 0 311403 4789116010758 -> java/util/AbstractList.iterator + 0 311403 4789116011022 -> java/util/AbstractList$Itr.<init> + 0 311403 4789116011032 -> java/util/AbstractList$Itr.<init> + 0 311403 4789116011042 -> java/lang/Object.<init> + 0 311403 4789116011050 <- java/lang/Object.<init> + 0 311403 4789116011062 <- java/util/AbstractList$Itr.<init> + 0 311403 4789116011069 <- java/util/AbstractList$Itr.<init> + 0 311403 4789116011076 <- java/util/AbstractList.iterator + 0 311403 4789116011087 -> java/util/AbstractList$Itr.hasNext + 0 311403 4789116011099 <- java/util/AbstractList$Itr.hasNext + 0 311403 4789116011107 -> java/util/AbstractList$Itr.next + 0 311403 4789116011115 -> java/util/AbstractList$Itr.checkForComodification + 0 311403 4789116011123 <- java/util/AbstractList$Itr.checkForComodification + 0 311403 4789116011131 -> java/util/ArrayList.get + 0 311403 4789116011138 -> java/util/ArrayList.RangeCheck + 0 311403 4789116011145 <- java/util/ArrayList.RangeCheck + 0 311403 4789116011152 <- java/util/ArrayList.get + 0 311403 4789116011159 <- java/util/AbstractList$Itr.next + 0 311403 4789116011170 -> java/io/Console$1$1.run + 0 311403 4789116011180 -> java/io/Console.access$600 + 0 311403 4789116011189 <- java/io/Console.access$600 + 0 311403 4789116011196 <- java/io/Console$1$1.run + 0 311403 4789116011202 -> java/util/AbstractList$Itr.hasNext + 0 311403 4789116011209 <- java/util/AbstractList$Itr.hasNext + 0 311403 4789116011215 -> java/util/AbstractList$Itr.next + 0 311403 4789116011221 -> java/util/AbstractList$Itr.checkForComodification + 0 311403 4789116011229 <- java/util/AbstractList$Itr.checkForComodification + 0 311403 4789116011235 -> java/util/ArrayList.get + 0 311403 4789116011241 -> java/util/ArrayList.RangeCheck + 0 311403 4789116011248 <- java/util/ArrayList.RangeCheck + 0 311403 4789116011255 <- java/util/ArrayList.get + 0 311403 4789116011262 <- java/util/AbstractList$Itr.next + 0 311403 4789116011268 -> java/lang/ApplicationShutdownHooks.run + 0 311403 4789116011280 -> java/util/IdentityHashMap.keySet + 0 311403 4789116011442 -> java/util/IdentityHashMap$KeySet.<init> + 0 311403 4789116011452 -> java/util/IdentityHashMap$KeySet.<init> + 0 311403 4789116011462 -> java/util/AbstractSet.<init> + 0 311403 4789116011469 -> java/util/AbstractCollection.<init> + 0 311403 4789116011475 -> java/lang/Object.<init> + 0 311403 4789116011483 <- java/lang/Object.<init> + 0 311403 4789116011490 <- java/util/AbstractCollection.<init> + 0 311403 4789116011497 <- java/util/AbstractSet.<init> + 0 311403 4789116011503 <- java/util/IdentityHashMap$KeySet.<init> + 0 311403 4789116011510 <- java/util/IdentityHashMap$KeySet.<init> + 0 311403 4789116011528 <- java/util/IdentityHashMap.keySet + 0 311403 4789116011538 -> java/util/IdentityHashMap$KeySet.iterator + 0 311403 4789116011727 -> java/util/IdentityHashMap$KeyIterator.<init> + 0 311403 4789116011737 -> java/util/IdentityHashMap$KeyIterator.<init> + 0 311403 4789116011748 -> java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311403 4789116011757 -> java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311403 4789116011766 -> java/lang/Object.<init> + 0 311403 4789116011774 <- java/lang/Object.<init> + 0 311403 4789116011784 -> java/util/IdentityHashMap.access$000 + 0 311403 4789116011793 <- java/util/IdentityHashMap.access$000 + 0 311403 4789116011803 -> java/util/IdentityHashMap.access$200 + 0 311403 4789116011811 <- java/util/IdentityHashMap.access$200 + 0 311403 4789116011821 <- java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311403 4789116011828 <- java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311403 4789116011835 <- java/util/IdentityHashMap$KeyIterator.<init> + 0 311403 4789116011842 <- java/util/IdentityHashMap$KeyIterator.<init> + 0 311403 4789116011849 <- java/util/IdentityHashMap$KeySet.iterator + 0 311403 4789116011858 -> java/util/IdentityHashMap$IdentityHashMapIterator.hasNext + 0 311403 4789116011866 <- java/util/IdentityHashMap$IdentityHashMapIterator.hasNext + 0 311403 4789116011873 -> java/util/IdentityHashMap$KeySet.iterator + 0 311403 4789116011879 -> java/util/IdentityHashMap$KeyIterator.<init> + 0 311403 4789116011886 -> java/util/IdentityHashMap$KeyIterator.<init> + 0 311403 4789116011892 -> java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311403 4789116011899 -> java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311403 4789116011905 -> java/lang/Object.<init> + 0 311403 4789116011912 <- java/lang/Object.<init> + 0 311403 4789116011919 <- java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311403 4789116011926 <- java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311403 4789116011934 <- java/util/IdentityHashMap$KeyIterator.<init> + 0 311403 4789116011940 <- java/util/IdentityHashMap$KeyIterator.<init> + 0 311403 4789116011947 <- java/util/IdentityHashMap$KeySet.iterator + 0 311403 4789116011953 -> java/util/IdentityHashMap$IdentityHashMapIterator.hasNext + 0 311403 4789116011961 <- java/util/IdentityHashMap$IdentityHashMapIterator.hasNext + 0 311403 4789116011968 <- java/lang/ApplicationShutdownHooks.run + 0 311403 4789116011974 -> java/util/AbstractList$Itr.hasNext + 0 311403 4789116011982 <- java/util/AbstractList$Itr.hasNext + 0 311403 4789116011988 -> java/util/AbstractList$Itr.next + 0 311403 4789116011994 -> java/util/AbstractList$Itr.checkForComodification + 0 311403 4789116012002 <- java/util/AbstractList$Itr.checkForComodification + 0 311403 4789116012008 -> java/util/ArrayList.get + 0 311403 4789116012014 -> java/util/ArrayList.RangeCheck + 0 311403 4789116012021 <- java/util/ArrayList.RangeCheck + 0 311403 4789116012028 <- java/util/ArrayList.get + 0 311403 4789116012035 <- java/util/AbstractList$Itr.next + 0 311403 4789116012041 -> java/io/File$1.run + 0 311403 4789116012187 -> java/io/DeleteOnExitHook.<clinit> + 0 311403 4789116012333 -> java/util/LinkedHashSet.<init> + 0 311403 4789116012343 -> java/util/HashSet.<init> + 0 311403 4789116012350 -> java/util/AbstractSet.<init> + 0 311403 4789116012356 -> java/util/AbstractCollection.<init> + 0 311403 4789116012362 -> java/lang/Object.<init> + 0 311403 4789116012370 <- java/lang/Object.<init> + 0 311403 4789116012377 <- java/util/AbstractCollection.<init> + 0 311403 4789116012384 <- java/util/AbstractSet.<init> + 0 311403 4789116012394 -> java/util/LinkedHashMap.<init> + 0 311403 4789116012404 -> java/util/HashMap.<init> + 0 311403 4789116012410 -> java/util/AbstractMap.<init> + 0 311403 4789116012417 -> java/lang/Object.<init> + 0 311403 4789116012424 <- java/lang/Object.<init> + 0 311403 4789116012431 <- java/util/AbstractMap.<init> + 0 311403 4789116012438 -> java/lang/Float.isNaN + 0 311403 4789116012445 <- java/lang/Float.isNaN + 0 311403 4789116012456 -> java/util/LinkedHashMap.init + 0 311403 4789116012463 -> java/util/LinkedHashMap$Entry.<init> + 0 311403 4789116012469 -> java/util/HashMap$Entry.<init> + 0 311403 4789116012476 -> java/lang/Object.<init> + 0 311403 4789116012482 <- java/lang/Object.<init> + 0 311403 4789116012489 <- java/util/HashMap$Entry.<init> + 0 311403 4789116012496 <- java/util/LinkedHashMap$Entry.<init> + 0 311403 4789116012503 <- java/util/LinkedHashMap.init + 0 311403 4789116012510 <- java/util/HashMap.<init> + 0 311403 4789116012516 <- java/util/LinkedHashMap.<init> + 0 311403 4789116012523 <- java/util/HashSet.<init> + 0 311403 4789116012529 <- java/util/LinkedHashSet.<init> + 0 311403 4789116012538 <- java/io/DeleteOnExitHook.<clinit> + 0 311403 4789116012547 -> java/io/DeleteOnExitHook.hook + 0 311403 4789116012556 -> java/io/DeleteOnExitHook.<init> + 0 311403 4789116012565 -> java/lang/Object.<init> + 0 311403 4789116012572 <- java/lang/Object.<init> + 0 311403 4789116012579 <- java/io/DeleteOnExitHook.<init> + 0 311403 4789116012586 <- java/io/DeleteOnExitHook.hook + 0 311403 4789116012594 -> java/io/DeleteOnExitHook.run + 0 311403 4789116012605 -> java/util/ArrayList.<init> + 0 311403 4789116012612 -> java/util/AbstractList.<init> + 0 311403 4789116012618 -> java/util/AbstractCollection.<init> + 0 311403 4789116012624 -> java/lang/Object.<init> + 0 311403 4789116012631 <- java/lang/Object.<init> + 0 311403 4789116012638 <- java/util/AbstractCollection.<init> + 0 311403 4789116012645 <- java/util/AbstractList.<init> + 0 311403 4789116012654 -> java/util/AbstractCollection.toArray + 0 311403 4789116012664 -> java/util/HashSet.size + 0 311403 4789116012674 <- java/util/HashSet.size + 0 311403 4789116012682 -> java/util/HashSet.iterator + 0 311403 4789116012691 -> java/util/HashMap.keySet + 0 311403 4789116012782 -> java/util/HashMap$KeySet.<init> + 0 311403 4789116012791 -> java/util/HashMap$KeySet.<init> + 0 311403 4789116012801 -> java/util/AbstractSet.<init> + 0 311403 4789116012807 -> java/util/AbstractCollection.<init> + 0 311403 4789116012814 -> java/lang/Object.<init> + 0 311403 4789116012821 <- java/lang/Object.<init> + 0 311403 4789116012828 <- java/util/AbstractCollection.<init> + 0 311403 4789116012835 <- java/util/AbstractSet.<init> + 0 311403 4789116012841 <- java/util/HashMap$KeySet.<init> + 0 311403 4789116012848 <- java/util/HashMap$KeySet.<init> + 0 311403 4789116012855 <- java/util/HashMap.keySet + 0 311403 4789116012864 -> java/util/HashMap$KeySet.iterator + 0 311403 4789116012874 -> java/util/LinkedHashMap.newKeyIterator + 0 311403 4789116013056 -> java/util/LinkedHashMap$KeyIterator.<init> + 0 311403 4789116013066 -> java/util/LinkedHashMap$KeyIterator.<init> + 0 311403 4789116013076 -> java/util/LinkedHashMap$LinkedHashIterator.<init> + 0 311403 4789116013085 -> java/util/LinkedHashMap$LinkedHashIterator.<init> + 0 311403 4789116013095 -> java/lang/Object.<init> + 0 311403 4789116013102 <- java/lang/Object.<init> + 0 311403 4789116013117 <- java/util/LinkedHashMap$LinkedHashIterator.<init> + 0 311403 4789116013125 <- java/util/LinkedHashMap$LinkedHashIterator.<init> + 0 311403 4789116013132 <- java/util/LinkedHashMap$KeyIterator.<init> + 0 311403 4789116013138 <- java/util/LinkedHashMap$KeyIterator.<init> + 0 311403 4789116013145 <- java/util/LinkedHashMap.newKeyIterator + 0 311403 4789116013152 <- java/util/HashMap$KeySet.iterator + 0 311403 4789116013159 <- java/util/HashSet.iterator + 0 311403 4789116013168 -> java/util/LinkedHashMap$LinkedHashIterator.hasNext + 0 311403 4789116013176 <- java/util/LinkedHashMap$LinkedHashIterator.hasNext + 0 311403 4789116013183 <- java/util/AbstractCollection.toArray + 0 311403 4789116013190 -> java/lang/Object.getClass + 0 311403 4789116013198 <- java/lang/Object.getClass + 0 311403 4789116013206 <- java/util/ArrayList.<init> + 0 311403 4789116013216 -> java/util/Collections.reverse + 0 311403 4789116013228 <- java/util/Collections.reverse + 0 311403 4789116013236 -> java/util/AbstractList.iterator + 0 311403 4789116013243 -> java/util/AbstractList$Itr.<init> + 0 311403 4789116013250 -> java/util/AbstractList$Itr.<init> + 0 311403 4789116013256 -> java/lang/Object.<init> + 0 311403 4789116013263 <- java/lang/Object.<init> + 0 311403 4789116013270 <- java/util/AbstractList$Itr.<init> + 0 311403 4789116013276 <- java/util/AbstractList$Itr.<init> + 0 311403 4789116013283 <- java/util/AbstractList.iterator + 0 311403 4789116013292 -> java/util/AbstractList$Itr.hasNext + 0 311403 4789116013299 <- java/util/AbstractList$Itr.hasNext + 0 311403 4789116013306 <- java/io/DeleteOnExitHook.run + 0 311403 4789116013313 <- java/io/File$1.run + 0 311403 4789116013319 -> java/util/AbstractList$Itr.hasNext + 0 311403 4789116013326 <- java/util/AbstractList$Itr.hasNext + 0 311403 4789116013333 <- java/lang/Shutdown.runHooks + 0 311403 4789116013342 <- java/lang/Shutdown.sequence + 0 311403 4789116013349 <- java/lang/Shutdown.shutdown + +The fourth column is indented by 2 spaces to show when a new method begins. +This shows what is calling what. + +The TIME(us) column shows time from boot in microseconds. + +If the output looks strange, check the CPU "C" column - if it changes, +then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for +details and suggested workarounds. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + +I truncated the above output by 22800 lines so that it would fit. To make +sense of the output, try searching for "Func_abc" or using grep. The +lines were, + + 0 311403 4789112982182 -> Func_abc.main + 0 311403 4789112982193 -> Func_abc.func_a + 0 311403 4789113990080 -> Func_abc.func_b + 0 311403 4789115000081 -> Func_abc.func_c + 0 311403 4789116010073 <- Func_abc.func_c + 0 311403 4789116010080 <- Func_abc.func_b + 0 311403 4789116010086 <- Func_abc.func_a + 0 311403 4789116010093 <- Func_abc.main + +You can also use the j_classflow.d script to only trace one class. + +If you see "drops" warnings, see the Notes/ALLjava_notes.txt file for details. + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_flowtime_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_flowtime_example.txt new file mode 100644 index 000000000000..22c6a612f873 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_flowtime_example.txt @@ -0,0 +1,1287 @@ +The following are examples of j_flowtime.d. + +This is a simple script to trace the timing and the not-so-simple flow of +Java methods and classes. Here it traces the example program, +Code/Java/func_abc + +# j_flowtime.d + C PID/TID TIME(us) DELTA(us) -- CLASS.METHOD + 0 311481/2 4790256870903 2 -> java/lang/Object.<clinit> + 0 311481/2 4790256870950 46 -> java/lang/Object.registerNatives + 0 311481/2 4790256871090 140 <- java/lang/Object.registerNatives + 0 311481/2 4790256871109 18 <- java/lang/Object.<clinit> + 0 311481/2 4790256871121 12 -> java/lang/String.<clinit> + 0 311481/2 4790256871518 397 -> java/lang/String$CaseInsensitiveComparator.<init> + 0 311481/2 4790256871531 12 -> java/lang/String$CaseInsensitiveComparator.<init> + 0 311481/2 4790256871541 10 -> java/lang/Object.<init> + 0 311481/2 4790256871549 7 <- java/lang/Object.<init> + 0 311481/2 4790256871558 8 <- java/lang/String$CaseInsensitiveComparator.<init> + 0 311481/2 4790256871566 7 <- java/lang/String$CaseInsensitiveComparator.<init> + 0 311481/2 4790256871575 9 <- java/lang/String.<clinit> + 0 311481/2 4790256871644 68 -> java/lang/System.<clinit> + 0 311481/2 4790256871656 11 -> java/lang/System.registerNatives + 0 311481/2 4790256871675 18 <- java/lang/System.registerNatives + 0 311481/2 4790256871686 10 -> java/lang/System.nullInputStream + 0 311481/2 4790256871695 9 -> java/lang/System.currentTimeMillis + 0 311481/2 4790256871705 10 <- java/lang/System.currentTimeMillis + 0 311481/2 4790256871714 8 <- java/lang/System.nullInputStream + 0 311481/2 4790256871726 11 -> java/lang/System.nullPrintStream + 0 311481/2 4790256871734 7 -> java/lang/System.currentTimeMillis + 0 311481/2 4790256871741 7 <- java/lang/System.currentTimeMillis + 0 311481/2 4790256871749 7 <- java/lang/System.nullPrintStream + 0 311481/2 4790256871758 9 -> java/lang/System.nullPrintStream + 0 311481/2 4790256871766 7 -> java/lang/System.currentTimeMillis + 0 311481/2 4790256871773 7 <- java/lang/System.currentTimeMillis + 0 311481/2 4790256871781 7 <- java/lang/System.nullPrintStream + 0 311481/2 4790256871792 10 <- java/lang/System.<clinit> + 0 311481/2 4790256871870 78 -> java/lang/ThreadGroup.<init> + 0 311481/2 4790256871881 10 -> java/lang/Object.<init> + 0 311481/2 4790256871889 7 <- java/lang/Object.<init> + 0 311481/2 4790256871906 17 <- java/lang/ThreadGroup.<init> + 0 311481/2 4790256871918 11 -> java/lang/ThreadGroup.<init> + 0 311481/2 4790256871926 7 -> java/lang/Object.<init> + 0 311481/2 4790256871933 7 <- java/lang/Object.<init> + 0 311481/2 4790256871945 12 -> java/lang/ThreadGroup.checkAccess + 0 311481/2 4790256871955 10 -> java/lang/System.getSecurityManager + 0 311481/2 4790256871964 8 <- java/lang/System.getSecurityManager + 0 311481/2 4790256871972 8 <- java/lang/ThreadGroup.checkAccess + 0 311481/2 4790256871984 12 -> java/lang/ThreadGroup.add + 0 311481/2 4790256872006 21 <- java/lang/ThreadGroup.add + 0 311481/2 4790256872014 8 <- java/lang/ThreadGroup.<init> + 0 311481/2 4790256872201 187 -> java/lang/Thread.<clinit> + 0 311481/2 4790256872213 12 -> java/lang/Thread.registerNatives + 0 311481/2 4790256872239 25 <- java/lang/Thread.registerNatives + 0 311481/2 4790256872606 367 -> java/lang/RuntimePermission.<init> + 0 311481/2 4790256872618 11 -> java/security/BasicPermission.<init> + 0 311481/2 4790256872628 9 -> java/security/Permission.<init> + 0 311481/2 4790256872637 9 -> java/lang/Object.<init> + 0 311481/2 4790256872645 7 <- java/lang/Object.<init> + 0 311481/2 4790256872656 10 <- java/security/Permission.<init> + 0 311481/2 4790256872666 10 -> java/security/BasicPermission.init + 0 311481/2 4790256872677 11 -> java/lang/String.length + 0 311481/2 4790256872686 8 <- java/lang/String.length + 0 311481/2 4790256872697 11 -> java/lang/String.charAt + 0 311481/2 4790256872707 10 <- java/lang/String.charAt + 0 311481/2 4790256872720 12 -> java/lang/String.equals + 0 311481/2 4790256872728 8 <- java/lang/String.equals + 0 311481/2 4790256872737 9 <- java/security/BasicPermission.init + 0 311481/2 4790256872745 7 <- java/security/BasicPermission.<init> + 0 311481/2 4790256872753 7 <- java/lang/RuntimePermission.<init> + 0 311481/2 4790256873195 442 -> sun/misc/SoftCache.<init> + 0 311481/2 4790256873208 12 -> java/util/AbstractMap.<init> + 0 311481/2 4790256873218 9 -> java/lang/Object.<init> + 0 311481/2 4790256873226 7 <- java/lang/Object.<init> + 0 311481/2 4790256873238 11 <- java/util/AbstractMap.<init> + 0 311481/2 4790256873371 133 -> java/lang/ref/ReferenceQueue.<clinit> + 0 311481/2 4790256873443 72 -> java/lang/ref/ReferenceQueue$Null.<init> + 0 311481/2 4790256873454 10 -> java/lang/ref/ReferenceQueue$Null.<init> + 0 311481/2 4790256873464 9 -> java/lang/ref/ReferenceQueue.<init> + 0 311481/2 4790256873474 9 -> java/lang/Object.<init> + 0 311481/2 4790256873481 7 <- java/lang/Object.<init> + 0 311481/2 4790256873542 60 -> java/lang/ref/ReferenceQueue$Lock.<init> + 0 311481/2 4790256873553 10 -> java/lang/ref/ReferenceQueue$Lock.<init> + 0 311481/2 4790256873562 9 -> java/lang/Object.<init> + 0 311481/2 4790256873570 7 <- java/lang/Object.<init> + 0 311481/2 4790256873578 7 <- java/lang/ref/ReferenceQueue$Lock.<init> + 0 311481/2 4790256873585 7 <- java/lang/ref/ReferenceQueue$Lock.<init> + 0 311481/2 4790256873597 11 <- java/lang/ref/ReferenceQueue.<init> + 0 311481/2 4790256873604 7 <- java/lang/ref/ReferenceQueue$Null.<init> + 0 311481/2 4790256873612 7 <- java/lang/ref/ReferenceQueue$Null.<init> + 0 311481/2 4790256873622 9 -> java/lang/ref/ReferenceQueue$Null.<init> + 0 311481/2 4790256873629 7 -> java/lang/ref/ReferenceQueue$Null.<init> + 0 311481/2 4790256873636 7 -> java/lang/ref/ReferenceQueue.<init> + 0 311481/2 4790256873644 7 -> java/lang/Object.<init> + 0 311481/2 4790256873651 6 <- java/lang/Object.<init> + 0 311481/2 4790256873659 7 -> java/lang/ref/ReferenceQueue$Lock.<init> +[... 22800 lines truncated ...] + 0 311481/2 4790257387424 7 <- java/util/HashMap.indexFor + 0 311481/2 4790257387432 8 <- java/util/HashMap.put + 0 311481/2 4790257387440 7 <- java/util/HashSet.add + 0 311481/2 4790257387447 7 <- java/lang/ClassLoader.checkPackageAccess + 0 311481/2 4790257387473 26 -> java/lang/reflect/Method.getModifiers + 0 311481/2 4790257387486 12 <- java/lang/reflect/Method.getModifiers + 0 311481/2 4790257387500 14 -> Func_abc.main + 0 311481/2 4790257387512 11 -> Func_abc.func_a + 0 311481/2 4790257387522 9 -> java/lang/ClassLoader.checkPackageAccess + 0 311481/2 4790257387530 7 -> java/lang/System.getSecurityManager + 0 311481/2 4790257387537 7 <- java/lang/System.getSecurityManager + 0 311481/2 4790257387545 8 -> java/util/HashSet.add + 0 311481/2 4790257387552 7 -> java/util/HashMap.put + 0 311481/2 4790257387559 7 -> java/lang/Object.hashCode + 0 311481/2 4790257387567 7 <- java/lang/Object.hashCode + 0 311481/2 4790257387574 7 -> java/util/HashMap.hash + 0 311481/2 4790257387581 7 <- java/util/HashMap.hash + 0 311481/2 4790257387589 7 -> java/util/HashMap.indexFor + 0 311481/2 4790257387596 7 <- java/util/HashMap.indexFor + 0 311481/2 4790257387604 8 <- java/util/HashMap.put + 0 311481/2 4790257387611 7 <- java/util/HashSet.add + 0 311481/2 4790257387619 7 <- java/lang/ClassLoader.checkPackageAccess + 0 311481/2 4790257387683 64 -> java/lang/ClassLoader.loadClassInternal + 0 311481/2 4790257387691 8 -> java/lang/ClassLoader.loadClass + 0 311481/2 4790257387699 7 -> sun/misc/Launcher$AppClassLoader.loadClass + 0 311481/2 4790257387706 7 -> java/lang/String.lastIndexOf + 0 311481/2 4790257387713 7 -> java/lang/String.lastIndexOf + 0 311481/2 4790257387722 8 <- java/lang/String.lastIndexOf + 0 311481/2 4790257387729 7 <- java/lang/String.lastIndexOf + 0 311481/2 4790257387737 7 -> java/lang/System.getSecurityManager + 0 311481/2 4790257387760 22 <- java/lang/System.getSecurityManager + 0 311481/2 4790257387768 7 -> java/lang/ClassLoader.loadClass + 0 311481/2 4790257387775 7 -> java/lang/ClassLoader.findLoadedClass + 0 311481/2 4790257387782 7 -> java/lang/ClassLoader.check + 0 311481/2 4790257387789 7 <- java/lang/ClassLoader.check + 0 311481/2 4790257387797 7 -> java/lang/ClassLoader.checkName + 0 311481/2 4790257387805 7 -> java/lang/String.indexOf + 0 311481/2 4790257387812 7 -> java/lang/String.indexOf + 0 311481/2 4790257387820 8 <- java/lang/String.indexOf + 0 311481/2 4790257387828 7 <- java/lang/String.indexOf + 0 311481/2 4790257387835 7 -> sun/misc/VM.allowArraySyntax + 0 311481/2 4790257387843 7 <- sun/misc/VM.allowArraySyntax + 0 311481/2 4790257387850 7 -> java/lang/String.charAt + 0 311481/2 4790257387857 7 <- java/lang/String.charAt + 0 311481/2 4790257387865 7 <- java/lang/ClassLoader.checkName + 0 311481/2 4790257387873 7 -> java/lang/ClassLoader.findLoadedClass0 + 0 311481/2 4790257387883 9 <- java/lang/ClassLoader.findLoadedClass0 + 0 311481/2 4790257387890 7 <- java/lang/ClassLoader.findLoadedClass + 0 311481/2 4790257387899 8 -> java/lang/ClassLoader.loadClass + 0 311481/2 4790257387906 7 -> java/lang/ClassLoader.findLoadedClass + 0 311481/2 4790257387913 7 -> java/lang/ClassLoader.check + 0 311481/2 4790257387920 7 <- java/lang/ClassLoader.check + 0 311481/2 4790257387928 7 -> java/lang/ClassLoader.checkName + 0 311481/2 4790257387935 7 -> java/lang/String.indexOf + 0 311481/2 4790257387942 7 -> java/lang/String.indexOf + 0 311481/2 4790257387951 8 <- java/lang/String.indexOf + 0 311481/2 4790257387958 7 <- java/lang/String.indexOf + 0 311481/2 4790257387966 7 -> sun/misc/VM.allowArraySyntax + 0 311481/2 4790257387973 7 <- sun/misc/VM.allowArraySyntax + 0 311481/2 4790257387981 7 -> java/lang/String.charAt + 0 311481/2 4790257387988 7 <- java/lang/String.charAt + 0 311481/2 4790257387995 7 <- java/lang/ClassLoader.checkName + 0 311481/2 4790257388003 7 -> java/lang/ClassLoader.findLoadedClass0 + 0 311481/2 4790257388012 8 <- java/lang/ClassLoader.findLoadedClass0 + 0 311481/2 4790257388020 7 <- java/lang/ClassLoader.findLoadedClass + 0 311481/2 4790257388028 7 -> java/lang/ClassLoader.findBootstrapClass0 + 0 311481/2 4790257388035 7 -> java/lang/ClassLoader.check + 0 311481/2 4790257388042 7 <- java/lang/ClassLoader.check + 0 311481/2 4790257388050 7 -> java/lang/ClassLoader.checkName + 0 311481/2 4790257388057 7 -> java/lang/String.indexOf + 0 311481/2 4790257388064 7 -> java/lang/String.indexOf + 0 311481/2 4790257388072 8 <- java/lang/String.indexOf + 0 311481/2 4790257388080 7 <- java/lang/String.indexOf + 0 311481/2 4790257388087 7 -> sun/misc/VM.allowArraySyntax + 0 311481/2 4790257388094 7 <- sun/misc/VM.allowArraySyntax + 0 311481/2 4790257388102 7 -> java/lang/String.charAt + 0 311481/2 4790257388109 7 <- java/lang/String.charAt + 0 311481/2 4790257388117 7 <- java/lang/ClassLoader.checkName + 0 311481/2 4790257388124 7 -> java/lang/ClassLoader.findBootstrapClass + 0 311481/2 4790257388134 9 <- java/lang/ClassLoader.findBootstrapClass + 0 311481/2 4790257388142 8 <- java/lang/ClassLoader.findBootstrapClass0 + 0 311481/2 4790257388150 8 <- java/lang/ClassLoader.loadClass + 0 311481/2 4790257388158 7 <- java/lang/ClassLoader.loadClass + 0 311481/2 4790257388166 7 <- sun/misc/Launcher$AppClassLoader.loadClass + 0 311481/2 4790257388173 7 <- java/lang/ClassLoader.loadClass + 0 311481/2 4790257388181 7 <- java/lang/ClassLoader.loadClassInternal + 0 311481/2 4790257388193 11 -> java/lang/ClassLoader.checkPackageAccess + 0 311481/2 4790257388200 7 -> java/lang/System.getSecurityManager + 0 311481/2 4790257388207 7 <- java/lang/System.getSecurityManager + 0 311481/2 4790257388215 7 -> java/util/HashSet.add + 0 311481/2 4790257388223 7 -> java/util/HashMap.put + 0 311481/2 4790257388230 7 -> java/lang/Object.hashCode + 0 311481/2 4790257388237 7 <- java/lang/Object.hashCode + 0 311481/2 4790257388245 7 -> java/util/HashMap.hash + 0 311481/2 4790257388252 7 <- java/util/HashMap.hash + 0 311481/2 4790257388260 7 -> java/util/HashMap.indexFor + 0 311481/2 4790257388267 7 <- java/util/HashMap.indexFor + 0 311481/2 4790257388275 7 <- java/util/HashMap.put + 0 311481/2 4790257388282 7 <- java/util/HashSet.add + 0 311481/2 4790257388290 7 <- java/lang/ClassLoader.checkPackageAccess + 0 311481/2 4790257388305 15 -> java/io/PrintStream.println + 0 311481/2 4790257388316 11 -> java/io/PrintStream.print + 0 311481/2 4790257388326 9 -> java/io/PrintStream.write + 0 311481/2 4790257388335 9 -> java/io/PrintStream.ensureOpen + 0 311481/2 4790257388345 10 <- java/io/PrintStream.ensureOpen + 0 311481/2 4790257388358 12 -> java/io/Writer.write + 0 311481/2 4790257388371 13 -> java/io/BufferedWriter.write + 0 311481/2 4790257388382 10 -> java/io/BufferedWriter.ensureOpen + 0 311481/2 4790257388389 7 <- java/io/BufferedWriter.ensureOpen + 0 311481/2 4790257388399 10 -> java/io/BufferedWriter.min + 0 311481/2 4790257388407 7 <- java/io/BufferedWriter.min + 0 311481/2 4790257388417 10 -> java/lang/String.getChars + 0 311481/2 4790257388425 8 -> java/lang/System.arraycopy + 0 311481/2 4790257388434 8 <- java/lang/System.arraycopy + 0 311481/2 4790257388442 7 <- java/lang/String.getChars + 0 311481/2 4790257388450 8 <- java/io/BufferedWriter.write + 0 311481/2 4790257388457 7 <- java/io/Writer.write + 0 311481/2 4790257388467 10 -> java/io/BufferedWriter.flushBuffer + 0 311481/2 4790257388475 7 -> java/io/BufferedWriter.ensureOpen + 0 311481/2 4790257388482 7 <- java/io/BufferedWriter.ensureOpen + 0 311481/2 4790257388493 10 -> java/io/OutputStreamWriter.write + 0 311481/2 4790257388504 11 -> sun/nio/cs/StreamEncoder.write + 0 311481/2 4790257388515 10 -> sun/nio/cs/StreamEncoder.ensureOpen + 0 311481/2 4790257388522 7 <- sun/nio/cs/StreamEncoder.ensureOpen + 0 311481/2 4790257388533 10 -> sun/nio/cs/StreamEncoder.implWrite + 0 311481/2 4790257388544 11 -> java/nio/CharBuffer.wrap + 0 311481/2 4790257388552 8 -> java/nio/HeapCharBuffer.<init> + 0 311481/2 4790257388560 7 -> java/nio/CharBuffer.<init> + 0 311481/2 4790257388567 7 -> java/nio/Buffer.<init> + 0 311481/2 4790257388574 7 -> java/lang/Object.<init> + 0 311481/2 4790257388582 7 <- java/lang/Object.<init> + 0 311481/2 4790257388590 8 -> java/nio/Buffer.limit + 0 311481/2 4790257388598 7 <- java/nio/Buffer.limit + 0 311481/2 4790257388605 7 -> java/nio/Buffer.position + 0 311481/2 4790257388612 7 <- java/nio/Buffer.position + 0 311481/2 4790257388620 7 <- java/nio/Buffer.<init> + 0 311481/2 4790257388628 7 <- java/nio/CharBuffer.<init> + 0 311481/2 4790257388635 7 <- java/nio/HeapCharBuffer.<init> + 0 311481/2 4790257388643 7 <- java/nio/CharBuffer.wrap + 0 311481/2 4790257388654 10 -> java/nio/Buffer.hasRemaining + 0 311481/2 4790257388661 7 <- java/nio/Buffer.hasRemaining + 0 311481/2 4790257388673 11 -> java/nio/charset/CharsetEncoder.encode + 0 311481/2 4790257388684 10 -> sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311481/2 4790257388695 10 -> java/nio/CharBuffer.hasArray + 0 311481/2 4790257388702 7 <- java/nio/CharBuffer.hasArray + 0 311481/2 4790257388714 11 -> java/nio/ByteBuffer.hasArray + 0 311481/2 4790257388722 7 <- java/nio/ByteBuffer.hasArray + 0 311481/2 4790257388732 10 -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311481/2 4790257388742 9 -> java/nio/CharBuffer.array + 0 311481/2 4790257388749 7 <- java/nio/CharBuffer.array + 0 311481/2 4790257388759 9 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790257388766 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790257388776 9 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790257388784 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790257388797 13 -> java/nio/ByteBuffer.array + 0 311481/2 4790257388804 7 <- java/nio/ByteBuffer.array + 0 311481/2 4790257388814 9 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257388821 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257388831 9 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257388838 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257388853 14 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790257388861 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790257388871 9 -> java/nio/Buffer.position + 0 311481/2 4790257388878 7 <- java/nio/Buffer.position + 0 311481/2 4790257388886 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257388893 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257388903 9 -> java/nio/Buffer.position + 0 311481/2 4790257388910 7 <- java/nio/Buffer.position + 0 311481/2 4790257388918 7 <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311481/2 4790257388925 7 <- sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311481/2 4790257388936 10 -> java/nio/charset/CoderResult.isOverflow + 0 311481/2 4790257388943 7 <- java/nio/charset/CoderResult.isOverflow + 0 311481/2 4790257388953 9 -> java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790257388961 7 <- java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790257388969 7 <- java/nio/charset/CharsetEncoder.encode + 0 311481/2 4790257388979 10 -> java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790257388987 7 <- java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790257388998 11 -> java/nio/Buffer.remaining + 0 311481/2 4790257389005 7 <- java/nio/Buffer.remaining + 0 311481/2 4790257389013 7 <- sun/nio/cs/StreamEncoder.implWrite + 0 311481/2 4790257389020 7 <- sun/nio/cs/StreamEncoder.write + 0 311481/2 4790257389028 7 <- java/io/OutputStreamWriter.write + 0 311481/2 4790257389113 85 <- java/io/BufferedWriter.flushBuffer + 0 311481/2 4790257389125 11 -> java/io/OutputStreamWriter.flushBuffer + 0 311481/2 4790257389135 9 -> sun/nio/cs/StreamEncoder.flushBuffer + 0 311481/2 4790257389146 11 -> sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311481/2 4790257389158 11 -> sun/nio/cs/StreamEncoder.writeBytes + 0 311481/2 4790257389167 9 -> java/nio/Buffer.flip + 0 311481/2 4790257389174 7 <- java/nio/Buffer.flip + 0 311481/2 4790257389186 11 -> java/nio/ByteBuffer.array + 0 311481/2 4790257389193 7 <- java/nio/ByteBuffer.array + 0 311481/2 4790257389203 9 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257389210 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257389222 11 -> java/io/PrintStream.write + 0 311481/2 4790257389230 7 -> java/io/PrintStream.ensureOpen + 0 311481/2 4790257389237 7 <- java/io/PrintStream.ensureOpen + 0 311481/2 4790257389248 11 -> java/io/BufferedOutputStream.write + 0 311481/2 4790257389261 12 -> java/lang/System.arraycopy + 0 311481/2 4790257389268 7 <- java/lang/System.arraycopy + 0 311481/2 4790257389276 7 <- java/io/BufferedOutputStream.write + 0 311481/2 4790257389286 9 -> java/io/BufferedOutputStream.flush + 0 311481/2 4790257389295 9 -> java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790257389307 11 -> java/io/FileOutputStream.write + 0 311481/2 4790257389317 10 -> java/io/FileOutputStream.writeBytes + 0 311481/2 4790257389479 162 <- java/io/FileOutputStream.writeBytes + 0 311481/2 4790257389489 9 <- java/io/FileOutputStream.write + 0 311481/2 4790257389497 7 <- java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790257389509 12 <- java/io/BufferedOutputStream.flush + 0 311481/2 4790257389517 8 <- java/io/PrintStream.write + 0 311481/2 4790257389527 10 -> java/nio/Buffer.clear + 0 311481/2 4790257389536 8 <- java/nio/Buffer.clear + 0 311481/2 4790257389543 7 <- sun/nio/cs/StreamEncoder.writeBytes + 0 311481/2 4790257389551 7 <- sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311481/2 4790257389559 7 <- sun/nio/cs/StreamEncoder.flushBuffer + 0 311481/2 4790257389566 7 <- java/io/OutputStreamWriter.flushBuffer + 0 311481/2 4790257389579 12 -> java/lang/String.indexOf + 0 311481/2 4790257389586 7 -> java/lang/String.indexOf + 0 311481/2 4790257389595 8 <- java/lang/String.indexOf + 0 311481/2 4790257389602 7 <- java/lang/String.indexOf + 0 311481/2 4790257389610 7 <- java/io/PrintStream.write + 0 311481/2 4790257389617 7 <- java/io/PrintStream.print + 0 311481/2 4790257389627 9 -> java/io/PrintStream.newLine + 0 311481/2 4790257389635 7 -> java/io/PrintStream.ensureOpen + 0 311481/2 4790257389642 7 <- java/io/PrintStream.ensureOpen + 0 311481/2 4790257389651 9 -> java/io/BufferedWriter.newLine + 0 311481/2 4790257389661 9 -> java/io/Writer.write + 0 311481/2 4790257389668 7 -> java/io/BufferedWriter.write + 0 311481/2 4790257389713 44 -> java/io/BufferedWriter.ensureOpen + 0 311481/2 4790257389721 7 <- java/io/BufferedWriter.ensureOpen + 0 311481/2 4790257389729 8 -> java/io/BufferedWriter.min + 0 311481/2 4790257389737 7 <- java/io/BufferedWriter.min + 0 311481/2 4790257389744 7 -> java/lang/String.getChars + 0 311481/2 4790257389752 7 -> java/lang/System.arraycopy + 0 311481/2 4790257389760 7 <- java/lang/System.arraycopy + 0 311481/2 4790257389767 7 <- java/lang/String.getChars + 0 311481/2 4790257389775 7 <- java/io/BufferedWriter.write + 0 311481/2 4790257389783 7 <- java/io/Writer.write + 0 311481/2 4790257389790 7 <- java/io/BufferedWriter.newLine + 0 311481/2 4790257389798 7 -> java/io/BufferedWriter.flushBuffer + 0 311481/2 4790257389805 7 -> java/io/BufferedWriter.ensureOpen + 0 311481/2 4790257389812 7 <- java/io/BufferedWriter.ensureOpen + 0 311481/2 4790257389820 7 -> java/io/OutputStreamWriter.write + 0 311481/2 4790257389828 7 -> sun/nio/cs/StreamEncoder.write + 0 311481/2 4790257389835 7 -> sun/nio/cs/StreamEncoder.ensureOpen + 0 311481/2 4790257389842 7 <- sun/nio/cs/StreamEncoder.ensureOpen + 0 311481/2 4790257389850 7 -> sun/nio/cs/StreamEncoder.implWrite + 0 311481/2 4790257389857 7 -> java/nio/CharBuffer.wrap + 0 311481/2 4790257389865 7 -> java/nio/HeapCharBuffer.<init> + 0 311481/2 4790257389872 7 -> java/nio/CharBuffer.<init> + 0 311481/2 4790257389879 7 -> java/nio/Buffer.<init> + 0 311481/2 4790257389886 6 -> java/lang/Object.<init> + 0 311481/2 4790257389893 7 <- java/lang/Object.<init> + 0 311481/2 4790257389901 7 -> java/nio/Buffer.limit + 0 311481/2 4790257389908 7 <- java/nio/Buffer.limit + 0 311481/2 4790257389916 7 -> java/nio/Buffer.position + 0 311481/2 4790257389923 7 <- java/nio/Buffer.position + 0 311481/2 4790257389930 7 <- java/nio/Buffer.<init> + 0 311481/2 4790257389938 7 <- java/nio/CharBuffer.<init> + 0 311481/2 4790257389946 7 <- java/nio/HeapCharBuffer.<init> + 0 311481/2 4790257389953 7 <- java/nio/CharBuffer.wrap + 0 311481/2 4790257389961 7 -> java/nio/Buffer.hasRemaining + 0 311481/2 4790257389968 7 <- java/nio/Buffer.hasRemaining + 0 311481/2 4790257389976 7 -> java/nio/charset/CharsetEncoder.encode + 0 311481/2 4790257389984 7 -> sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311481/2 4790257389991 7 -> java/nio/CharBuffer.hasArray + 0 311481/2 4790257389998 7 <- java/nio/CharBuffer.hasArray + 0 311481/2 4790257390760 761 -> java/nio/ByteBuffer.hasArray + 0 311481/2 4790257390772 11 <- java/nio/ByteBuffer.hasArray + 0 311481/2 4790257390782 10 -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311481/2 4790257390790 7 -> java/nio/CharBuffer.array + 0 311481/2 4790257390797 7 <- java/nio/CharBuffer.array + 0 311481/2 4790257390805 7 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790257390812 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790257390820 8 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790257390828 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790257390836 8 -> java/nio/ByteBuffer.array + 0 311481/2 4790257390844 7 <- java/nio/ByteBuffer.array + 0 311481/2 4790257390851 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257390859 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257390866 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257390874 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257390883 8 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790257390890 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790257390898 8 -> java/nio/Buffer.position + 0 311481/2 4790257390906 7 <- java/nio/Buffer.position + 0 311481/2 4790257390913 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257390921 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257390928 7 -> java/nio/Buffer.position + 0 311481/2 4790257390936 7 <- java/nio/Buffer.position + 0 311481/2 4790257390943 7 <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311481/2 4790257390951 7 <- sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311481/2 4790257390959 8 -> java/nio/charset/CoderResult.isOverflow + 0 311481/2 4790257390967 7 <- java/nio/charset/CoderResult.isOverflow + 0 311481/2 4790257390974 7 -> java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790257390982 7 <- java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790257390990 7 <- java/nio/charset/CharsetEncoder.encode + 0 311481/2 4790257390998 7 -> java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790257391005 7 <- java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790257391013 8 -> java/nio/Buffer.remaining + 0 311481/2 4790257391020 7 <- java/nio/Buffer.remaining + 0 311481/2 4790257391028 7 <- sun/nio/cs/StreamEncoder.implWrite + 0 311481/2 4790257391036 7 <- sun/nio/cs/StreamEncoder.write + 0 311481/2 4790257391044 7 <- java/io/OutputStreamWriter.write + 0 311481/2 4790257391052 8 <- java/io/BufferedWriter.flushBuffer + 0 311481/2 4790257391060 7 -> java/io/OutputStreamWriter.flushBuffer + 0 311481/2 4790257391067 7 -> sun/nio/cs/StreamEncoder.flushBuffer + 0 311481/2 4790257391075 7 -> sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311481/2 4790257391082 7 -> sun/nio/cs/StreamEncoder.writeBytes + 0 311481/2 4790257391090 7 -> java/nio/Buffer.flip + 0 311481/2 4790257391097 7 <- java/nio/Buffer.flip + 0 311481/2 4790257391105 8 -> java/nio/ByteBuffer.array + 0 311481/2 4790257391112 7 <- java/nio/ByteBuffer.array + 0 311481/2 4790257391120 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257391127 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790257391135 8 -> java/io/PrintStream.write + 0 311481/2 4790257391142 7 -> java/io/PrintStream.ensureOpen + 0 311481/2 4790257391150 7 <- java/io/PrintStream.ensureOpen + 0 311481/2 4790257391158 8 -> java/io/BufferedOutputStream.write + 0 311481/2 4790257391166 7 -> java/lang/System.arraycopy + 0 311481/2 4790257391174 8 <- java/lang/System.arraycopy + 0 311481/2 4790257391182 7 <- java/io/BufferedOutputStream.write + 0 311481/2 4790257391190 7 -> java/io/BufferedOutputStream.flush + 0 311481/2 4790257391197 7 -> java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790257391205 7 -> java/io/FileOutputStream.write + 0 311481/2 4790257391212 7 -> java/io/FileOutputStream.writeBytes + 0 311481/2 4790257391280 67 <- java/io/FileOutputStream.writeBytes + 0 311481/2 4790257391289 9 <- java/io/FileOutputStream.write + 0 311481/2 4790257391297 7 <- java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790257391305 7 <- java/io/BufferedOutputStream.flush + 0 311481/2 4790257391313 7 <- java/io/PrintStream.write + 0 311481/2 4790257391321 7 -> java/nio/Buffer.clear + 0 311481/2 4790257391329 7 <- java/nio/Buffer.clear + 0 311481/2 4790257391336 7 <- sun/nio/cs/StreamEncoder.writeBytes + 0 311481/2 4790257391344 7 <- sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311481/2 4790257391352 7 <- sun/nio/cs/StreamEncoder.flushBuffer + 0 311481/2 4790257391359 7 <- java/io/OutputStreamWriter.flushBuffer + 0 311481/2 4790257391368 8 -> java/io/BufferedOutputStream.flush + 0 311481/2 4790257391375 7 -> java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790257391383 7 <- java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790257391391 8 <- java/io/BufferedOutputStream.flush + 0 311481/2 4790257391398 7 <- java/io/PrintStream.newLine + 0 311481/2 4790257391406 7 <- java/io/PrintStream.println + 0 311481/2 4790257391439 32 -> java/lang/ClassLoader.loadClassInternal + 0 311481/2 4790257391447 8 -> java/lang/ClassLoader.loadClass + 0 311481/2 4790257391455 7 -> sun/misc/Launcher$AppClassLoader.loadClass + 0 311481/2 4790257391463 7 -> java/lang/String.lastIndexOf + 0 311481/2 4790257391471 7 -> java/lang/String.lastIndexOf + 0 311481/2 4790257391479 8 <- java/lang/String.lastIndexOf + 0 311481/2 4790257391487 7 <- java/lang/String.lastIndexOf + 0 311481/2 4790257391495 8 -> java/lang/System.getSecurityManager + 0 311481/2 4790257391503 7 <- java/lang/System.getSecurityManager + 0 311481/2 4790257391511 8 -> java/lang/ClassLoader.loadClass + 0 311481/2 4790257391518 7 -> java/lang/ClassLoader.findLoadedClass + 0 311481/2 4790257391526 7 -> java/lang/ClassLoader.check + 0 311481/2 4790257391533 7 <- java/lang/ClassLoader.check + 0 311481/2 4790257391541 7 -> java/lang/ClassLoader.checkName + 0 311481/2 4790257391549 7 -> java/lang/String.indexOf + 0 311481/2 4790257391556 7 -> java/lang/String.indexOf + 0 311481/2 4790257391564 8 <- java/lang/String.indexOf + 0 311481/2 4790257391572 7 <- java/lang/String.indexOf + 0 311481/2 4790257391580 8 -> sun/misc/VM.allowArraySyntax + 0 311481/2 4790257391587 7 <- sun/misc/VM.allowArraySyntax + 0 311481/2 4790257391595 7 -> java/lang/String.charAt + 0 311481/2 4790257391603 7 <- java/lang/String.charAt + 0 311481/2 4790257391610 7 <- java/lang/ClassLoader.checkName + 0 311481/2 4790257391618 7 -> java/lang/ClassLoader.findLoadedClass0 + 0 311481/2 4790257391633 14 <- java/lang/ClassLoader.findLoadedClass0 + 0 311481/2 4790257391641 8 <- java/lang/ClassLoader.findLoadedClass + 0 311481/2 4790257391651 9 -> java/lang/ClassLoader.loadClass + 0 311481/2 4790257391658 7 -> java/lang/ClassLoader.findLoadedClass + 0 311481/2 4790257391665 7 -> java/lang/ClassLoader.check + 0 311481/2 4790257391672 7 <- java/lang/ClassLoader.check + 0 311481/2 4790257391680 7 -> java/lang/ClassLoader.checkName + 0 311481/2 4790257391688 7 -> java/lang/String.indexOf + 0 311481/2 4790257391695 7 -> java/lang/String.indexOf + 0 311481/2 4790257391703 8 <- java/lang/String.indexOf + 0 311481/2 4790257391711 7 <- java/lang/String.indexOf + 0 311481/2 4790257391718 7 -> sun/misc/VM.allowArraySyntax + 0 311481/2 4790257391725 7 <- sun/misc/VM.allowArraySyntax + 0 311481/2 4790257391733 7 -> java/lang/String.charAt + 0 311481/2 4790257391740 7 <- java/lang/String.charAt + 0 311481/2 4790257391748 7 <- java/lang/ClassLoader.checkName + 0 311481/2 4790257391755 7 -> java/lang/ClassLoader.findLoadedClass0 + 0 311481/2 4790257391765 9 <- java/lang/ClassLoader.findLoadedClass0 + 0 311481/2 4790257391773 8 <- java/lang/ClassLoader.findLoadedClass + 0 311481/2 4790257391781 8 -> java/lang/ClassLoader.findBootstrapClass0 + 0 311481/2 4790257391788 7 -> java/lang/ClassLoader.check + 0 311481/2 4790257391795 7 <- java/lang/ClassLoader.check + 0 311481/2 4790257391803 7 -> java/lang/ClassLoader.checkName + 0 311481/2 4790257391810 7 -> java/lang/String.indexOf + 0 311481/2 4790257391817 7 -> java/lang/String.indexOf + 0 311481/2 4790257391825 7 <- java/lang/String.indexOf + 0 311481/2 4790257391833 7 <- java/lang/String.indexOf + 0 311481/2 4790257391840 7 -> sun/misc/VM.allowArraySyntax + 0 311481/2 4790257391848 7 <- sun/misc/VM.allowArraySyntax + 0 311481/2 4790257391855 7 -> java/lang/String.charAt + 0 311481/2 4790257391862 7 <- java/lang/String.charAt + 0 311481/2 4790257391870 7 <- java/lang/ClassLoader.checkName + 0 311481/2 4790257391877 7 -> java/lang/ClassLoader.findBootstrapClass + 0 311481/2 4790257391891 13 <- java/lang/ClassLoader.findBootstrapClass + 0 311481/2 4790257391899 7 <- java/lang/ClassLoader.findBootstrapClass0 + 0 311481/2 4790257391907 8 <- java/lang/ClassLoader.loadClass + 0 311481/2 4790257391915 7 <- java/lang/ClassLoader.loadClass + 0 311481/2 4790257391922 7 <- sun/misc/Launcher$AppClassLoader.loadClass + 0 311481/2 4790257391930 7 <- java/lang/ClassLoader.loadClass + 0 311481/2 4790257391938 7 <- java/lang/ClassLoader.loadClassInternal + 0 311481/2 4790257391954 16 -> java/lang/ClassLoader.checkPackageAccess + 0 311481/2 4790257391962 7 -> java/lang/System.getSecurityManager + 0 311481/2 4790257391969 7 <- java/lang/System.getSecurityManager + 0 311481/2 4790257391978 8 -> java/util/HashSet.add + 0 311481/2 4790257391986 8 -> java/util/HashMap.put + 0 311481/2 4790257391994 7 -> java/lang/Object.hashCode + 0 311481/2 4790257392001 7 <- java/lang/Object.hashCode + 0 311481/2 4790257392009 8 -> java/util/HashMap.hash + 0 311481/2 4790257392017 7 <- java/util/HashMap.hash + 0 311481/2 4790257392025 7 -> java/util/HashMap.indexFor + 0 311481/2 4790257392032 7 <- java/util/HashMap.indexFor + 0 311481/2 4790257392040 8 <- java/util/HashMap.put + 0 311481/2 4790257392048 7 <- java/util/HashSet.add + 0 311481/2 4790257392055 7 <- java/lang/ClassLoader.checkPackageAccess + 0 311481/2 4790257392076 20 -> java/lang/Thread.currentThread + 0 311481/2 4790257392084 8 <- java/lang/Thread.currentThread + 0 311481/2 4790257392094 10 -> java/lang/Thread.sleep + 0 311481/2 4790258400253 1008158 <- java/lang/Thread.sleep + 0 311481/2 4790258400299 45 -> Func_abc.func_b + 0 311481/2 4790258400329 30 -> java/io/PrintStream.println + 0 311481/2 4790258400338 8 -> java/io/PrintStream.print + 0 311481/2 4790258400345 7 -> java/io/PrintStream.write + 0 311481/2 4790258400353 7 -> java/io/PrintStream.ensureOpen + 0 311481/2 4790258400361 7 <- java/io/PrintStream.ensureOpen + 0 311481/2 4790258400369 8 -> java/io/Writer.write + 0 311481/2 4790258400378 8 -> java/io/BufferedWriter.write + 0 311481/2 4790258400386 7 -> java/io/BufferedWriter.ensureOpen + 0 311481/2 4790258400393 7 <- java/io/BufferedWriter.ensureOpen + 0 311481/2 4790258400402 9 -> java/io/BufferedWriter.min + 0 311481/2 4790258400410 7 <- java/io/BufferedWriter.min + 0 311481/2 4790258400418 8 -> java/lang/String.getChars + 0 311481/2 4790258400426 8 -> java/lang/System.arraycopy + 0 311481/2 4790258400435 8 <- java/lang/System.arraycopy + 0 311481/2 4790258400442 7 <- java/lang/String.getChars + 0 311481/2 4790258400451 8 <- java/io/BufferedWriter.write + 0 311481/2 4790258400458 7 <- java/io/Writer.write + 0 311481/2 4790258400466 7 -> java/io/BufferedWriter.flushBuffer + 0 311481/2 4790258400474 7 -> java/io/BufferedWriter.ensureOpen + 0 311481/2 4790258400481 7 <- java/io/BufferedWriter.ensureOpen + 0 311481/2 4790258400489 8 -> java/io/OutputStreamWriter.write + 0 311481/2 4790258400497 7 -> sun/nio/cs/StreamEncoder.write + 0 311481/2 4790258400504 7 -> sun/nio/cs/StreamEncoder.ensureOpen + 0 311481/2 4790258400511 7 <- sun/nio/cs/StreamEncoder.ensureOpen + 0 311481/2 4790258400520 8 -> sun/nio/cs/StreamEncoder.implWrite + 0 311481/2 4790258400528 7 -> java/nio/CharBuffer.wrap + 0 311481/2 4790258400536 7 -> java/nio/HeapCharBuffer.<init> + 0 311481/2 4790258400544 7 -> java/nio/CharBuffer.<init> + 0 311481/2 4790258400551 7 -> java/nio/Buffer.<init> + 0 311481/2 4790258400559 7 -> java/lang/Object.<init> + 0 311481/2 4790258400566 7 <- java/lang/Object.<init> + 0 311481/2 4790258400574 8 -> java/nio/Buffer.limit + 0 311481/2 4790258400582 7 <- java/nio/Buffer.limit + 0 311481/2 4790258400590 7 -> java/nio/Buffer.position + 0 311481/2 4790258400597 7 <- java/nio/Buffer.position + 0 311481/2 4790258400604 7 <- java/nio/Buffer.<init> + 0 311481/2 4790258400612 7 <- java/nio/CharBuffer.<init> + 0 311481/2 4790258400620 7 <- java/nio/HeapCharBuffer.<init> + 0 311481/2 4790258400627 7 <- java/nio/CharBuffer.wrap + 0 311481/2 4790258400635 8 -> java/nio/Buffer.hasRemaining + 0 311481/2 4790258400643 7 <- java/nio/Buffer.hasRemaining + 0 311481/2 4790258400651 8 -> java/nio/charset/CharsetEncoder.encode + 0 311481/2 4790258400659 8 -> sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311481/2 4790258400667 7 -> java/nio/CharBuffer.hasArray + 0 311481/2 4790258400675 7 <- java/nio/CharBuffer.hasArray + 0 311481/2 4790258400683 8 -> java/nio/ByteBuffer.hasArray + 0 311481/2 4790258400690 7 <- java/nio/ByteBuffer.hasArray + 0 311481/2 4790258400698 7 -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311481/2 4790258400706 7 -> java/nio/CharBuffer.array + 0 311481/2 4790258400713 7 <- java/nio/CharBuffer.array + 0 311481/2 4790258400721 7 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790258400728 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790258400736 7 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790258400743 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790258400752 8 -> java/nio/ByteBuffer.array + 0 311481/2 4790258400759 7 <- java/nio/ByteBuffer.array + 0 311481/2 4790258400766 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258400774 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258400781 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258400789 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258400799 9 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790258400806 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790258400813 7 -> java/nio/Buffer.position + 0 311481/2 4790258400821 7 <- java/nio/Buffer.position + 0 311481/2 4790258400828 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258400836 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258400843 7 -> java/nio/Buffer.position + 0 311481/2 4790258400850 7 <- java/nio/Buffer.position + 0 311481/2 4790258400858 7 <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311481/2 4790258400866 7 <- sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311481/2 4790258400874 8 -> java/nio/charset/CoderResult.isOverflow + 0 311481/2 4790258400881 7 <- java/nio/charset/CoderResult.isOverflow + 0 311481/2 4790258400889 7 -> java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790258400896 7 <- java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790258400904 7 <- java/nio/charset/CharsetEncoder.encode + 0 311481/2 4790258400912 7 -> java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790258400919 7 <- java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790258400927 8 -> java/nio/Buffer.remaining + 0 311481/2 4790258400934 7 <- java/nio/Buffer.remaining + 0 311481/2 4790258400942 7 <- sun/nio/cs/StreamEncoder.implWrite + 0 311481/2 4790258400950 7 <- sun/nio/cs/StreamEncoder.write + 0 311481/2 4790258400957 7 <- java/io/OutputStreamWriter.write + 0 311481/2 4790258400965 7 <- java/io/BufferedWriter.flushBuffer + 0 311481/2 4790258400973 8 -> java/io/OutputStreamWriter.flushBuffer + 0 311481/2 4790258400981 7 -> sun/nio/cs/StreamEncoder.flushBuffer + 0 311481/2 4790258400988 7 -> sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311481/2 4790258400996 7 -> sun/nio/cs/StreamEncoder.writeBytes + 0 311481/2 4790258401004 7 -> java/nio/Buffer.flip + 0 311481/2 4790258401011 6 <- java/nio/Buffer.flip + 0 311481/2 4790258401019 8 -> java/nio/ByteBuffer.array + 0 311481/2 4790258401026 7 <- java/nio/ByteBuffer.array + 0 311481/2 4790258401033 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258401041 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258401049 7 -> java/io/PrintStream.write + 0 311481/2 4790258401056 7 -> java/io/PrintStream.ensureOpen + 0 311481/2 4790258401063 7 <- java/io/PrintStream.ensureOpen + 0 311481/2 4790258401071 8 -> java/io/BufferedOutputStream.write + 0 311481/2 4790258401079 7 -> java/lang/System.arraycopy + 0 311481/2 4790258401087 7 <- java/lang/System.arraycopy + 0 311481/2 4790258401094 7 <- java/io/BufferedOutputStream.write + 0 311481/2 4790258401103 8 -> java/io/BufferedOutputStream.flush + 0 311481/2 4790258401110 7 -> java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790258401118 7 -> java/io/FileOutputStream.write + 0 311481/2 4790258401125 7 -> java/io/FileOutputStream.writeBytes + 0 311481/2 4790258401164 39 <- java/io/FileOutputStream.writeBytes + 0 311481/2 4790258401173 8 <- java/io/FileOutputStream.write + 0 311481/2 4790258401181 7 <- java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790258401189 7 <- java/io/BufferedOutputStream.flush + 0 311481/2 4790258401196 7 <- java/io/PrintStream.write + 0 311481/2 4790258401204 7 -> java/nio/Buffer.clear + 0 311481/2 4790258401212 7 <- java/nio/Buffer.clear + 0 311481/2 4790258401219 7 <- sun/nio/cs/StreamEncoder.writeBytes + 0 311481/2 4790258401227 7 <- sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311481/2 4790258401235 7 <- sun/nio/cs/StreamEncoder.flushBuffer + 0 311481/2 4790258401242 7 <- java/io/OutputStreamWriter.flushBuffer + 0 311481/2 4790258401251 8 -> java/lang/String.indexOf + 0 311481/2 4790258401258 7 -> java/lang/String.indexOf + 0 311481/2 4790258401266 8 <- java/lang/String.indexOf + 0 311481/2 4790258401274 7 <- java/lang/String.indexOf + 0 311481/2 4790258401281 7 <- java/io/PrintStream.write + 0 311481/2 4790258401289 7 <- java/io/PrintStream.print + 0 311481/2 4790258401297 7 -> java/io/PrintStream.newLine + 0 311481/2 4790258401304 7 -> java/io/PrintStream.ensureOpen + 0 311481/2 4790258401311 7 <- java/io/PrintStream.ensureOpen + 0 311481/2 4790258401319 7 -> java/io/BufferedWriter.newLine + 0 311481/2 4790258401326 7 -> java/io/Writer.write + 0 311481/2 4790258401334 7 -> java/io/BufferedWriter.write + 0 311481/2 4790258401341 7 -> java/io/BufferedWriter.ensureOpen + 0 311481/2 4790258401348 7 <- java/io/BufferedWriter.ensureOpen + 0 311481/2 4790258401356 7 -> java/io/BufferedWriter.min + 0 311481/2 4790258401363 7 <- java/io/BufferedWriter.min + 0 311481/2 4790258401371 7 -> java/lang/String.getChars + 0 311481/2 4790258401378 7 -> java/lang/System.arraycopy + 0 311481/2 4790258401385 7 <- java/lang/System.arraycopy + 0 311481/2 4790258401393 7 <- java/lang/String.getChars + 0 311481/2 4790258401401 7 <- java/io/BufferedWriter.write + 0 311481/2 4790258401408 7 <- java/io/Writer.write + 0 311481/2 4790258401416 7 <- java/io/BufferedWriter.newLine + 0 311481/2 4790258401423 7 -> java/io/BufferedWriter.flushBuffer + 0 311481/2 4790258401430 7 -> java/io/BufferedWriter.ensureOpen + 0 311481/2 4790258401438 7 <- java/io/BufferedWriter.ensureOpen + 0 311481/2 4790258401446 7 -> java/io/OutputStreamWriter.write + 0 311481/2 4790258401453 7 -> sun/nio/cs/StreamEncoder.write + 0 311481/2 4790258401460 7 -> sun/nio/cs/StreamEncoder.ensureOpen + 0 311481/2 4790258401467 7 <- sun/nio/cs/StreamEncoder.ensureOpen + 0 311481/2 4790258401475 7 -> sun/nio/cs/StreamEncoder.implWrite + 0 311481/2 4790258401482 7 -> java/nio/CharBuffer.wrap + 0 311481/2 4790258401490 7 -> java/nio/HeapCharBuffer.<init> + 0 311481/2 4790258401497 7 -> java/nio/CharBuffer.<init> + 0 311481/2 4790258401504 7 -> java/nio/Buffer.<init> + 0 311481/2 4790258401511 7 -> java/lang/Object.<init> + 0 311481/2 4790258401518 7 <- java/lang/Object.<init> + 0 311481/2 4790258401526 7 -> java/nio/Buffer.limit + 0 311481/2 4790258401533 7 <- java/nio/Buffer.limit + 0 311481/2 4790258401541 7 -> java/nio/Buffer.position + 0 311481/2 4790258401548 7 <- java/nio/Buffer.position + 0 311481/2 4790258401556 7 <- java/nio/Buffer.<init> + 0 311481/2 4790258401563 7 <- java/nio/CharBuffer.<init> + 0 311481/2 4790258401570 7 <- java/nio/HeapCharBuffer.<init> + 0 311481/2 4790258401578 7 <- java/nio/CharBuffer.wrap + 0 311481/2 4790258401586 7 -> java/nio/Buffer.hasRemaining + 0 311481/2 4790258401593 7 <- java/nio/Buffer.hasRemaining + 0 311481/2 4790258401601 7 -> java/nio/charset/CharsetEncoder.encode + 0 311481/2 4790258401608 7 -> sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311481/2 4790258401615 7 -> java/nio/CharBuffer.hasArray + 0 311481/2 4790258401623 7 <- java/nio/CharBuffer.hasArray + 0 311481/2 4790258401630 7 -> java/nio/ByteBuffer.hasArray + 0 311481/2 4790258401638 7 <- java/nio/ByteBuffer.hasArray + 0 311481/2 4790258401645 7 -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311481/2 4790258401653 7 -> java/nio/CharBuffer.array + 0 311481/2 4790258401660 7 <- java/nio/CharBuffer.array + 0 311481/2 4790258401667 7 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790258401675 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790258401682 7 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790258401690 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790258401697 7 -> java/nio/ByteBuffer.array + 0 311481/2 4790258401705 7 <- java/nio/ByteBuffer.array + 0 311481/2 4790258401712 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258401719 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258401727 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258401734 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258401743 8 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790258401750 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790258401757 7 -> java/nio/Buffer.position + 0 311481/2 4790258401765 7 <- java/nio/Buffer.position + 0 311481/2 4790258401772 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258401780 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258401787 7 -> java/nio/Buffer.position + 0 311481/2 4790258401794 7 <- java/nio/Buffer.position + 0 311481/2 4790258401802 7 <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311481/2 4790258401809 7 <- sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311481/2 4790258401817 7 -> java/nio/charset/CoderResult.isOverflow + 0 311481/2 4790258401825 7 <- java/nio/charset/CoderResult.isOverflow + 0 311481/2 4790258401832 7 -> java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790258401840 7 <- java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790258401848 7 <- java/nio/charset/CharsetEncoder.encode + 0 311481/2 4790258401855 7 -> java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790258401863 7 <- java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790258401871 7 -> java/nio/Buffer.remaining + 0 311481/2 4790258401878 7 <- java/nio/Buffer.remaining + 0 311481/2 4790258401885 7 <- sun/nio/cs/StreamEncoder.implWrite + 0 311481/2 4790258401893 7 <- sun/nio/cs/StreamEncoder.write + 0 311481/2 4790258401901 7 <- java/io/OutputStreamWriter.write + 0 311481/2 4790258401908 7 <- java/io/BufferedWriter.flushBuffer + 0 311481/2 4790258401916 7 -> java/io/OutputStreamWriter.flushBuffer + 0 311481/2 4790258401923 7 -> sun/nio/cs/StreamEncoder.flushBuffer + 0 311481/2 4790258401931 7 -> sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311481/2 4790258401938 7 -> sun/nio/cs/StreamEncoder.writeBytes + 0 311481/2 4790258401945 7 -> java/nio/Buffer.flip + 0 311481/2 4790258401952 7 <- java/nio/Buffer.flip + 0 311481/2 4790258401960 7 -> java/nio/ByteBuffer.array + 0 311481/2 4790258401967 7 <- java/nio/ByteBuffer.array + 0 311481/2 4790258401975 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258401982 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790258401990 7 -> java/io/PrintStream.write + 0 311481/2 4790258401997 7 -> java/io/PrintStream.ensureOpen + 0 311481/2 4790258402004 7 <- java/io/PrintStream.ensureOpen + 0 311481/2 4790258402012 7 -> java/io/BufferedOutputStream.write + 0 311481/2 4790258402020 7 -> java/lang/System.arraycopy + 0 311481/2 4790258402027 7 <- java/lang/System.arraycopy + 0 311481/2 4790258402035 7 <- java/io/BufferedOutputStream.write + 0 311481/2 4790258402042 7 -> java/io/BufferedOutputStream.flush + 0 311481/2 4790258402050 7 -> java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790258402057 7 -> java/io/FileOutputStream.write + 0 311481/2 4790258402064 7 -> java/io/FileOutputStream.writeBytes + 0 311481/2 4790258402082 17 <- java/io/FileOutputStream.writeBytes + 0 311481/2 4790258402090 8 <- java/io/FileOutputStream.write + 0 311481/2 4790258402098 7 <- java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790258402106 7 <- java/io/BufferedOutputStream.flush + 0 311481/2 4790258402113 7 <- java/io/PrintStream.write + 0 311481/2 4790258402121 7 -> java/nio/Buffer.clear + 0 311481/2 4790258402128 7 <- java/nio/Buffer.clear + 0 311481/2 4790258402136 7 <- sun/nio/cs/StreamEncoder.writeBytes + 0 311481/2 4790258402143 7 <- sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311481/2 4790258402151 7 <- sun/nio/cs/StreamEncoder.flushBuffer + 0 311481/2 4790258402159 7 <- java/io/OutputStreamWriter.flushBuffer + 0 311481/2 4790258402166 7 -> java/io/BufferedOutputStream.flush + 0 311481/2 4790258402174 7 -> java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790258402181 7 <- java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790258402189 7 <- java/io/BufferedOutputStream.flush + 0 311481/2 4790258402196 7 <- java/io/PrintStream.newLine + 0 311481/2 4790258402204 7 <- java/io/PrintStream.println + 0 311481/2 4790258402212 7 -> java/lang/Thread.currentThread + 0 311481/2 4790258402220 7 <- java/lang/Thread.currentThread + 0 311481/2 4790258402228 7 -> java/lang/Thread.sleep + 0 311481/2 4790259410328 1008099 <- java/lang/Thread.sleep + 0 311481/2 4790259410374 46 -> Func_abc.func_c + 0 311481/2 4790259410404 29 -> java/io/PrintStream.println + 0 311481/2 4790259410412 8 -> java/io/PrintStream.print + 0 311481/2 4790259410420 7 -> java/io/PrintStream.write + 0 311481/2 4790259410428 7 -> java/io/PrintStream.ensureOpen + 0 311481/2 4790259410435 7 <- java/io/PrintStream.ensureOpen + 0 311481/2 4790259410444 8 -> java/io/Writer.write + 0 311481/2 4790259410453 8 -> java/io/BufferedWriter.write + 0 311481/2 4790259410460 7 -> java/io/BufferedWriter.ensureOpen + 0 311481/2 4790259410467 7 <- java/io/BufferedWriter.ensureOpen + 0 311481/2 4790259410477 9 -> java/io/BufferedWriter.min + 0 311481/2 4790259410484 7 <- java/io/BufferedWriter.min + 0 311481/2 4790259410492 8 -> java/lang/String.getChars + 0 311481/2 4790259410501 8 -> java/lang/System.arraycopy + 0 311481/2 4790259410509 8 <- java/lang/System.arraycopy + 0 311481/2 4790259410517 7 <- java/lang/String.getChars + 0 311481/2 4790259410525 8 <- java/io/BufferedWriter.write + 0 311481/2 4790259410533 7 <- java/io/Writer.write + 0 311481/2 4790259410541 7 -> java/io/BufferedWriter.flushBuffer + 0 311481/2 4790259410548 7 -> java/io/BufferedWriter.ensureOpen + 0 311481/2 4790259410555 7 <- java/io/BufferedWriter.ensureOpen + 0 311481/2 4790259410563 8 -> java/io/OutputStreamWriter.write + 0 311481/2 4790259410571 7 -> sun/nio/cs/StreamEncoder.write + 0 311481/2 4790259410579 7 -> sun/nio/cs/StreamEncoder.ensureOpen + 0 311481/2 4790259410586 7 <- sun/nio/cs/StreamEncoder.ensureOpen + 0 311481/2 4790259410595 8 -> sun/nio/cs/StreamEncoder.implWrite + 0 311481/2 4790259410602 7 -> java/nio/CharBuffer.wrap + 0 311481/2 4790259410610 7 -> java/nio/HeapCharBuffer.<init> + 0 311481/2 4790259410618 7 -> java/nio/CharBuffer.<init> + 0 311481/2 4790259410625 7 -> java/nio/Buffer.<init> + 0 311481/2 4790259410633 7 -> java/lang/Object.<init> + 0 311481/2 4790259410640 7 <- java/lang/Object.<init> + 0 311481/2 4790259410648 8 -> java/nio/Buffer.limit + 0 311481/2 4790259410656 7 <- java/nio/Buffer.limit + 0 311481/2 4790259410664 7 -> java/nio/Buffer.position + 0 311481/2 4790259410671 7 <- java/nio/Buffer.position + 0 311481/2 4790259410678 7 <- java/nio/Buffer.<init> + 0 311481/2 4790259410686 7 <- java/nio/CharBuffer.<init> + 0 311481/2 4790259410694 7 <- java/nio/HeapCharBuffer.<init> + 0 311481/2 4790259410701 7 <- java/nio/CharBuffer.wrap + 0 311481/2 4790259410710 8 -> java/nio/Buffer.hasRemaining + 0 311481/2 4790259410717 7 <- java/nio/Buffer.hasRemaining + 0 311481/2 4790259410725 8 -> java/nio/charset/CharsetEncoder.encode + 0 311481/2 4790259410733 8 -> sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311481/2 4790259410741 7 -> java/nio/CharBuffer.hasArray + 0 311481/2 4790259410749 7 <- java/nio/CharBuffer.hasArray + 0 311481/2 4790259410757 8 -> java/nio/ByteBuffer.hasArray + 0 311481/2 4790259410764 7 <- java/nio/ByteBuffer.hasArray + 0 311481/2 4790259410772 7 -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311481/2 4790259410780 7 -> java/nio/CharBuffer.array + 0 311481/2 4790259410787 7 <- java/nio/CharBuffer.array + 0 311481/2 4790259410795 7 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790259410802 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790259410810 7 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790259410817 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790259410826 8 -> java/nio/ByteBuffer.array + 0 311481/2 4790259410833 7 <- java/nio/ByteBuffer.array + 0 311481/2 4790259410841 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259410848 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259410855 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259410863 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259410873 9 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790259410880 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790259410888 7 -> java/nio/Buffer.position + 0 311481/2 4790259410895 7 <- java/nio/Buffer.position + 0 311481/2 4790259410902 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259410910 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259410917 7 -> java/nio/Buffer.position + 0 311481/2 4790259410924 7 <- java/nio/Buffer.position + 0 311481/2 4790259410932 7 <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311481/2 4790259410940 7 <- sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311481/2 4790259410948 8 -> java/nio/charset/CoderResult.isOverflow + 0 311481/2 4790259410955 7 <- java/nio/charset/CoderResult.isOverflow + 0 311481/2 4790259410963 7 -> java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790259410970 7 <- java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790259410978 7 <- java/nio/charset/CharsetEncoder.encode + 0 311481/2 4790259410986 7 -> java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790259410993 7 <- java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790259411001 8 -> java/nio/Buffer.remaining + 0 311481/2 4790259411008 7 <- java/nio/Buffer.remaining + 0 311481/2 4790259411016 7 <- sun/nio/cs/StreamEncoder.implWrite + 0 311481/2 4790259411024 7 <- sun/nio/cs/StreamEncoder.write + 0 311481/2 4790259411031 7 <- java/io/OutputStreamWriter.write + 0 311481/2 4790259411039 7 <- java/io/BufferedWriter.flushBuffer + 0 311481/2 4790259411047 8 -> java/io/OutputStreamWriter.flushBuffer + 0 311481/2 4790259411055 7 -> sun/nio/cs/StreamEncoder.flushBuffer + 0 311481/2 4790259411062 7 -> sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311481/2 4790259411070 7 -> sun/nio/cs/StreamEncoder.writeBytes + 0 311481/2 4790259411077 7 -> java/nio/Buffer.flip + 0 311481/2 4790259411084 6 <- java/nio/Buffer.flip + 0 311481/2 4790259411092 8 -> java/nio/ByteBuffer.array + 0 311481/2 4790259411100 7 <- java/nio/ByteBuffer.array + 0 311481/2 4790259411107 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259411114 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259411122 7 -> java/io/PrintStream.write + 0 311481/2 4790259411130 7 -> java/io/PrintStream.ensureOpen + 0 311481/2 4790259411137 7 <- java/io/PrintStream.ensureOpen + 0 311481/2 4790259411145 8 -> java/io/BufferedOutputStream.write + 0 311481/2 4790259411153 7 -> java/lang/System.arraycopy + 0 311481/2 4790259411160 7 <- java/lang/System.arraycopy + 0 311481/2 4790259411168 7 <- java/io/BufferedOutputStream.write + 0 311481/2 4790259411176 8 -> java/io/BufferedOutputStream.flush + 0 311481/2 4790259411184 7 -> java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790259411192 7 -> java/io/FileOutputStream.write + 0 311481/2 4790259411199 7 -> java/io/FileOutputStream.writeBytes + 0 311481/2 4790259411241 41 <- java/io/FileOutputStream.writeBytes + 0 311481/2 4790259411249 8 <- java/io/FileOutputStream.write + 0 311481/2 4790259411257 7 <- java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790259411265 7 <- java/io/BufferedOutputStream.flush + 0 311481/2 4790259411272 7 <- java/io/PrintStream.write + 0 311481/2 4790259411280 7 -> java/nio/Buffer.clear + 0 311481/2 4790259411288 7 <- java/nio/Buffer.clear + 0 311481/2 4790259411295 7 <- sun/nio/cs/StreamEncoder.writeBytes + 0 311481/2 4790259411303 7 <- sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311481/2 4790259411310 7 <- sun/nio/cs/StreamEncoder.flushBuffer + 0 311481/2 4790259411318 7 <- java/io/OutputStreamWriter.flushBuffer + 0 311481/2 4790259411326 8 -> java/lang/String.indexOf + 0 311481/2 4790259411334 7 -> java/lang/String.indexOf + 0 311481/2 4790259411342 8 <- java/lang/String.indexOf + 0 311481/2 4790259411349 7 <- java/lang/String.indexOf + 0 311481/2 4790259411357 7 <- java/io/PrintStream.write + 0 311481/2 4790259411365 7 <- java/io/PrintStream.print + 0 311481/2 4790259411372 7 -> java/io/PrintStream.newLine + 0 311481/2 4790259411380 7 -> java/io/PrintStream.ensureOpen + 0 311481/2 4790259411387 7 <- java/io/PrintStream.ensureOpen + 0 311481/2 4790259411395 7 -> java/io/BufferedWriter.newLine + 0 311481/2 4790259411402 7 -> java/io/Writer.write + 0 311481/2 4790259411409 7 -> java/io/BufferedWriter.write + 0 311481/2 4790259411416 7 -> java/io/BufferedWriter.ensureOpen + 0 311481/2 4790259411423 7 <- java/io/BufferedWriter.ensureOpen + 0 311481/2 4790259411431 7 -> java/io/BufferedWriter.min + 0 311481/2 4790259411439 7 <- java/io/BufferedWriter.min + 0 311481/2 4790259411446 7 -> java/lang/String.getChars + 0 311481/2 4790259411454 7 -> java/lang/System.arraycopy + 0 311481/2 4790259411461 7 <- java/lang/System.arraycopy + 0 311481/2 4790259411468 7 <- java/lang/String.getChars + 0 311481/2 4790259411476 7 <- java/io/BufferedWriter.write + 0 311481/2 4790259411484 7 <- java/io/Writer.write + 0 311481/2 4790259411491 7 <- java/io/BufferedWriter.newLine + 0 311481/2 4790259411499 7 -> java/io/BufferedWriter.flushBuffer + 0 311481/2 4790259411506 7 -> java/io/BufferedWriter.ensureOpen + 0 311481/2 4790259411513 7 <- java/io/BufferedWriter.ensureOpen + 0 311481/2 4790259411521 7 -> java/io/OutputStreamWriter.write + 0 311481/2 4790259411528 7 -> sun/nio/cs/StreamEncoder.write + 0 311481/2 4790259411535 7 -> sun/nio/cs/StreamEncoder.ensureOpen + 0 311481/2 4790259411543 7 <- sun/nio/cs/StreamEncoder.ensureOpen + 0 311481/2 4790259411550 7 -> sun/nio/cs/StreamEncoder.implWrite + 0 311481/2 4790259411558 7 -> java/nio/CharBuffer.wrap + 0 311481/2 4790259411565 7 -> java/nio/HeapCharBuffer.<init> + 0 311481/2 4790259411572 7 -> java/nio/CharBuffer.<init> + 0 311481/2 4790259411579 7 -> java/nio/Buffer.<init> + 0 311481/2 4790259411586 6 -> java/lang/Object.<init> + 0 311481/2 4790259411594 7 <- java/lang/Object.<init> + 0 311481/2 4790259411601 7 -> java/nio/Buffer.limit + 0 311481/2 4790259411608 7 <- java/nio/Buffer.limit + 0 311481/2 4790259411616 7 -> java/nio/Buffer.position + 0 311481/2 4790259411623 7 <- java/nio/Buffer.position + 0 311481/2 4790259411631 7 <- java/nio/Buffer.<init> + 0 311481/2 4790259411638 7 <- java/nio/CharBuffer.<init> + 0 311481/2 4790259411646 7 <- java/nio/HeapCharBuffer.<init> + 0 311481/2 4790259411653 7 <- java/nio/CharBuffer.wrap + 0 311481/2 4790259411661 7 -> java/nio/Buffer.hasRemaining + 0 311481/2 4790259411668 7 <- java/nio/Buffer.hasRemaining + 0 311481/2 4790259411676 7 -> java/nio/charset/CharsetEncoder.encode + 0 311481/2 4790259411684 7 -> sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311481/2 4790259411691 7 -> java/nio/CharBuffer.hasArray + 0 311481/2 4790259411698 7 <- java/nio/CharBuffer.hasArray + 0 311481/2 4790259411706 7 -> java/nio/ByteBuffer.hasArray + 0 311481/2 4790259411713 7 <- java/nio/ByteBuffer.hasArray + 0 311481/2 4790259411721 7 -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311481/2 4790259411728 7 -> java/nio/CharBuffer.array + 0 311481/2 4790259411735 7 <- java/nio/CharBuffer.array + 0 311481/2 4790259411743 7 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790259411750 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790259411758 7 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790259411765 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790259411773 7 -> java/nio/ByteBuffer.array + 0 311481/2 4790259411780 7 <- java/nio/ByteBuffer.array + 0 311481/2 4790259411787 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259411795 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259411802 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259411809 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259411818 8 -> java/nio/CharBuffer.arrayOffset + 0 311481/2 4790259411825 7 <- java/nio/CharBuffer.arrayOffset + 0 311481/2 4790259411833 7 -> java/nio/Buffer.position + 0 311481/2 4790259411840 7 <- java/nio/Buffer.position + 0 311481/2 4790259411847 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259411855 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259411862 7 -> java/nio/Buffer.position + 0 311481/2 4790259411869 7 <- java/nio/Buffer.position + 0 311481/2 4790259411877 7 <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 0 311481/2 4790259411885 7 <- sun/nio/cs/US_ASCII$Encoder.encodeLoop + 0 311481/2 4790259411893 8 -> java/nio/charset/CoderResult.isOverflow + 0 311481/2 4790259411900 7 <- java/nio/charset/CoderResult.isOverflow + 0 311481/2 4790259411908 7 -> java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790259411915 7 <- java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790259411923 7 <- java/nio/charset/CharsetEncoder.encode + 0 311481/2 4790259411931 7 -> java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790259411938 7 <- java/nio/charset/CoderResult.isUnderflow + 0 311481/2 4790259411946 7 -> java/nio/Buffer.remaining + 0 311481/2 4790259411953 7 <- java/nio/Buffer.remaining + 0 311481/2 4790259411960 7 <- sun/nio/cs/StreamEncoder.implWrite + 0 311481/2 4790259411968 7 <- sun/nio/cs/StreamEncoder.write + 0 311481/2 4790259411976 7 <- java/io/OutputStreamWriter.write + 0 311481/2 4790259411983 7 <- java/io/BufferedWriter.flushBuffer + 0 311481/2 4790259411991 7 -> java/io/OutputStreamWriter.flushBuffer + 0 311481/2 4790259411999 7 -> sun/nio/cs/StreamEncoder.flushBuffer + 0 311481/2 4790259412006 7 -> sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311481/2 4790259412013 7 -> sun/nio/cs/StreamEncoder.writeBytes + 0 311481/2 4790259412021 7 -> java/nio/Buffer.flip + 0 311481/2 4790259412028 6 <- java/nio/Buffer.flip + 0 311481/2 4790259412035 7 -> java/nio/ByteBuffer.array + 0 311481/2 4790259412043 7 <- java/nio/ByteBuffer.array + 0 311481/2 4790259412050 7 -> java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259412057 7 <- java/nio/ByteBuffer.arrayOffset + 0 311481/2 4790259412065 7 -> java/io/PrintStream.write + 0 311481/2 4790259412072 7 -> java/io/PrintStream.ensureOpen + 0 311481/2 4790259412080 7 <- java/io/PrintStream.ensureOpen + 0 311481/2 4790259412087 7 -> java/io/BufferedOutputStream.write + 0 311481/2 4790259412095 7 -> java/lang/System.arraycopy + 0 311481/2 4790259412102 7 <- java/lang/System.arraycopy + 0 311481/2 4790259412110 7 <- java/io/BufferedOutputStream.write + 0 311481/2 4790259412118 7 -> java/io/BufferedOutputStream.flush + 0 311481/2 4790259412125 7 -> java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790259412132 7 -> java/io/FileOutputStream.write + 0 311481/2 4790259412140 7 -> java/io/FileOutputStream.writeBytes + 0 311481/2 4790259412157 17 <- java/io/FileOutputStream.writeBytes + 0 311481/2 4790259412165 8 <- java/io/FileOutputStream.write + 0 311481/2 4790259412172 7 <- java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790259412180 7 <- java/io/BufferedOutputStream.flush + 0 311481/2 4790259412188 7 <- java/io/PrintStream.write + 0 311481/2 4790259412195 7 -> java/nio/Buffer.clear + 0 311481/2 4790259412203 7 <- java/nio/Buffer.clear + 0 311481/2 4790259412210 7 <- sun/nio/cs/StreamEncoder.writeBytes + 0 311481/2 4790259412218 7 <- sun/nio/cs/StreamEncoder.implFlushBuffer + 0 311481/2 4790259412226 7 <- sun/nio/cs/StreamEncoder.flushBuffer + 0 311481/2 4790259412233 7 <- java/io/OutputStreamWriter.flushBuffer + 0 311481/2 4790259412241 7 -> java/io/BufferedOutputStream.flush + 0 311481/2 4790259412248 7 -> java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790259412256 7 <- java/io/BufferedOutputStream.flushBuffer + 0 311481/2 4790259412263 7 <- java/io/BufferedOutputStream.flush + 0 311481/2 4790259412271 7 <- java/io/PrintStream.newLine + 0 311481/2 4790259412279 7 <- java/io/PrintStream.println + 0 311481/2 4790259412287 8 -> java/lang/Thread.currentThread + 0 311481/2 4790259412294 7 <- java/lang/Thread.currentThread + 0 311481/2 4790259412302 7 -> java/lang/Thread.sleep + 0 311481/2 4790260420044 1007741 <- java/lang/Thread.sleep + 0 311481/2 4790260420073 29 <- Func_abc.func_c + 0 311481/2 4790260420081 7 <- Func_abc.func_b + 0 311481/2 4790260420088 7 <- Func_abc.func_a + 0 311481/2 4790260420096 7 <- Func_abc.main + 0 311481/2 4790260420121 24 -> java/lang/Thread.exit + 0 311481/2 4790260420153 32 -> java/lang/ThreadGroup.remove + 0 311481/2 4790260420169 15 -> java/lang/System.arraycopy + 0 311481/2 4790260420178 8 <- java/lang/System.arraycopy + 0 311481/2 4790260420190 11 -> java/lang/Object.notifyAll + 0 311481/2 4790260420203 13 <- java/lang/Object.notifyAll + 0 311481/2 4790260420211 8 <- java/lang/ThreadGroup.remove + 0 311481/2 4790260420225 13 <- java/lang/Thread.exit + 0 311481/2 4790260420438 212 -> java/lang/Thread.<init> + 0 311481/2 4790260420447 8 -> java/lang/Object.<init> + 0 311481/2 4790260420454 7 <- java/lang/Object.<init> + 0 311481/2 4790260420464 9 -> java/lang/Object.<init> + 0 311481/2 4790260420471 7 <- java/lang/Object.<init> + 0 311481/2 4790260420479 8 -> java/lang/Thread.init + 0 311481/2 4790260420486 7 -> java/lang/Thread.currentThread + 0 311481/2 4790260420494 7 <- java/lang/Thread.currentThread + 0 311481/2 4790260420503 8 -> java/lang/System.getSecurityManager + 0 311481/2 4790260420511 7 <- java/lang/System.getSecurityManager + 0 311481/2 4790260420519 8 -> java/lang/ThreadGroup.checkAccess + 0 311481/2 4790260420526 7 -> java/lang/System.getSecurityManager + 0 311481/2 4790260420534 7 <- java/lang/System.getSecurityManager + 0 311481/2 4790260420542 8 <- java/lang/ThreadGroup.checkAccess + 0 311481/2 4790260420550 8 -> java/lang/ThreadGroup.addUnstarted + 0 311481/2 4790260420558 7 <- java/lang/ThreadGroup.addUnstarted + 0 311481/2 4790260420567 9 -> java/lang/String.toCharArray + 0 311481/2 4790260420575 8 -> java/lang/String.getChars + 0 311481/2 4790260420584 8 -> java/lang/System.arraycopy + 0 311481/2 4790260420592 8 <- java/lang/System.arraycopy + 0 311481/2 4790260420599 7 <- java/lang/String.getChars + 0 311481/2 4790260420607 7 <- java/lang/String.toCharArray + 0 311481/2 4790260420615 7 -> java/lang/Thread.getContextClassLoader + 0 311481/2 4790260420622 7 <- java/lang/Thread.getContextClassLoader + 0 311481/2 4790260420631 8 -> java/security/AccessController.getContext + 0 311481/2 4790260420638 7 -> java/security/AccessController.getStackAccessControlContext + 0 311481/2 4790260420653 14 <- java/security/AccessController.getStackAccessControlContext + 0 311481/2 4790260420662 8 -> java/security/AccessControlContext.optimize + 0 311481/2 4790260420670 8 -> java/security/AccessController.getInheritedAccessControlContext + 0 311481/2 4790260420678 8 <- java/security/AccessController.getInheritedAccessControlContext + 0 311481/2 4790260420687 8 <- java/security/AccessControlContext.optimize + 0 311481/2 4790260420695 7 <- java/security/AccessController.getContext + 0 311481/2 4790260420703 8 -> java/lang/Thread.setPriority + 0 311481/2 4790260420710 7 -> java/lang/Thread.checkAccess + 0 311481/2 4790260420718 7 -> java/lang/System.getSecurityManager + 0 311481/2 4790260420725 7 <- java/lang/System.getSecurityManager + 0 311481/2 4790260420732 7 <- java/lang/Thread.checkAccess + 0 311481/2 4790260420741 8 -> java/lang/Thread.setPriority0 + 0 311481/2 4790260420760 19 <- java/lang/Thread.setPriority0 + 0 311481/2 4790260420768 8 <- java/lang/Thread.setPriority + 0 311481/2 4790260420777 8 -> java/lang/Thread.nextThreadID + 0 311481/2 4790260420785 8 <- java/lang/Thread.nextThreadID + 0 311481/2 4790260420793 7 <- java/lang/Thread.init + 0 311481/2 4790260420801 7 <- java/lang/Thread.<init> + 0 311481/2 4790260420810 9 -> java/lang/ThreadGroup.add + 0 311481/2 4790260420819 8 <- java/lang/ThreadGroup.add + 0 311481/2 4790260420834 15 -> java/lang/Shutdown.shutdown + 0 311481/2 4790260420846 12 -> java/lang/Shutdown.sequence + 0 311481/2 4790260420855 9 -> java/lang/Shutdown.runHooks + 0 311481/2 4790260420867 11 -> java/util/AbstractList.iterator + 0 311481/2 4790260421144 277 -> java/util/AbstractList$Itr.<init> + 0 311481/2 4790260421156 12 -> java/util/AbstractList$Itr.<init> + 0 311481/2 4790260421168 11 -> java/lang/Object.<init> + 0 311481/2 4790260421175 7 <- java/lang/Object.<init> + 0 311481/2 4790260421189 13 <- java/util/AbstractList$Itr.<init> + 0 311481/2 4790260421197 7 <- java/util/AbstractList$Itr.<init> + 0 311481/2 4790260421205 7 <- java/util/AbstractList.iterator + 0 311481/2 4790260421218 13 -> java/util/AbstractList$Itr.hasNext + 0 311481/2 4790260421229 11 <- java/util/AbstractList$Itr.hasNext + 0 311481/2 4790260421240 10 -> java/util/AbstractList$Itr.next + 0 311481/2 4790260421249 9 -> java/util/AbstractList$Itr.checkForComodification + 0 311481/2 4790260421256 7 <- java/util/AbstractList$Itr.checkForComodification + 0 311481/2 4790260421267 10 -> java/util/ArrayList.get + 0 311481/2 4790260421274 7 -> java/util/ArrayList.RangeCheck + 0 311481/2 4790260421282 7 <- java/util/ArrayList.RangeCheck + 0 311481/2 4790260421290 7 <- java/util/ArrayList.get + 0 311481/2 4790260421297 7 <- java/util/AbstractList$Itr.next + 0 311481/2 4790260421310 12 -> java/io/Console$1$1.run + 0 311481/2 4790260421321 10 -> java/io/Console.access$600 + 0 311481/2 4790260421330 9 <- java/io/Console.access$600 + 0 311481/2 4790260421338 7 <- java/io/Console$1$1.run + 0 311481/2 4790260421346 7 -> java/util/AbstractList$Itr.hasNext + 0 311481/2 4790260421353 7 <- java/util/AbstractList$Itr.hasNext + 0 311481/2 4790260421361 7 -> java/util/AbstractList$Itr.next + 0 311481/2 4790260421368 7 -> java/util/AbstractList$Itr.checkForComodification + 0 311481/2 4790260421376 7 <- java/util/AbstractList$Itr.checkForComodification + 0 311481/2 4790260421384 8 -> java/util/ArrayList.get + 0 311481/2 4790260421391 7 -> java/util/ArrayList.RangeCheck + 0 311481/2 4790260421398 7 <- java/util/ArrayList.RangeCheck + 0 311481/2 4790260421406 7 <- java/util/ArrayList.get + 0 311481/2 4790260421414 7 <- java/util/AbstractList$Itr.next + 0 311481/2 4790260421422 8 -> java/lang/ApplicationShutdownHooks.run + 0 311481/2 4790260421435 13 -> java/util/IdentityHashMap.keySet + 0 311481/2 4790260421598 163 -> java/util/IdentityHashMap$KeySet.<init> + 0 311481/2 4790260421610 11 -> java/util/IdentityHashMap$KeySet.<init> + 0 311481/2 4790260421622 11 -> java/util/AbstractSet.<init> + 0 311481/2 4790260421629 7 -> java/util/AbstractCollection.<init> + 0 311481/2 4790260421637 7 -> java/lang/Object.<init> + 0 311481/2 4790260421644 7 <- java/lang/Object.<init> + 0 311481/2 4790260421652 8 <- java/util/AbstractCollection.<init> + 0 311481/2 4790260421660 7 <- java/util/AbstractSet.<init> + 0 311481/2 4790260421668 7 <- java/util/IdentityHashMap$KeySet.<init> + 0 311481/2 4790260421675 7 <- java/util/IdentityHashMap$KeySet.<init> + 0 311481/2 4790260421683 7 <- java/util/IdentityHashMap.keySet + 0 311481/2 4790260421695 11 -> java/util/IdentityHashMap$KeySet.iterator + 0 311481/2 4790260421882 187 -> java/util/IdentityHashMap$KeyIterator.<init> + 0 311481/2 4790260421894 11 -> java/util/IdentityHashMap$KeyIterator.<init> + 0 311481/2 4790260421905 11 -> java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311481/2 4790260421915 10 -> java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311481/2 4790260421926 10 -> java/lang/Object.<init> + 0 311481/2 4790260421934 7 <- java/lang/Object.<init> + 0 311481/2 4790260421945 11 -> java/util/IdentityHashMap.access$000 + 0 311481/2 4790260421954 8 <- java/util/IdentityHashMap.access$000 + 0 311481/2 4790260421967 12 -> java/util/IdentityHashMap.access$200 + 0 311481/2 4790260421975 8 <- java/util/IdentityHashMap.access$200 + 0 311481/2 4790260421986 10 <- java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311481/2 4790260421994 8 <- java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311481/2 4790260422002 7 <- java/util/IdentityHashMap$KeyIterator.<init> + 0 311481/2 4790260422010 7 <- java/util/IdentityHashMap$KeyIterator.<init> + 0 311481/2 4790260422018 7 <- java/util/IdentityHashMap$KeySet.iterator + 0 311481/2 4790260422029 11 -> java/util/IdentityHashMap$IdentityHashMapIterator.hasNext + 0 311481/2 4790260422037 8 <- java/util/IdentityHashMap$IdentityHashMapIterator.hasNext + 0 311481/2 4790260422045 8 -> java/util/IdentityHashMap$KeySet.iterator + 0 311481/2 4790260422053 7 -> java/util/IdentityHashMap$KeyIterator.<init> + 0 311481/2 4790260422060 7 -> java/util/IdentityHashMap$KeyIterator.<init> + 0 311481/2 4790260422068 7 -> java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311481/2 4790260422075 7 -> java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311481/2 4790260422083 7 -> java/lang/Object.<init> + 0 311481/2 4790260422090 7 <- java/lang/Object.<init> + 0 311481/2 4790260422098 8 <- java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311481/2 4790260422106 8 <- java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 0 311481/2 4790260422114 7 <- java/util/IdentityHashMap$KeyIterator.<init> + 0 311481/2 4790260422121 7 <- java/util/IdentityHashMap$KeyIterator.<init> + 0 311481/2 4790260422129 7 <- java/util/IdentityHashMap$KeySet.iterator + 0 311481/2 4790260422137 7 -> java/util/IdentityHashMap$IdentityHashMapIterator.hasNext + 0 311481/2 4790260422145 7 <- java/util/IdentityHashMap$IdentityHashMapIterator.hasNext + 0 311481/2 4790260422153 8 <- java/lang/ApplicationShutdownHooks.run + 0 311481/2 4790260422161 7 -> java/util/AbstractList$Itr.hasNext + 0 311481/2 4790260422168 7 <- java/util/AbstractList$Itr.hasNext + 0 311481/2 4790260422176 7 -> java/util/AbstractList$Itr.next + 0 311481/2 4790260422183 7 -> java/util/AbstractList$Itr.checkForComodification + 0 311481/2 4790260422191 7 <- java/util/AbstractList$Itr.checkForComodification + 0 311481/2 4790260422199 8 -> java/util/ArrayList.get + 0 311481/2 4790260422206 7 -> java/util/ArrayList.RangeCheck + 0 311481/2 4790260422213 7 <- java/util/ArrayList.RangeCheck + 0 311481/2 4790260422221 7 <- java/util/ArrayList.get + 0 311481/2 4790260422229 7 <- java/util/AbstractList$Itr.next + 0 311481/2 4790260422237 8 -> java/io/File$1.run + 0 311481/2 4790260422318 81 -> java/io/DeleteOnExitHook.<clinit> + 0 311481/2 4790260422461 143 -> java/util/LinkedHashSet.<init> + 0 311481/2 4790260422473 12 -> java/util/HashSet.<init> + 0 311481/2 4790260422481 7 -> java/util/AbstractSet.<init> + 0 311481/2 4790260422488 7 -> java/util/AbstractCollection.<init> + 0 311481/2 4790260422495 7 -> java/lang/Object.<init> + 0 311481/2 4790260422502 7 <- java/lang/Object.<init> + 0 311481/2 4790260422511 8 <- java/util/AbstractCollection.<init> + 0 311481/2 4790260422519 7 <- java/util/AbstractSet.<init> + 0 311481/2 4790260422531 12 -> java/util/LinkedHashMap.<init> + 0 311481/2 4790260422541 10 -> java/util/HashMap.<init> + 0 311481/2 4790260422549 7 -> java/util/AbstractMap.<init> + 0 311481/2 4790260422556 7 -> java/lang/Object.<init> + 0 311481/2 4790260422563 7 <- java/lang/Object.<init> + 0 311481/2 4790260422571 7 <- java/util/AbstractMap.<init> + 0 311481/2 4790260422580 9 -> java/lang/Float.isNaN + 0 311481/2 4790260422588 7 <- java/lang/Float.isNaN + 0 311481/2 4790260422600 12 -> java/util/LinkedHashMap.init + 0 311481/2 4790260422608 8 -> java/util/LinkedHashMap$Entry.<init> + 0 311481/2 4790260422615 7 -> java/util/HashMap$Entry.<init> + 0 311481/2 4790260422623 7 -> java/lang/Object.<init> + 0 311481/2 4790260422630 6 <- java/lang/Object.<init> + 0 311481/2 4790260422638 7 <- java/util/HashMap$Entry.<init> + 0 311481/2 4790260422645 7 <- java/util/LinkedHashMap$Entry.<init> + 0 311481/2 4790260422653 7 <- java/util/LinkedHashMap.init + 0 311481/2 4790260422660 7 <- java/util/HashMap.<init> + 0 311481/2 4790260422668 7 <- java/util/LinkedHashMap.<init> + 0 311481/2 4790260422676 7 <- java/util/HashSet.<init> + 0 311481/2 4790260422683 7 <- java/util/LinkedHashSet.<init> + 0 311481/2 4790260422692 9 <- java/io/DeleteOnExitHook.<clinit> + 0 311481/2 4790260422703 10 -> java/io/DeleteOnExitHook.hook + 0 311481/2 4790260422713 10 -> java/io/DeleteOnExitHook.<init> + 0 311481/2 4790260422723 9 -> java/lang/Object.<init> + 0 311481/2 4790260422730 7 <- java/lang/Object.<init> + 0 311481/2 4790260422738 7 <- java/io/DeleteOnExitHook.<init> + 0 311481/2 4790260422746 7 <- java/io/DeleteOnExitHook.hook + 0 311481/2 4790260422756 10 -> java/io/DeleteOnExitHook.run + 0 311481/2 4790260422768 12 -> java/util/ArrayList.<init> + 0 311481/2 4790260422775 7 -> java/util/AbstractList.<init> + 0 311481/2 4790260422783 7 -> java/util/AbstractCollection.<init> + 0 311481/2 4790260422790 7 -> java/lang/Object.<init> + 0 311481/2 4790260422797 7 <- java/lang/Object.<init> + 0 311481/2 4790260422805 7 <- java/util/AbstractCollection.<init> + 0 311481/2 4790260422813 7 <- java/util/AbstractList.<init> + 0 311481/2 4790260422824 11 -> java/util/AbstractCollection.toArray + 0 311481/2 4790260422835 10 -> java/util/HashSet.size + 0 311481/2 4790260422844 9 <- java/util/HashSet.size + 0 311481/2 4790260422855 10 -> java/util/HashSet.iterator + 0 311481/2 4790260422865 9 -> java/util/HashMap.keySet + 0 311481/2 4790260422956 91 -> java/util/HashMap$KeySet.<init> + 0 311481/2 4790260422967 10 -> java/util/HashMap$KeySet.<init> + 0 311481/2 4790260422978 10 -> java/util/AbstractSet.<init> + 0 311481/2 4790260422985 7 -> java/util/AbstractCollection.<init> + 0 311481/2 4790260422993 7 -> java/lang/Object.<init> + 0 311481/2 4790260423000 7 <- java/lang/Object.<init> + 0 311481/2 4790260423008 7 <- java/util/AbstractCollection.<init> + 0 311481/2 4790260423015 7 <- java/util/AbstractSet.<init> + 0 311481/2 4790260423023 7 <- java/util/HashMap$KeySet.<init> + 0 311481/2 4790260423031 7 <- java/util/HashMap$KeySet.<init> + 0 311481/2 4790260423038 7 <- java/util/HashMap.keySet + 0 311481/2 4790260423049 10 -> java/util/HashMap$KeySet.iterator + 0 311481/2 4790260423060 11 -> java/util/LinkedHashMap.newKeyIterator + 0 311481/2 4790260423243 182 -> java/util/LinkedHashMap$KeyIterator.<init> + 0 311481/2 4790260423254 11 -> java/util/LinkedHashMap$KeyIterator.<init> + 0 311481/2 4790260423266 11 -> java/util/LinkedHashMap$LinkedHashIterator.<init> + 0 311481/2 4790260423276 9 -> java/util/LinkedHashMap$LinkedHashIterator.<init> + 0 311481/2 4790260423286 10 -> java/lang/Object.<init> + 0 311481/2 4790260423294 7 <- java/lang/Object.<init> + 0 311481/2 4790260423311 16 <- java/util/LinkedHashMap$LinkedHashIterator.<init> + 0 311481/2 4790260423319 8 <- java/util/LinkedHashMap$LinkedHashIterator.<init> + 0 311481/2 4790260423327 7 <- java/util/LinkedHashMap$KeyIterator.<init> + 0 311481/2 4790260423334 7 <- java/util/LinkedHashMap$KeyIterator.<init> + 0 311481/2 4790260423342 7 <- java/util/LinkedHashMap.newKeyIterator + 0 311481/2 4790260423350 7 <- java/util/HashMap$KeySet.iterator + 0 311481/2 4790260423357 7 <- java/util/HashSet.iterator + 0 311481/2 4790260423369 11 -> java/util/LinkedHashMap$LinkedHashIterator.hasNext + 0 311481/2 4790260423377 8 <- java/util/LinkedHashMap$LinkedHashIterator.hasNext + 0 311481/2 4790260423385 8 <- java/util/AbstractCollection.toArray + 0 311481/2 4790260423393 8 -> java/lang/Object.getClass + 0 311481/2 4790260423402 8 <- java/lang/Object.getClass + 0 311481/2 4790260423410 8 <- java/util/ArrayList.<init> + 0 311481/2 4790260423422 11 -> java/util/Collections.reverse + 0 311481/2 4790260423435 13 <- java/util/Collections.reverse + 0 311481/2 4790260423445 10 -> java/util/AbstractList.iterator + 0 311481/2 4790260423453 8 -> java/util/AbstractList$Itr.<init> + 0 311481/2 4790260423460 7 -> java/util/AbstractList$Itr.<init> + 0 311481/2 4790260423468 7 -> java/lang/Object.<init> + 0 311481/2 4790260423475 7 <- java/lang/Object.<init> + 0 311481/2 4790260423483 7 <- java/util/AbstractList$Itr.<init> + 0 311481/2 4790260423490 7 <- java/util/AbstractList$Itr.<init> + 0 311481/2 4790260423498 7 <- java/util/AbstractList.iterator + 0 311481/2 4790260423508 10 -> java/util/AbstractList$Itr.hasNext + 0 311481/2 4790260423516 7 <- java/util/AbstractList$Itr.hasNext + 0 311481/2 4790260423524 8 <- java/io/DeleteOnExitHook.run + 0 311481/2 4790260423532 7 <- java/io/File$1.run + 0 311481/2 4790260423539 7 -> java/util/AbstractList$Itr.hasNext + 0 311481/2 4790260423547 7 <- java/util/AbstractList$Itr.hasNext + 0 311481/2 4790260423554 7 <- java/lang/Shutdown.runHooks + 0 311481/2 4790260423564 9 <- java/lang/Shutdown.sequence + 0 311481/2 4790260423572 7 <- java/lang/Shutdown.shutdown + +I truncated 22800 lines from the above output to make it fit here. + +The fifth column is indented by 2 spaces to show when a new method begins. +This shows which method is calling which. + +The TIME(us) column shows time since boot. + +The DELTA(us) column shows time from that line to the previous line, and +so can be a bit tricky to read. + +The FILE column shows file that was being executed. + +If the output looks shuffled, check the CPU "C" and "TIME" columns, and +post sort based on TIME if necessary. + +Try skimming down the "DELTA(us)" column to find the largest delta time, +and see what lines it corresponds with. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + +If you see "drops" warnings, see the Notes/ALLjava_notes.txt file for details. + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_methodcalls_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_methodcalls_example.txt new file mode 100644 index 000000000000..22a2b4d1a7e9 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_methodcalls_example.txt @@ -0,0 +1,999 @@ +The following are examples of running the j_methodcalls.d script. + +This traces calls to methods from all Java processes on the system with hotspot +provider support (1.6.0). Method calls are only visible when using the flag +"+ExtendedDTraceProbes". eg, java -XX:+ExtendedDTraceProbes classfile + +Here we see it running on Code/Java/Func_abc + +# j_methodcalls_example.txt +Tracing... Hit Ctrl-C to end. + + PID COUNT CLASS.METHOD + 311492 1 Func_abc.func_a + 311492 1 Func_abc.func_b + 311492 1 Func_abc.func_c + 311492 1 Func_abc.main + 311492 1 java/io/BufferedInputStream.<clinit> + 311492 1 java/io/BufferedReader.<clinit> + 311492 1 java/io/BufferedReader.close + 311492 1 java/io/BufferedWriter.<clinit> + 311492 1 java/io/Console$1$1.<init> + 311492 1 java/io/Console$1$1.run + 311492 1 java/io/Console$1.<init> + 311492 1 java/io/Console$1.consoleRestoreHook + 311492 1 java/io/Console.<clinit> + 311492 1 java/io/Console.access$600 + 311492 1 java/io/DataInputStream.<init> + 311492 1 java/io/DataInputStream.readFully + 311492 1 java/io/DeleteOnExitHook.<clinit> + 311492 1 java/io/DeleteOnExitHook.<init> + 311492 1 java/io/DeleteOnExitHook.hook + 311492 1 java/io/DeleteOnExitHook.run + 311492 1 java/io/File$1.<init> + 311492 1 java/io/File$1.run + 311492 1 java/io/File.<clinit> + 311492 1 java/io/File.lastModified + 311492 1 java/io/File.length + 311492 1 java/io/FileDescriptor.<clinit> + 311492 1 java/io/FileDescriptor.initIDs + 311492 1 java/io/FileInputStream.<clinit> + 311492 1 java/io/FileInputStream.available + 311492 1 java/io/FileInputStream.initIDs + 311492 1 java/io/FileOutputStream.<clinit> + 311492 1 java/io/FileOutputStream.initIDs + 311492 1 java/io/FilePermission.newPermissionCollection + 311492 1 java/io/FilePermissionCollection.<clinit> + 311492 1 java/io/FilePermissionCollection.<init> + 311492 1 java/io/FilePermissionCollection.add + 311492 1 java/io/FileReader.<init> + 311492 1 java/io/FileSystem.<clinit> + 311492 1 java/io/FileSystem.<init> + 311492 1 java/io/FileSystem.getFileSystem + 311492 1 java/io/FilterInputStream.close + 311492 1 java/io/InputStreamReader.<init> + 311492 1 java/io/InputStreamReader.close + 311492 1 java/io/ObjectStreamClass.<clinit> + 311492 1 java/io/ObjectStreamClass.initNative + 311492 1 java/io/UnixFileSystem.<clinit> + 311492 1 java/io/UnixFileSystem.<init> + 311492 1 java/io/UnixFileSystem.getLastModifiedTime + 311492 1 java/io/UnixFileSystem.getLength + 311492 1 java/io/UnixFileSystem.initIDs + 311492 1 java/lang/AbstractStringBuilder.<clinit> + 311492 1 java/lang/ApplicationShutdownHooks.<clinit> + 311492 1 java/lang/ApplicationShutdownHooks.<init> + 311492 1 java/lang/ApplicationShutdownHooks.hook + 311492 1 java/lang/ApplicationShutdownHooks.run + 311492 1 java/lang/Boolean.<clinit> + 311492 1 java/lang/Byte.<clinit> + 311492 1 java/lang/Character.<clinit> + 311492 1 java/lang/CharacterDataLatin1.<clinit> + 311492 1 java/lang/Class.<clinit> + 311492 1 java/lang/Class.access$302 + 311492 1 java/lang/Class.registerNatives + 311492 1 java/lang/ClassLoader$3.<init> + 311492 1 java/lang/ClassLoader$3.run + 311492 1 java/lang/ClassLoader$NativeLibrary.<init> + 311492 1 java/lang/ClassLoader$NativeLibrary.getFromClass + 311492 1 java/lang/ClassLoader$NativeLibrary.load + 311492 1 java/lang/ClassLoader.<clinit> + 311492 1 java/lang/ClassLoader.access$100 + 311492 1 java/lang/ClassLoader.addClass + 311492 1 java/lang/ClassLoader.checkCerts + 311492 1 java/lang/ClassLoader.defineClass + 311492 1 java/lang/ClassLoader.defineClass1 + 311492 1 java/lang/ClassLoader.defineClassSourceLocation + 311492 1 java/lang/ClassLoader.getSystemClassLoader + 311492 1 java/lang/ClassLoader.initSystemClassLoader + 311492 1 java/lang/ClassLoader.loadLibrary + 311492 1 java/lang/ClassLoader.loadLibrary0 + 311492 1 java/lang/ClassLoader.postDefineClass + 311492 1 java/lang/ClassLoader.preDefineClass + 311492 1 java/lang/ClassLoader.registerNatives + 311492 1 java/lang/Compiler$1.<init> + 311492 1 java/lang/Compiler$1.run + 311492 1 java/lang/Compiler.<clinit> + 311492 1 java/lang/Compiler.registerNatives + 311492 1 java/lang/Double.<clinit> + 311492 1 java/lang/Double.doubleToLongBits + 311492 1 java/lang/Double.doubleToRawLongBits + 311492 1 java/lang/Error.<init> + 311492 1 java/lang/Float.<clinit> + 311492 1 java/lang/Float.floatToIntBits + 311492 1 java/lang/Float.floatToRawIntBits + 311492 1 java/lang/IncompatibleClassChangeError.<init> + 311492 1 java/lang/Integer.<clinit> + 311492 1 java/lang/LinkageError.<init> + 311492 1 java/lang/Long.<clinit> + 311492 1 java/lang/Math.<clinit> + 311492 1 java/lang/NoSuchMethodError.<init> + 311492 1 java/lang/Object.<clinit> + 311492 1 java/lang/Object.notifyAll + 311492 1 java/lang/Object.registerNatives + 311492 1 java/lang/Runtime.<clinit> + 311492 1 java/lang/Runtime.<init> + 311492 1 java/lang/Runtime.loadLibrary0 + 311492 1 java/lang/Runtime.maxMemory + 311492 1 java/lang/Short.<clinit> + 311492 1 java/lang/Shutdown.<clinit> + 311492 1 java/lang/Shutdown.runHooks + 311492 1 java/lang/Shutdown.sequence + 311492 1 java/lang/Shutdown.shutdown + 311492 1 java/lang/String.<clinit> + 311492 1 java/lang/String.checkBounds + 311492 1 java/lang/String.length + 311492 1 java/lang/String.trim + 311492 1 java/lang/StringBuffer.<clinit> + 311492 1 java/lang/StringCoding$StringDecoder.decode + 311492 1 java/lang/StringCoding.<clinit> + 311492 1 java/lang/StringCoding.access$000 + 311492 1 java/lang/StringCoding.access$100 + 311492 1 java/lang/StringCoding.decode + 311492 1 java/lang/StringCoding.deref + 311492 1 java/lang/StringCoding.lookupCharset + 311492 1 java/lang/StringCoding.safeTrim + 311492 1 java/lang/StringCoding.scale + 311492 1 java/lang/StringCoding.set + 311492 1 java/lang/System$2.<init> + 311492 1 java/lang/System.<clinit> + 311492 1 java/lang/System.getCallerClass + 311492 1 java/lang/System.initProperties + 311492 1 java/lang/System.initializeSystemClass + 311492 1 java/lang/System.loadLibrary + 311492 1 java/lang/System.mapLibraryName + 311492 1 java/lang/System.nullInputStream + 311492 1 java/lang/System.registerNatives + 311492 1 java/lang/System.setErr0 + 311492 1 java/lang/System.setIn0 + 311492 1 java/lang/System.setOut0 + 311492 1 java/lang/SystemClassLoaderAction.<init> + 311492 1 java/lang/SystemClassLoaderAction.run + 311492 1 java/lang/Terminator$1.<init> + 311492 1 java/lang/Terminator.<clinit> + 311492 1 java/lang/Terminator.setup + 311492 1 java/lang/Thread.<clinit> + 311492 1 java/lang/Thread.exit + 311492 1 java/lang/Thread.getPriority + 311492 1 java/lang/Thread.interrupted + 311492 1 java/lang/Thread.isInterrupted + 311492 1 java/lang/Thread.registerNatives + 311492 1 java/lang/Thread.setContextClassLoader + 311492 1 java/lang/ThreadGroup.remove + 311492 1 java/lang/ThreadLocal$ThreadLocalMap$Entry.<init> + 311492 1 java/lang/ThreadLocal$ThreadLocalMap.<init> + 311492 1 java/lang/ThreadLocal$ThreadLocalMap.access$100 + 311492 1 java/lang/ThreadLocal$ThreadLocalMap.set + 311492 1 java/lang/ThreadLocal$ThreadLocalMap.setThreshold + 311492 1 java/lang/ThreadLocal.<clinit> + 311492 1 java/lang/ThreadLocal.createMap + 311492 1 java/lang/ThreadLocal.get + 311492 1 java/lang/ThreadLocal.initialValue + 311492 1 java/lang/ThreadLocal.set + 311492 1 java/lang/ThreadLocal.setInitialValue + 311492 1 java/lang/ref/Finalizer$FinalizerThread.<init> + 311492 1 java/lang/ref/Finalizer$FinalizerThread.run + 311492 1 java/lang/ref/Finalizer.<clinit> + 311492 1 java/lang/ref/Finalizer.access$000 + 311492 1 java/lang/ref/Reference$ReferenceHandler.<init> + 311492 1 java/lang/ref/Reference$ReferenceHandler.run + 311492 1 java/lang/ref/Reference.<clinit> + 311492 1 java/lang/ref/Reference.access$200 + 311492 1 java/lang/ref/ReferenceQueue.<clinit> + 311492 1 java/lang/ref/ReferenceQueue.reallyPoll + 311492 1 java/lang/reflect/AccessibleObject.<clinit> + 311492 1 java/lang/reflect/Constructor.<clinit> + 311492 1 java/lang/reflect/Field.<clinit> + 311492 1 java/lang/reflect/Field.getName + 311492 1 java/lang/reflect/Method.<clinit> + 311492 1 java/lang/reflect/Method.getModifiers + 311492 1 java/lang/reflect/Modifier.<clinit> + 311492 1 java/lang/reflect/Modifier.isVolatile + 311492 1 java/lang/reflect/ReflectAccess.<init> + 311492 1 java/lang/reflect/ReflectPermission.<init> + 311492 1 java/net/ContentHandler.<init> + 311492 1 java/net/Parts.getQuery + 311492 1 java/net/URL.<clinit> + 311492 1 java/net/URL.openConnection + 311492 1 java/net/URLClassLoader$7.<init> + 311492 1 java/net/URLClassLoader.<clinit> + 311492 1 java/net/URLClassLoader.access$000 + 311492 1 java/net/URLClassLoader.defineClass + 311492 1 java/net/URLClassLoader.getPermissions + 311492 1 java/net/URLConnection.<clinit> + 311492 1 java/net/URLConnection.<init> + 311492 1 java/net/UnknownContentHandler.<init> + 311492 1 java/nio/Bits.<clinit> + 311492 1 java/nio/ByteOrder.<clinit> + 311492 1 java/nio/charset/Charset.<clinit> + 311492 1 java/nio/charset/Charset.<init> + 311492 1 java/nio/charset/CharsetDecoder.<clinit> + 311492 1 java/nio/charset/CharsetDecoder.flush + 311492 1 java/nio/charset/CharsetDecoder.implFlush + 311492 1 java/nio/charset/CharsetEncoder.<clinit> + 311492 1 java/nio/charset/CoderResult$1.<init> + 311492 1 java/nio/charset/CoderResult$2.<init> + 311492 1 java/nio/charset/CoderResult.<clinit> + 311492 1 java/nio/charset/CodingErrorAction.<clinit> + 311492 1 java/nio/charset/spi/CharsetProvider.<init> + 311492 1 java/security/AccessControlContext.<clinit> + 311492 1 java/security/BasicPermission.newPermissionCollection + 311492 1 java/security/BasicPermissionCollection.<clinit> + 311492 1 java/security/BasicPermissionCollection.<init> + 311492 1 java/security/BasicPermissionCollection.add + 311492 1 java/security/CodeSource.<init> + 311492 1 java/security/Permissions.<clinit> + 311492 1 java/security/Policy$UnsupportedEmptyCollection.<init> + 311492 1 java/security/Policy.<clinit> + 311492 1 java/security/PrivilegedActionException.<init> + 311492 1 java/security/ProtectionDomain.<clinit> + 311492 1 java/security/ProtectionDomain.<init> + 311492 1 java/security/SecureClassLoader.<clinit> + 311492 1 java/security/SecureClassLoader.check + 311492 1 java/security/SecureClassLoader.defineClass + 311492 1 java/security/SecureClassLoader.getPermissions + 311492 1 java/security/SecureClassLoader.getProtectionDomain + 311492 1 java/util/AbstractCollection.toArray + 311492 1 java/util/BitSet.<clinit> + 311492 1 java/util/BitSet.<init> + 311492 1 java/util/BitSet.initWords + 311492 1 java/util/Collections$SynchronizedMap.<init> + 311492 1 java/util/Collections.<clinit> + 311492 1 java/util/Collections.reverse + 311492 1 java/util/Collections.synchronizedMap + 311492 1 java/util/HashMap$KeySet.iterator + 311492 1 java/util/HashMap.keySet + 311492 1 java/util/HashMap.size + 311492 1 java/util/HashSet.<clinit> + 311492 1 java/util/HashSet.iterator + 311492 1 java/util/HashSet.size + 311492 1 java/util/Hashtable$EmptyEnumerator.<init> + 311492 1 java/util/Hashtable$EmptyIterator.<init> + 311492 1 java/util/Hashtable.<clinit> + 311492 1 java/util/IdentityHashMap.<clinit> + 311492 1 java/util/IdentityHashMap.<init> + 311492 1 java/util/IdentityHashMap.access$000 + 311492 1 java/util/IdentityHashMap.access$200 + 311492 1 java/util/IdentityHashMap.init + 311492 1 java/util/IdentityHashMap.keySet + 311492 1 java/util/LinkedHashMap$LinkedHashIterator.hasNext + 311492 1 java/util/LinkedHashMap.newKeyIterator + 311492 1 java/util/LinkedHashSet.<init> + 311492 1 java/util/Locale.<clinit> + 311492 1 java/util/Locale.getInstance + 311492 1 java/util/Properties.<clinit> + 311492 1 java/util/StringTokenizer.countTokens + 311492 1 java/util/StringTokenizer.hasMoreTokens + 311492 1 java/util/Vector.contains + 311492 1 java/util/Vector.copyInto + 311492 1 java/util/Vector.indexOf + 311492 1 java/util/concurrent/ConcurrentHashMap$Segment.get + 311492 1 java/util/concurrent/ConcurrentHashMap$Segment.getFirst + 311492 1 java/util/concurrent/ConcurrentHashMap$Segment.newArray + 311492 1 java/util/concurrent/ConcurrentHashMap.get + 311492 1 java/util/concurrent/atomic/AtomicInteger.<clinit> + 311492 1 java/util/concurrent/atomic/AtomicInteger.<init> + 311492 1 java/util/concurrent/atomic/AtomicInteger.get + 311492 1 java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl.<clinit> + 311492 1 java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl.<init> + 311492 1 java/util/concurrent/atomic/AtomicReferenceFieldUpdater.<init> + 311492 1 java/util/concurrent/atomic/AtomicReferenceFieldUpdater.newUpdater + 311492 1 java/util/concurrent/locks/AbstractQueuedSynchronizer.<clinit> + 311492 1 java/util/concurrent/locks/AbstractQueuedSynchronizer.getState + 311492 1 java/util/jar/JarEntry.<init> + 311492 1 java/util/jar/JarFile$JarFileEntry.<init> + 311492 1 java/util/jar/JarFile.<clinit> + 311492 1 java/util/jar/JarFile.getManEntry + 311492 1 java/util/jar/JarFile.hasClassPathAttribute + 311492 1 java/util/jar/JarFile.isKnownToNotHaveClassPathAttribute + 311492 1 java/util/jar/JavaUtilJarAccessImpl.<init> + 311492 1 java/util/jar/JavaUtilJarAccessImpl.jarFileHasClassPathAttribute + 311492 1 java/util/zip/Inflater.<clinit> + 311492 1 java/util/zip/Inflater.<init> + 311492 1 java/util/zip/Inflater.finished + 311492 1 java/util/zip/Inflater.init + 311492 1 java/util/zip/Inflater.initIDs + 311492 1 java/util/zip/Inflater.needsDictionary + 311492 1 java/util/zip/Inflater.needsInput + 311492 1 java/util/zip/Inflater.setInput + 311492 1 java/util/zip/InflaterInputStream.<init> + 311492 1 java/util/zip/InflaterInputStream.ensureOpen + 311492 1 java/util/zip/InflaterInputStream.read + 311492 1 java/util/zip/ZipEntry.<clinit> + 311492 1 java/util/zip/ZipEntry.getSize + 311492 1 java/util/zip/ZipEntry.initFields + 311492 1 java/util/zip/ZipEntry.initIDs + 311492 1 java/util/zip/ZipFile$1.<init> + 311492 1 java/util/zip/ZipFile$1.close + 311492 1 java/util/zip/ZipFile$1.fill + 311492 1 java/util/zip/ZipFile$ZipFileInputStream.<init> + 311492 1 java/util/zip/ZipFile$ZipFileInputStream.read + 311492 1 java/util/zip/ZipFile.<clinit> + 311492 1 java/util/zip/ZipFile.<init> + 311492 1 java/util/zip/ZipFile.access$000 + 311492 1 java/util/zip/ZipFile.access$1000 + 311492 1 java/util/zip/ZipFile.access$1100 + 311492 1 java/util/zip/ZipFile.access$1200 + 311492 1 java/util/zip/ZipFile.access$800 + 311492 1 java/util/zip/ZipFile.access$900 + 311492 1 java/util/zip/ZipFile.ensureOpenOrZipException + 311492 1 java/util/zip/ZipFile.getCSize + 311492 1 java/util/zip/ZipFile.getInflater + 311492 1 java/util/zip/ZipFile.getMethod + 311492 1 java/util/zip/ZipFile.getTotal + 311492 1 java/util/zip/ZipFile.initIDs + 311492 1 java/util/zip/ZipFile.open + 311492 1 java/util/zip/ZipFile.read + 311492 1 java/util/zip/ZipFile.releaseInflater + 311492 1 sun/misc/ExtensionDependency.checkExtensionsDependencies + 311492 1 sun/misc/FileURLMapper.<init> + 311492 1 sun/misc/FileURLMapper.exists + 311492 1 sun/misc/JarIndex.getJarIndex + 311492 1 sun/misc/Launcher$AppClassLoader$1.<init> + 311492 1 sun/misc/Launcher$AppClassLoader$1.run + 311492 1 sun/misc/Launcher$AppClassLoader.<clinit> + 311492 1 sun/misc/Launcher$AppClassLoader.<init> + 311492 1 sun/misc/Launcher$AppClassLoader.getAppClassLoader + 311492 1 sun/misc/Launcher$AppClassLoader.getPermissions + 311492 1 sun/misc/Launcher$ExtClassLoader$1.<init> + 311492 1 sun/misc/Launcher$ExtClassLoader$1.run + 311492 1 sun/misc/Launcher$ExtClassLoader.<init> + 311492 1 sun/misc/Launcher$ExtClassLoader.getExtClassLoader + 311492 1 sun/misc/Launcher$ExtClassLoader.getExtDirs + 311492 1 sun/misc/Launcher$ExtClassLoader.getExtURLs + 311492 1 sun/misc/Launcher$Factory.<clinit> + 311492 1 sun/misc/Launcher.<clinit> + 311492 1 sun/misc/Launcher.<init> + 311492 1 sun/misc/Launcher.access$200 + 311492 1 sun/misc/Launcher.access$300 + 311492 1 sun/misc/Launcher.getClassPath + 311492 1 sun/misc/Launcher.getLauncher + 311492 1 sun/misc/Launcher.pathToURLs + 311492 1 sun/misc/MetaIndex.<clinit> + 311492 1 sun/misc/Resource.<init> + 311492 1 sun/misc/Resource.getByteBuffer + 311492 1 sun/misc/Resource.getBytes + 311492 1 sun/misc/Resource.getCodeSigners + 311492 1 sun/misc/SharedSecrets.<clinit> + 311492 1 sun/misc/SharedSecrets.getJavaIOAccess + 311492 1 sun/misc/SharedSecrets.getJavaIODeleteOnExitAccess + 311492 1 sun/misc/SharedSecrets.javaUtilJarAccess + 311492 1 sun/misc/SharedSecrets.setJavaIOAccess + 311492 1 sun/misc/SharedSecrets.setJavaIODeleteOnExitAccess + 311492 1 sun/misc/SharedSecrets.setJavaLangAccess + 311492 1 sun/misc/SharedSecrets.setJavaNetAccess + 311492 1 sun/misc/SharedSecrets.setJavaUtilJarAccess + 311492 1 sun/misc/Signal.<clinit> + 311492 1 sun/misc/SignalHandler.<clinit> + 311492 1 sun/misc/SoftCache.<init> + 311492 1 sun/misc/URLClassPath$FileLoader$1.<init> + 311492 1 sun/misc/URLClassPath$FileLoader$1.getCodeSourceURL + 311492 1 sun/misc/URLClassPath$FileLoader$1.getContentLength + 311492 1 sun/misc/URLClassPath$FileLoader$1.getInputStream + 311492 1 sun/misc/URLClassPath$FileLoader.<init> + 311492 1 sun/misc/URLClassPath$FileLoader.getResource + 311492 1 sun/misc/URLClassPath$JarLoader$1.<init> + 311492 1 sun/misc/URLClassPath$JarLoader$1.run + 311492 1 sun/misc/URLClassPath$JarLoader.access$502 + 311492 1 sun/misc/URLClassPath$JarLoader.access$600 + 311492 1 sun/misc/URLClassPath$JarLoader.access$702 + 311492 1 sun/misc/URLClassPath$JarLoader.getJarFile + 311492 1 sun/misc/URLClassPath$JarLoader.parseExtensionsDependencies + 311492 1 sun/misc/URLClassPath$Loader.getClassPath + 311492 1 sun/misc/URLClassPath.<clinit> + 311492 1 sun/misc/URLClassPath.access$300 + 311492 1 sun/misc/Unsafe.<clinit> + 311492 1 sun/misc/Unsafe.<init> + 311492 1 sun/misc/Unsafe.allocateMemory + 311492 1 sun/misc/Unsafe.ensureClassInitialized + 311492 1 sun/misc/Unsafe.freeMemory + 311492 1 sun/misc/Unsafe.getByte + 311492 1 sun/misc/Unsafe.putLong + 311492 1 sun/misc/Unsafe.registerNatives + 311492 1 sun/misc/VM.<clinit> + 311492 1 sun/misc/VM.booted + 311492 1 sun/misc/VM.initialize + 311492 1 sun/misc/VM.initializeOSEnvironment + 311492 1 sun/misc/Version.<clinit> + 311492 1 sun/net/www/MessageHeader.<init> + 311492 1 sun/net/www/MessageHeader.grow + 311492 1 sun/net/www/ParseUtil.<clinit> + 311492 1 sun/net/www/URLConnection.<init> + 311492 1 sun/net/www/protocol/file/FileURLConnection.<clinit> + 311492 1 sun/net/www/protocol/file/FileURLConnection.<init> + 311492 1 sun/net/www/protocol/file/FileURLConnection.getPermission + 311492 1 sun/net/www/protocol/file/Handler.<init> + 311492 1 sun/net/www/protocol/file/Handler.createFileURLConnection + 311492 1 sun/nio/cs/FastCharsetProvider.<init> + 311492 1 sun/nio/cs/StandardCharsets$Aliases.init + 311492 1 sun/nio/cs/StandardCharsets$Cache.init + 311492 1 sun/nio/cs/StandardCharsets$Classes.init + 311492 1 sun/nio/cs/StandardCharsets.<clinit> + 311492 1 sun/nio/cs/StandardCharsets.<init> + 311492 1 sun/nio/cs/StreamDecoder.<clinit> + 311492 1 sun/nio/cs/StreamDecoder.close + 311492 1 sun/nio/cs/StreamDecoder.forInputStreamReader + 311492 1 sun/nio/cs/StreamDecoder.implClose + 311492 1 sun/nio/cs/StreamDecoder.inReady + 311492 1 sun/nio/cs/StreamEncoder.<clinit> + 311492 1 sun/nio/cs/Surrogate$Parser.<clinit> + 311492 1 sun/nio/cs/US_ASCII$Decoder.<clinit> + 311492 1 sun/nio/cs/US_ASCII$Encoder.<clinit> + 311492 1 sun/nio/cs/US_ASCII.<init> + 311492 1 sun/reflect/Reflection.<clinit> + 311492 1 sun/reflect/ReflectionFactory$1.<init> + 311492 1 sun/reflect/ReflectionFactory$1.run + 311492 1 sun/reflect/ReflectionFactory.<clinit> + 311492 1 sun/reflect/ReflectionFactory.<init> + 311492 1 sun/reflect/ReflectionFactory.access$202 + 311492 1 sun/reflect/ReflectionFactory.setLangReflectAccess + 311492 1 sun/reflect/misc/ReflectUtil.ensureMemberAccess + 311492 1 sun/security/provider/PolicyFile.<clinit> + 311492 1 sun/security/util/Debug.<clinit> + 311492 2 java/io/BufferedInputStream.<init> + 311492 2 java/io/BufferedOutputStream.<init> + 311492 2 java/io/BufferedReader.<init> + 311492 2 java/io/BufferedReader.fill + 311492 2 java/io/ExpiringCache$1.<init> + 311492 2 java/io/File.list + 311492 2 java/io/FileInputStream.close + 311492 2 java/io/FileInputStream.close0 + 311492 2 java/io/FileInputStream.open + 311492 2 java/io/FileOutputStream.<init> + 311492 2 java/io/FilePermission$1.<init> + 311492 2 java/io/FilePermission.<init> + 311492 2 java/io/FilePermission.getMask + 311492 2 java/io/FilePermission.init + 311492 2 java/io/FileSystem.getBooleanProperty + 311492 2 java/io/InputStreamReader.read + 311492 2 java/io/OutputStreamWriter.<init> + 311492 2 java/io/PrintStream.init + 311492 2 java/io/UnixFileSystem.list + 311492 2 java/lang/Character.charCount + 311492 2 java/lang/CharacterDataLatin1.toUpperCase + 311492 2 java/lang/Class$1.<init> + 311492 2 java/lang/Class$1.run + 311492 2 java/lang/Class.arrayContentsEq + 311492 2 java/lang/Class.getConstructor0 + 311492 2 java/lang/Class.getDeclaredConstructors0 + 311492 2 java/lang/Class.isInterface + 311492 2 java/lang/Class.privateGetDeclaredConstructors + 311492 2 java/lang/ClassLoader.<init> + 311492 2 java/lang/ClassLoader.initializePath + 311492 2 java/lang/ClassNotFoundException.<init> + 311492 2 java/lang/Object.clone + 311492 2 java/lang/Runtime.getRuntime + 311492 2 java/lang/String$CaseInsensitiveComparator.<init> + 311492 2 java/lang/String.concat + 311492 2 java/lang/String.regionMatches + 311492 2 java/lang/StringCoding$StringDecoder.<init> + 311492 2 java/lang/System.getProperties + 311492 2 java/lang/System.nullPrintStream + 311492 2 java/lang/System.setProperties + 311492 2 java/lang/Thread.isAlive + 311492 2 java/lang/Thread.setDaemon + 311492 2 java/lang/Thread.start + 311492 2 java/lang/Thread.start0 + 311492 2 java/lang/ThreadGroup.<init> + 311492 2 java/lang/ref/Reference$Lock.<init> + 311492 2 java/lang/ref/Reference.access$100 + 311492 2 java/lang/ref/ReferenceQueue.remove + 311492 2 java/lang/ref/SoftReference.get + 311492 2 java/lang/reflect/AccessibleObject.setAccessible + 311492 2 java/lang/reflect/AccessibleObject.setAccessible0 + 311492 2 java/lang/reflect/Constructor.<init> + 311492 2 java/lang/reflect/Constructor.acquireConstructorAccessor + 311492 2 java/lang/reflect/Constructor.copy + 311492 2 java/lang/reflect/Constructor.getParameterTypes + 311492 2 java/lang/reflect/Modifier.isAbstract + 311492 2 java/lang/reflect/Modifier.isProtected + 311492 2 java/lang/reflect/ReflectAccess.copyConstructor + 311492 2 java/net/URL.set + 311492 2 java/net/URLClassLoader$1.<init> + 311492 2 java/net/URLClassLoader$1.run + 311492 2 java/net/URLClassLoader.<init> + 311492 2 java/net/URLClassLoader.findClass + 311492 2 java/net/URLStreamHandler.parseURL + 311492 2 java/net/URLStreamHandler.setURL + 311492 2 java/nio/ByteOrder.<init> + 311492 2 java/nio/CharBuffer.allocate + 311492 2 java/nio/HeapByteBuffer.compact + 311492 2 java/nio/charset/Charset.cache + 311492 2 java/nio/charset/CharsetDecoder.reset + 311492 2 java/nio/charset/CharsetEncoder.isLegalReplacement + 311492 2 java/nio/charset/CharsetEncoder.onMalformedInput + 311492 2 java/nio/charset/CharsetEncoder.onUnmappableCharacter + 311492 2 java/nio/charset/CharsetEncoder.replaceWith + 311492 2 java/nio/charset/CoderResult.<init> + 311492 2 java/nio/charset/CoderResult.isError + 311492 2 java/security/AccessControlContext.<init> + 311492 2 java/security/BasicPermission.getCanonicalName + 311492 2 java/security/CodeSource.getCertificates + 311492 2 java/security/CodeSource.hashCode + 311492 2 java/security/PermissionCollection.setReadOnly + 311492 2 java/security/Permissions.<init> + 311492 2 java/security/Permissions.add + 311492 2 java/security/Permissions.getPermissionCollection + 311492 2 java/security/SecureClassLoader.<init> + 311492 2 java/util/AbstractList.iterator + 311492 2 java/util/BitSet.ensureCapacity + 311492 2 java/util/Collections$EmptyList.<init> + 311492 2 java/util/Collections$EmptyMap.<init> + 311492 2 java/util/Collections$EmptySet.<init> + 311492 2 java/util/Collections$ReverseComparator.<init> + 311492 2 java/util/HashMap$KeySet.<init> + 311492 2 java/util/IdentityHashMap$IdentityHashMapIterator.hasNext + 311492 2 java/util/IdentityHashMap$KeySet.<init> + 311492 2 java/util/IdentityHashMap$KeySet.iterator + 311492 2 java/util/LinkedHashMap$KeyIterator.<init> + 311492 2 java/util/LinkedHashMap$LinkedHashIterator.<init> + 311492 2 java/util/Properties.<init> + 311492 2 java/util/StringTokenizer.setMaxDelimCodePoint + 311492 2 java/util/concurrent/ConcurrentHashMap.<init> + 311492 2 java/util/jar/JarFile.<init> + 311492 2 java/util/zip/Inflater.inflate + 311492 2 java/util/zip/Inflater.inflateBytes + 311492 2 java/util/zip/ZipEntry.<init> + 311492 2 java/util/zip/ZipFile$ZipFileInputStream.close + 311492 2 java/util/zip/ZipFile.freeEntry + 311492 2 java/util/zip/ZipFile.getInputStream + 311492 2 java/util/zip/ZipFile.getSize + 311492 2 sun/misc/FileURLMapper.getPath + 311492 2 sun/misc/Launcher$Factory.<init> + 311492 2 sun/misc/Launcher$Factory.createURLStreamHandler + 311492 2 sun/misc/Launcher.access$100 + 311492 2 sun/misc/MetaIndex.registerDirectory + 311492 2 sun/misc/NativeSignalHandler.<init> + 311492 2 sun/misc/Resource.cachedInputStream + 311492 2 sun/misc/URLClassPath.<init> + 311492 2 sun/misc/URLClassPath.getResource + 311492 2 sun/misc/URLClassPath.push + 311492 2 sun/misc/VM.maxDirectMemory + 311492 2 sun/misc/Version.init + 311492 2 sun/net/www/protocol/file/Handler.openConnection + 311492 2 sun/net/www/protocol/file/Handler.parseURL + 311492 2 sun/net/www/protocol/jar/Handler.<init> + 311492 2 sun/nio/cs/FastCharsetProvider.charsetForName + 311492 2 sun/nio/cs/FastCharsetProvider.lookup + 311492 2 sun/nio/cs/FastCharsetProvider.toLower + 311492 2 sun/nio/cs/StandardCharsets$Aliases.<init> + 311492 2 sun/nio/cs/StandardCharsets$Cache.<init> + 311492 2 sun/nio/cs/StandardCharsets$Classes.<init> + 311492 2 sun/nio/cs/StreamDecoder.<init> + 311492 2 sun/nio/cs/StreamDecoder.ensureOpen + 311492 2 sun/nio/cs/StreamDecoder.implRead + 311492 2 sun/nio/cs/StreamDecoder.read + 311492 2 sun/nio/cs/StreamDecoder.readBytes + 311492 2 sun/nio/cs/StreamEncoder.forOutputStreamWriter + 311492 2 sun/nio/cs/Surrogate$Parser.<init> + 311492 2 sun/nio/cs/US_ASCII.newEncoder + 311492 2 sun/reflect/DelegatingConstructorAccessorImpl.<init> + 311492 2 sun/reflect/DelegatingConstructorAccessorImpl.setDelegate + 311492 2 sun/reflect/NativeConstructorAccessorImpl.<init> + 311492 2 sun/reflect/NativeConstructorAccessorImpl.setParent + 311492 2 sun/reflect/Reflection.ensureMemberAccess + 311492 2 sun/reflect/Reflection.isSubclassOf + 311492 2 sun/reflect/Reflection.verifyMemberAccess + 311492 2 sun/reflect/ReflectionFactory.checkInitted + 311492 2 sun/reflect/ReflectionFactory.copyConstructor + 311492 2 sun/reflect/ReflectionFactory.newConstructorAccessor + 311492 2 sun/reflect/misc/ReflectUtil.checkPackageAccess + 311492 2 sun/security/provider/PolicyFile.canonPath + 311492 2 sun/util/PreHashedMap.put + 311492 3 java/io/BufferedWriter.newLine + 311492 3 java/io/FileInputStream.<init> + 311492 3 java/io/FileInputStream.read + 311492 3 java/io/FileInputStream.readBytes + 311492 3 java/io/FilterInputStream.<init> + 311492 3 java/io/PrintStream.newLine + 311492 3 java/io/PrintStream.print + 311492 3 java/io/PrintStream.println + 311492 3 java/io/Reader.<init> + 311492 3 java/lang/Boolean.<init> + 311492 3 java/lang/Class$3.<init> + 311492 3 java/lang/Class$3.run + 311492 3 java/lang/Class.forName + 311492 3 java/lang/Class.forName0 + 311492 3 java/lang/Class.newInstance + 311492 3 java/lang/Class.newInstance0 + 311492 3 java/lang/Exception.<init> + 311492 3 java/lang/Integer.<init> + 311492 3 java/lang/Object.wait + 311492 3 java/lang/RuntimePermission.<init> + 311492 3 java/lang/Shutdown.add + 311492 3 java/lang/Thread.sleep + 311492 3 java/lang/ThreadLocal.<init> + 311492 3 java/lang/ThreadLocal.getMap + 311492 3 java/lang/ThreadLocal.nextHashCode + 311492 3 java/lang/ref/WeakReference.<init> + 311492 3 java/lang/reflect/Constructor.newInstance + 311492 3 java/net/URLStreamHandler.<init> + 311492 3 java/nio/ByteBuffer.allocate + 311492 3 java/nio/charset/Charset.defaultCharset + 311492 3 java/nio/charset/Charset.lookup2 + 311492 3 java/nio/charset/CharsetDecoder.maxCharsPerByte + 311492 3 java/nio/charset/CodingErrorAction.<init> + 311492 3 java/util/AbstractList$Itr.checkForComodification + 311492 3 java/util/AbstractList$Itr.next + 311492 3 java/util/ArrayList.clear + 311492 3 java/util/HashSet.<init> + 311492 3 java/util/Hashtable.rehash + 311492 3 java/util/LinkedHashMap.<init> + 311492 3 java/util/LinkedHashMap.init + 311492 3 java/util/Stack.<init> + 311492 3 java/util/StringTokenizer.nextToken + 311492 3 java/util/concurrent/atomic/AtomicInteger.compareAndSet + 311492 3 java/util/concurrent/atomic/AtomicInteger.getAndAdd + 311492 3 java/util/jar/JarFile.getEntry + 311492 3 java/util/jar/JarFile.getJarEntry + 311492 3 java/util/zip/ZipFile.access$300 + 311492 3 sun/misc/Signal.<init> + 311492 3 sun/misc/Signal.findSignal + 311492 3 sun/misc/Signal.handle + 311492 3 sun/misc/Signal.handle0 + 311492 3 sun/misc/URLClassPath$JarLoader.ensureOpen + 311492 3 sun/reflect/DelegatingConstructorAccessorImpl.newInstance + 311492 3 sun/reflect/NativeConstructorAccessorImpl.newInstance + 311492 3 sun/reflect/NativeConstructorAccessorImpl.newInstance0 + 311492 3 sun/reflect/Reflection.getClassAccessFlags + 311492 3 sun/reflect/Reflection.quickCheckMemberAccess + 311492 3 sun/reflect/ReflectionFactory.inflationThreshold + 311492 3 sun/util/PreHashedMap.<init> + 311492 4 java/io/BufferedWriter.<init> + 311492 4 java/io/ExpiringCache$Entry.timestamp + 311492 4 java/io/ExpiringCache.<init> + 311492 4 java/io/File.compareTo + 311492 4 java/io/File.equals + 311492 4 java/io/FilePermission$1.run + 311492 4 java/io/FilterOutputStream.<init> + 311492 4 java/io/PrintStream.<init> + 311492 4 java/io/UnixFileSystem.compare + 311492 4 java/lang/Character.toUpperCase + 311492 4 java/lang/Class.getDeclaredFields0 + 311492 4 java/lang/Number.<init> + 311492 4 java/lang/Shutdown$Lock.<init> + 311492 4 java/lang/String.compareTo + 311492 4 java/lang/ThreadGroup.getParent + 311492 4 java/lang/Throwable.<init> + 311492 4 java/lang/Throwable.fillInStackTrace + 311492 4 java/lang/ref/ReferenceQueue$Null.<init> + 311492 4 java/lang/ref/ReferenceQueue.<init> + 311492 4 java/lang/reflect/Array.newArray + 311492 4 java/lang/reflect/Array.newInstance + 311492 4 java/lang/reflect/Constructor.setConstructorAccessor + 311492 4 java/lang/reflect/Modifier.isPublic + 311492 4 java/nio/HeapByteBuffer.ix + 311492 4 java/nio/charset/Charset.forName + 311492 4 java/nio/charset/CharsetDecoder.onMalformedInput + 311492 4 java/nio/charset/CharsetDecoder.onUnmappableCharacter + 311492 4 java/nio/charset/CharsetDecoder.replaceWith + 311492 4 java/nio/charset/CharsetEncoder.<init> + 311492 4 java/nio/charset/CoderResult$Cache.<init> + 311492 4 java/security/BasicPermission.<init> + 311492 4 java/security/BasicPermission.init + 311492 4 java/util/AbstractList$Itr.<init> + 311492 4 java/util/ArrayList.toArray + 311492 4 java/util/Collections$SynchronizedMap.get + 311492 4 java/util/IdentityHashMap$IdentityHashMapIterator.<init> + 311492 4 java/util/IdentityHashMap$KeyIterator.<init> + 311492 4 java/util/LinkedHashMap$Entry.recordAccess + 311492 4 java/util/StringTokenizer.<init> + 311492 4 java/util/zip/ZipFile.ensureOpen + 311492 4 sun/misc/MetaIndex.<init> + 311492 4 sun/misc/MetaIndex.mayContain + 311492 4 sun/nio/cs/FastCharsetProvider.canonicalize + 311492 4 sun/nio/cs/StreamEncoder.<init> + 311492 4 sun/nio/cs/US_ASCII$Encoder.<init> + 311492 4 sun/nio/cs/US_ASCII.newDecoder + 311492 4 sun/reflect/ConstructorAccessorImpl.<init> + 311492 4 sun/reflect/MagicAccessorImpl.<init> + 311492 4 sun/reflect/Reflection.filterFields + 311492 4 sun/reflect/ReflectionFactory$GetReflectionFactoryAction.<init> + 311492 4 sun/reflect/ReflectionFactory$GetReflectionFactoryAction.run + 311492 4 sun/reflect/ReflectionFactory.getReflectionFactory + 311492 4 sun/security/util/Debug.isOn + 311492 5 java/io/FileDescriptor.<init> + 311492 5 java/lang/Class.getModifiers + 311492 5 java/lang/Class.getName0 + 311492 5 java/lang/String.valueOf + 311492 5 java/nio/ByteBuffer.wrap + 311492 5 java/nio/charset/Charset.isSupported + 311492 5 java/security/PermissionCollection.<init> + 311492 5 java/util/AbstractList$Itr.hasNext + 311492 5 java/util/Hashtable.remove + 311492 5 java/util/StringTokenizer.scanToken + 311492 5 java/util/StringTokenizer.skipDelimiters + 311492 5 sun/misc/MetaIndex.forJar + 311492 5 sun/misc/URLClassPath$JarLoader.<init> + 311492 5 sun/misc/URLClassPath$JarLoader.getClassPath + 311492 5 sun/misc/URLClassPath$JarLoader.getResource + 311492 5 sun/misc/Unsafe.getUnsafe + 311492 5 sun/util/PreHashedMap.toV + 311492 6 java/io/BufferedOutputStream.write + 311492 6 java/io/BufferedWriter.flushBuffer + 311492 6 java/io/BufferedWriter.min + 311492 6 java/io/BufferedWriter.write + 311492 6 java/io/File.getAbsolutePath + 311492 6 java/io/FileOutputStream.write + 311492 6 java/io/FileOutputStream.writeBytes + 311492 6 java/io/OutputStream.<init> + 311492 6 java/io/OutputStreamWriter.flushBuffer + 311492 6 java/io/OutputStreamWriter.write + 311492 6 java/io/UnixFileSystem.canonicalize0 + 311492 6 java/io/Writer.<init> + 311492 6 java/io/Writer.write + 311492 6 java/lang/Class.checkMemberAccess + 311492 6 java/lang/Class.getComponentType + 311492 6 java/lang/Class.getDeclaredField + 311492 6 java/lang/Class.getName + 311492 6 java/lang/Class.getSuperclass + 311492 6 java/lang/Class.privateGetDeclaredFields + 311492 6 java/lang/Class.searchFields + 311492 6 java/lang/ThreadGroup.add + 311492 6 java/lang/reflect/Field.<init> + 311492 6 java/lang/reflect/Field.copy + 311492 6 java/lang/reflect/ReflectAccess.copyField + 311492 6 java/net/URL.getURLStreamHandler + 311492 6 java/net/URL.toExternalForm + 311492 6 java/net/URL.toString + 311492 6 java/net/URLStreamHandler.getDefaultPort + 311492 6 java/net/URLStreamHandler.getHostAddress + 311492 6 java/net/URLStreamHandler.hashCode + 311492 6 java/net/URLStreamHandler.toExternalForm + 311492 6 java/nio/Bits.byteOrder + 311492 6 java/nio/Buffer.clear + 311492 6 java/nio/ByteBuffer.<init> + 311492 6 java/nio/HeapByteBuffer.<init> + 311492 6 java/nio/charset/CharsetDecoder.decode + 311492 6 java/nio/charset/CharsetEncoder.encode + 311492 6 java/security/Permission.<init> + 311492 6 java/util/AbstractSet.<init> + 311492 6 java/util/HashMap.containsKey + 311492 6 java/util/Vector.add + 311492 6 java/util/concurrent/ConcurrentHashMap$Segment.rehash + 311492 6 sun/misc/Launcher.getFileURL + 311492 6 sun/misc/MetaIndex.getJarMap + 311492 6 sun/misc/URLClassPath$3.<init> + 311492 6 sun/misc/URLClassPath$3.run + 311492 6 sun/misc/URLClassPath$JarLoader.isOptimizable + 311492 6 sun/misc/URLClassPath$Loader.<init> + 311492 6 sun/misc/Unsafe.objectFieldOffset + 311492 6 sun/net/www/ParseUtil.fileToEncodedURL + 311492 6 sun/nio/cs/StreamEncoder.ensureOpen + 311492 6 sun/nio/cs/StreamEncoder.flushBuffer + 311492 6 sun/nio/cs/StreamEncoder.implFlushBuffer + 311492 6 sun/nio/cs/StreamEncoder.implWrite + 311492 6 sun/nio/cs/StreamEncoder.write + 311492 6 sun/nio/cs/StreamEncoder.writeBytes + 311492 6 sun/nio/cs/US_ASCII$Decoder.decodeArrayLoop + 311492 6 sun/nio/cs/US_ASCII$Decoder.decodeLoop + 311492 6 sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop + 311492 6 sun/nio/cs/US_ASCII$Encoder.encodeLoop + 311492 6 sun/reflect/ReflectionFactory.copyField + 311492 7 java/io/File.getCanonicalFile + 311492 7 java/io/InputStream.<init> + 311492 7 java/lang/ClassLoader.checkPackageAccess + 311492 7 java/lang/ref/SoftReference.<init> + 311492 7 java/util/Dictionary.<init> + 311492 7 java/util/HashSet.add + 311492 7 java/util/Stack.empty + 311492 7 java/util/Stack.pop + 311492 7 java/util/Stack.push + 311492 7 java/util/Vector.removeElementAt + 311492 7 java/util/zip/ZipFile.getEntry + 311492 7 sun/util/PreHashedMap.get + 311492 8 java/lang/Class.checkInitted + 311492 8 java/lang/Class.clearCachesOnClassRedefinition + 311492 8 java/lang/Class.getPrimitiveClass + 311492 8 java/lang/Class.getReflectionFactory + 311492 8 java/lang/Object.getClass + 311492 8 java/lang/System.setProperty + 311492 8 java/lang/Thread.<init> + 311492 8 java/lang/Thread.getContextClassLoader + 311492 8 java/lang/Thread.init + 311492 8 java/lang/Thread.nextThreadID + 311492 8 java/lang/ThreadGroup.addUnstarted + 311492 8 java/lang/ref/FinalReference.<init> + 311492 8 java/lang/ref/Finalizer.<init> + 311492 8 java/lang/ref/Finalizer.add + 311492 8 java/lang/ref/Finalizer.register + 311492 8 java/lang/ref/ReferenceQueue$Lock.<init> + 311492 8 java/lang/reflect/AccessibleObject.<init> + 311492 8 java/nio/charset/CharsetDecoder.<init> + 311492 8 java/security/AccessControlContext.optimize + 311492 8 java/security/AccessController.getInheritedAccessControlContext + 311492 8 java/util/Properties.setProperty + 311492 8 java/util/Stack.peek + 311492 8 sun/nio/cs/US_ASCII$Decoder.<init> + 311492 8 sun/reflect/ReflectionFactory.langReflectAccess + 311492 8 sun/security/util/Debug.getInstance + 311492 9 java/io/BufferedOutputStream.flush + 311492 9 java/io/BufferedOutputStream.flushBuffer + 311492 9 java/io/File.hashCode + 311492 9 java/io/File.isDirectory + 311492 9 java/io/PrintStream.write + 311492 9 java/io/UnixFileSystem.hashCode + 311492 9 java/lang/ClassLoader.findBootstrapClass + 311492 9 java/lang/ClassLoader.findBootstrapClass0 + 311492 9 java/lang/ClassLoader.getCallerClassLoader + 311492 9 java/lang/ClassLoader.loadClassInternal + 311492 9 java/lang/StringBuffer.<init> + 311492 9 java/lang/StringBuffer.toString + 311492 9 java/nio/Buffer.flip + 311492 9 java/util/ArrayList.RangeCheck + 311492 9 java/util/ArrayList.get + 311492 9 sun/misc/Launcher$AppClassLoader.loadClass + 311492 9 sun/net/www/ParseUtil.decode + 311492 9 sun/net/www/ParseUtil.lowMask + 311492 10 java/io/File.getCanonicalPath + 311492 10 java/io/ObjectStreamClass.getClassSignature + 311492 10 java/io/UnixFileSystem.canonicalize + 311492 10 java/lang/Class.isPrimitive + 311492 10 java/lang/Thread.setPriority + 311492 10 java/lang/Thread.setPriority0 + 311492 10 java/nio/CharBuffer.wrap + 311492 10 java/nio/charset/Charset.lookup + 311492 10 java/security/AccessController.getContext + 311492 10 java/security/AccessController.getStackAccessControlContext + 311492 10 java/util/Vector.addElement + 311492 11 java/lang/String.replace + 311492 11 java/lang/ThreadGroup.checkAccess + 311492 11 java/net/Parts.<init> + 311492 11 java/nio/CharBuffer.<init> + 311492 11 java/nio/HeapCharBuffer.<init> + 311492 12 java/io/BufferedWriter.ensureOpen + 311492 12 java/io/ExpiringCache$1.removeEldestEntry + 311492 12 java/io/ExpiringCache$Entry.<init> + 311492 12 java/io/ExpiringCache.put + 311492 12 java/io/File.exists + 311492 12 java/io/PrintStream.ensureOpen + 311492 12 java/lang/Class.isArray + 311492 12 java/lang/Thread.checkAccess + 311492 12 java/nio/ByteBuffer.hasArray + 311492 12 java/nio/CharBuffer.array + 311492 12 java/nio/CharBuffer.hasArray + 311492 12 java/nio/charset/CoderResult.isOverflow + 311492 12 java/util/HashMap.get + 311492 12 java/util/LinkedHashMap$Entry.access$600 + 311492 12 java/util/LinkedHashMap$Entry.addBefore + 311492 12 java/util/LinkedHashMap.addEntry + 311492 12 java/util/LinkedHashMap.createEntry + 311492 12 sun/net/www/ParseUtil.highMask + 311492 13 java/io/UnixFileSystem.parentOrNull + 311492 13 java/nio/Buffer.hasRemaining + 311492 13 java/nio/Buffer.remaining + 311492 13 sun/misc/URLClassPath.getLoader + 311492 13 sun/net/www/ParseUtil.encodePath + 311492 14 java/lang/Float.isNaN + 311492 14 java/net/URL.hashCode + 311492 14 java/util/Hashtable.<init> + 311492 15 java/lang/Object.hashCode + 311492 15 java/nio/charset/Charset.checkName + 311492 15 java/util/ArrayList.<init> + 311492 15 java/util/HashMap.addEntry + 311492 15 java/util/LinkedHashMap$Entry.<init> + 311492 16 java/io/UnixFileSystem.isAbsolute + 311492 16 java/lang/ClassLoader$NativeLibrary.find + 311492 16 java/lang/String.intern + 311492 16 java/util/Vector.ensureCapacityHelper + 311492 16 java/util/concurrent/ConcurrentHashMap$Segment.<init> + 311492 16 java/util/concurrent/ConcurrentHashMap$Segment.setTable + 311492 16 java/util/concurrent/locks/AbstractOwnableSynchronizer.<init> + 311492 16 java/util/concurrent/locks/AbstractQueuedSynchronizer.<init> + 311492 16 java/util/concurrent/locks/ReentrantLock$NonfairSync.<init> + 311492 16 java/util/concurrent/locks/ReentrantLock$Sync.<init> + 311492 16 java/util/concurrent/locks/ReentrantLock.<init> + 311492 16 sun/reflect/Reflection.getCallerClass + 311492 17 java/lang/ClassLoader.findNative + 311492 17 java/lang/Math.max + 311492 17 java/lang/String.toCharArray + 311492 17 java/nio/Buffer.<init> + 311492 17 java/util/Locale.getDefault + 311492 17 sun/security/action/GetPropertyAction.<init> + 311492 18 java/io/ExpiringCache.get + 311492 18 java/lang/Class.desiredAssertionStatus + 311492 18 java/lang/Class.desiredAssertionStatus0 + 311492 18 java/lang/ClassLoader.findLoadedClass + 311492 18 java/lang/ClassLoader.findLoadedClass0 + 311492 19 java/io/BufferedReader.ensureOpen + 311492 19 java/lang/System.currentTimeMillis + 311492 19 java/nio/Buffer.limit + 311492 19 java/util/Locale.<init> + 311492 19 java/util/Locale.createSingleton + 311492 19 java/util/concurrent/ConcurrentHashMap$Segment.put + 311492 19 java/util/concurrent/ConcurrentHashMap.put + 311492 19 java/util/concurrent/locks/AbstractQueuedSynchronizer.compareAndSetState + 311492 19 java/util/concurrent/locks/AbstractQueuedSynchronizer.release + 311492 19 java/util/concurrent/locks/AbstractQueuedSynchronizer.setState + 311492 19 java/util/concurrent/locks/ReentrantLock$NonfairSync.lock + 311492 19 java/util/concurrent/locks/ReentrantLock$Sync.tryRelease + 311492 19 java/util/concurrent/locks/ReentrantLock.lock + 311492 19 java/util/concurrent/locks/ReentrantLock.unlock + 311492 20 java/io/ObjectStreamField.<init> + 311492 20 java/nio/ByteBuffer.array + 311492 20 java/util/AbstractList.<init> + 311492 20 java/util/BitSet.get + 311492 20 java/util/concurrent/ConcurrentHashMap.hash + 311492 20 java/util/concurrent/ConcurrentHashMap.segmentFor + 311492 20 sun/misc/VM.isBooted + 311492 21 java/io/File.getName + 311492 21 java/io/UnixFileSystem.getBooleanAttributes + 311492 21 java/io/UnixFileSystem.getBooleanAttributes0 + 311492 21 java/lang/StringBuffer.append + 311492 21 java/nio/charset/Charset.atBugLevel + 311492 22 java/util/concurrent/ConcurrentHashMap$HashEntry.newArray + 311492 22 sun/misc/Unsafe.compareAndSwapInt + 311492 23 java/util/HashMap.<init> + 311492 23 java/util/concurrent/ConcurrentHashMap$HashEntry.<init> + 311492 24 java/nio/charset/CoderResult.isUnderflow + 311492 24 java/util/AbstractMap.<init> + 311492 24 java/util/Vector.elementAt + 311492 25 java/lang/Class.getClassLoader + 311492 26 java/util/AbstractCollection.<init> + 311492 26 java/util/ArrayList.add + 311492 26 java/util/ArrayList.ensureCapacity + 311492 27 java/lang/ClassLoader.loadClass + 311492 27 java/net/URL.<init> + 311492 28 java/lang/ClassLoader.check + 311492 28 java/lang/ClassLoader.checkName + 311492 28 java/lang/ref/Reference.<init> + 311492 29 java/lang/String.endsWith + 311492 29 sun/misc/VM.allowArraySyntax + 311492 30 java/io/ExpiringCache.entryFor + 311492 30 java/io/UnixFileSystem.resolve + 311492 30 java/util/HashMap$Entry.<init> + 311492 30 java/util/LinkedHashMap.get + 311492 33 java/util/HashMap.put + 311492 33 java/util/Vector.<init> + 311492 34 java/io/UnixFileSystem.normalize + 311492 34 java/lang/Class.getClassLoader0 + 311492 34 java/lang/String.toLowerCase + 311492 34 sun/security/action/GetPropertyAction.run + 311492 36 java/nio/CharBuffer.arrayOffset + 311492 36 java/util/HashMap.getEntry + 311492 37 java/io/File.<init> + 311492 37 java/io/UnixFileSystem.prefixLength + 311492 38 java/io/BufferedReader.readLine + 311492 38 java/util/concurrent/locks/AbstractOwnableSynchronizer.setExclusiveOwnerThread + 311492 41 java/lang/CharacterDataLatin1.toLowerCase + 311492 43 java/lang/CharacterDataLatin1.getProperties + 311492 43 java/security/AccessController.doPrivileged + 311492 43 java/util/Vector.size + 311492 44 java/nio/Buffer.position + 311492 44 java/nio/ByteBuffer.arrayOffset + 311492 48 java/lang/System.getProperty + 311492 50 java/util/Properties.getProperty + 311492 51 java/util/BitSet.expandTo + 311492 51 java/util/BitSet.set + 311492 56 java/lang/System.checkKey + 311492 57 java/lang/Thread.currentThread + 311492 57 java/util/Hashtable$Entry.<init> + 311492 59 java/util/Hashtable.get + 311492 63 java/util/Hashtable.put + 311492 71 java/util/BitSet.checkInvariants + 311492 72 java/util/BitSet.wordIndex + 311492 73 java/lang/StringBuilder.<init> + 311492 73 java/lang/StringBuilder.toString + 311492 81 java/lang/AbstractStringBuilder.expandCapacity + 311492 81 java/util/HashMap.hash + 311492 81 java/util/HashMap.indexFor + 311492 82 java/lang/AbstractStringBuilder.<init> + 311492 82 java/lang/Character.toLowerCase + 311492 83 java/lang/String.startsWith + 311492 87 java/util/Arrays.copyOf + 311492 90 java/lang/String.lastIndexOf + 311492 94 java/lang/String.substring + 311492 107 java/util/Arrays.copyOfRange + 311492 156 java/lang/String.getChars + 311492 174 java/lang/System.getSecurityManager + 311492 175 java/lang/String.<init> + 311492 202 java/lang/String.equals + 311492 208 java/lang/Math.min + 311492 213 java/lang/String.hashCode + 311492 302 java/lang/String.indexOf + 311492 360 java/lang/System.arraycopy + 311492 533 java/lang/StringBuilder.append + 311492 549 java/lang/AbstractStringBuilder.append + 311492 823 java/lang/Object.<init> + 311492 1960 java/lang/String.charAt + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_objnew_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_objnew_example.txt new file mode 100644 index 000000000000..433c38fcd880 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_objnew_example.txt @@ -0,0 +1,1460 @@ +The following are examples of j_objnew.d. + +This traces activity of object allocation by Java. It will print a histogram +of the byte size of allocation of different type, followed by a count of each +type of allocation. + +Here you can see it running on Code/Java/Func_abc + +# j_objnew.d +Tracing... Hit Ctrl-C to end. +^C + +Java object allocation byte distributions by pid and class, + + 311496 java/io/Console$1 + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/io/DeleteOnExitHook + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/io/File$1 + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/lang/ApplicationShutdownHooks + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/lang/Compiler$1 + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/lang/Runtime + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/lang/String$CaseInsensitiveComparator + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/lang/System$2 + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/lang/Terminator$1 + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/lang/ref/Reference$Lock + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/lang/reflect/ReflectAccess + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/net/URLClassLoader$7 + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/net/UnknownContentHandler + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/util/Collections$EmptySet + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/util/Collections$ReverseComparator + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/util/Hashtable$EmptyEnumerator + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/util/Hashtable$EmptyIterator + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 java/util/jar/JavaUtilJarAccessImpl + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 sun/misc/Launcher$Factory + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 sun/misc/Unsafe + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 sun/net/www/protocol/file/Handler + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 sun/reflect/ReflectionFactory + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 sun/reflect/ReflectionFactory$1 + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + 311496 [Ljava/lang/StackTraceElement; + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 [Ljava/security/Principal; + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 [Ljava/security/cert/Certificate; + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/io/Console$1$1 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/io/FilePermissionCollection + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/io/FileReader + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/io/UnixFileSystem + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/lang/ArithmeticException + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/lang/ClassLoader$3 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/lang/NoSuchMethodError + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/lang/NullPointerException + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/lang/Shutdown$Lock + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 16 | 0 + + 311496 java/lang/StringCoding$StringDecoder + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/lang/SystemClassLoaderAction + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/lang/ThreadLocal$ThreadLocalMap + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/lang/VirtualMachineError + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/lang/reflect/ReflectPermission + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/nio/charset/CoderResult$1 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/nio/charset/CoderResult$2 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/security/BasicPermissionCollection + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/security/Policy$UnsupportedEmptyCollection + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/util/BitSet + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/util/Collections$EmptyList + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/util/Collections$EmptyMap + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/util/HashMap$KeySet + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/util/IdentityHashMap$KeySet + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/util/LinkedHashSet + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/util/concurrent/atomic/AtomicInteger + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 sun/misc/FileURLMapper + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 sun/misc/Launcher + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 sun/misc/Launcher$AppClassLoader$1 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 sun/misc/Launcher$ExtClassLoader$1 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 sun/misc/URLClassPath$FileLoader + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 sun/misc/URLClassPath$JarLoader$1 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 sun/net/www/MessageHeader + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 sun/net/www/protocol/jar/Handler + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 16 | 0 + + 311496 sun/nio/cs/StandardCharsets + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 sun/nio/cs/US_ASCII + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + 311496 java/lang/Class$3 + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 16 | 0 + + 311496 [J + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 [Ljava/io/File; + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 [Ljava/lang/OutOfMemoryError; + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 [Ljava/lang/ThreadGroup; + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 [Ljava/lang/reflect/Constructor; + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/io/BufferedInputStream + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/io/BufferedOutputStream + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/io/BufferedReader + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/io/DataInputStream + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/io/FileOutputStream + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/io/FilePermission$1 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/io/OutputStreamWriter + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/lang/Class$1 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/lang/ClassLoader$NativeLibrary + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/lang/ThreadLocal$ThreadLocalMap$Entry + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/lang/ref/ReferenceQueue + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/lang/ref/ReferenceQueue$Lock + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 16 | 0 + + 311496 java/lang/ref/ReferenceQueue$Null + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/lang/ref/WeakReference + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/net/URLClassLoader$1 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/nio/ByteOrder + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/nio/charset/CoderResult + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/security/CodeSource + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/security/Permissions + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/security/PrivilegedActionException + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/security/ProtectionDomain + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/util/AbstractList$Itr + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/util/Collections$SynchronizedMap + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/util/HashSet + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 java/util/IdentityHashMap + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/util/LinkedHashMap + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/util/LinkedHashMap$KeyIterator + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/util/Properties + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/util/concurrent/ConcurrentHashMap + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/util/jar/JarFile + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/util/zip/Inflater + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/util/zip/ZipFile$1 + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/util/zip/ZipFile$ZipFileInputStream + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 sun/misc/NativeSignalHandler + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 sun/misc/SoftCache + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 sun/misc/URLClassPath$FileLoader$1 + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 sun/nio/cs/StandardCharsets$Aliases + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 sun/nio/cs/StandardCharsets$Cache + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 sun/nio/cs/StandardCharsets$Classes + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 sun/nio/cs/StreamDecoder + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 sun/nio/cs/Surrogate$Parser + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 sun/reflect/DelegatingConstructorAccessorImpl + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 sun/reflect/NativeConstructorAccessorImpl + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + 311496 sun/reflect/ReflectionFactory$GetReflectionFactoryAction + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 16 | 0 + + 311496 [Ljava/net/URL; + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@ 1 + 32 |@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + 311496 java/io/FileInputStream + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 32 | 0 + + 311496 java/lang/Boolean + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 32 | 0 + + 311496 java/lang/Integer + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 32 | 0 + + 311496 java/lang/RuntimePermission + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 32 | 0 + + 311496 java/lang/ThreadLocal + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 32 | 0 + + 311496 java/nio/charset/CodingErrorAction + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 32 | 0 + + 311496 java/util/Stack + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 32 | 0 + + 311496 sun/misc/Signal + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 32 | 0 + + 311496 [Ljava/lang/Thread; + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + 311496 [Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + 311496 [Ljava/lang/annotation/Annotation; + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 32 | 0 + + 311496 [Ljava/util/concurrent/ConcurrentHashMap$Segment; + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + 311496 java/io/BufferedWriter + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + 311496 java/io/ExpiringCache + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + 311496 java/io/ExpiringCache$1 + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + 311496 java/io/FilePermission + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + 311496 java/io/PrintStream + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + 311496 java/lang/ClassNotFoundException + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + 311496 java/lang/ThreadGroup + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + 311496 java/lang/ref/Finalizer$FinalizerThread + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + 311496 java/lang/ref/Reference$ReferenceHandler + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + 311496 java/lang/reflect/Method + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + 311496 java/util/IdentityHashMap$KeyIterator + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + 311496 java/util/StringTokenizer + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + 311496 java/util/jar/JarFile$JarFileEntry + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + 311496 java/util/zip/ZipEntry + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + 311496 sun/misc/Launcher$AppClassLoader + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + 311496 sun/misc/Launcher$ExtClassLoader + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + 311496 sun/misc/MetaIndex + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 32 | 0 + + 311496 sun/misc/URLClassPath + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + 311496 sun/net/www/protocol/file/FileURLConnection + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + 311496 sun/nio/cs/StreamEncoder + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + 311496 sun/nio/cs/US_ASCII$Encoder + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + 311496 java/io/FileDescriptor + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 32 | 0 + + 311496 sun/misc/URLClassPath$3 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 32 | 0 + + 311496 [Ljava/io/ObjectStreamField; + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 8 + 32 | 0 + + 311496 [Ljava/lang/reflect/Field; + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 64 | 0 + + 311496 java/lang/Object + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 16 + 16 | 0 + + 311496 java/lang/OutOfMemoryError + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 8 + 32 | 0 + + 311496 java/util/ArrayList + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 8 + 32 | 0 + + 311496 java/util/Vector + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 8 + 32 | 0 + + 311496 sun/nio/cs/US_ASCII$Decoder + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 64 | 0 + + 311496 java/lang/StringBuffer + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 9 + 32 | 0 + + 311496 java/security/AccessControlContext + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 10 + 32 | 0 + + 311496 sun/misc/URLClassPath$JarLoader + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 64 | 0 + + 311496 java/net/Parts + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 11 + 32 | 0 + + 311496 [Ljava/lang/Class; + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 12 + 32 | 0 + + 311496 java/io/ExpiringCache$Entry + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 12 + 32 | 0 + + 311496 java/nio/HeapByteBuffer + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 64 | 0 + + 311496 java/util/Hashtable + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 64 | 0 + + 311496 java/lang/ref/SoftReference + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 7 + 64 | 0 + + 311496 java/util/HashMap$Entry + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 15 + 32 | 0 + + 311496 java/lang/ref/Finalizer + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 8 + 64 | 0 + + 311496 java/lang/reflect/Constructor + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 128 | 0 + + 311496 java/util/concurrent/locks/ReentrantLock$NonfairSync + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 16 + 32 | 0 + + 311496 sun/security/action/GetPropertyAction + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 17 + 32 | 0 + + 311496 java/io/ObjectStreamField + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 10 + 64 | 0 + + 311496 java/nio/HeapCharBuffer + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 11 + 64 | 0 + + 311496 java/util/concurrent/ConcurrentHashMap$HashEntry + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 23 + 32 | 0 + + 311496 java/lang/Thread + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 128 | 0 + + 311496 java/net/URL + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 13 + 64 | 0 + + 311496 java/util/HashMap + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 14 + 64 | 0 + + 311496 java/util/LinkedHashMap$Entry + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 15 + 64 | 0 + + 311496 [Ljava/util/concurrent/ConcurrentHashMap$HashEntry; + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 16 + 32 |@@@@@@@ 4 + 64 |@@@@ 2 + 128 | 0 + + 311496 java/util/concurrent/ConcurrentHashMap$Segment + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 16 + 64 | 0 + + 311496 java/io/File + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 37 + 32 | 0 + + 311496 java/util/Locale + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 19 + 64 | 0 + + 311496 [Ljava/util/Hashtable$Entry; + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 7 + 64 |@@@@ 1 + 128 |@@@@ 1 + 256 |@@@@ 1 + 512 | 0 + + 311496 java/util/Hashtable$Entry + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 57 + 32 | 0 + + 311496 [Ljava/util/HashMap$Entry; + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 17 + 128 | 0 + + 311496 java/lang/StringBuilder + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 73 + 32 | 0 + + 311496 [Ljava/lang/String; + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@ 26 + 32 |@@@@@@@@@@@@@@@ 22 + 64 |@@@@@@ 9 + 128 | 0 + + 311496 java/lang/reflect/Field + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 37 + 128 | 0 + + 311496 [Ljava/lang/Object; + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 296 + 32 |@@ 18 + 64 | 0 + 128 |@ 10 + 256 | 1 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 1 + 8192 | 0 + + 311496 java/lang/String + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 931 + 32 | 0 + + 311496 [S + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@ 161 + 32 |@@@@@@@@@@@@@@@@ 189 + 64 |@@@@@@@ 82 + 128 |@@@ 38 + 256 |@ 12 + 512 | 4 + 1024 | 0 + + 311496 [[I + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@ 270 + 32 |@@@@@@@@@@ 129 + 64 |@@@@@@ 85 + 128 |@@@ 34 + 256 |@@ 22 + 512 | 1 + 1024 | 0 + + 311496 java/lang/Class + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 395 + 128 | 0 + + 311496 [I + value ------------- Distribution ------------- count + 8 | 0 + 16 | 3 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 276 + 64 |@@@@@@@@@ 87 + 128 | 3 + 256 | 1 + 512 | 1 + 1024 | 1 + 2048 | 0 + 4096 | 1 + 8192 | 0 + 16384 | 1 + 32768 | 0 + + 311496 [B + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@ 87 + 32 |@@@@@@@@@@ 100 + 64 |@@@@@@@@ 83 + 128 |@@@@@@@ 71 + 256 |@@@@@ 47 + 512 |@ 14 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 | 4 + 16384 | 0 + + 311496 [C + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@ 271 + 32 |@@@@@@@@@@@@@@@@@@@@@ 573 + 64 |@@@@@@ 150 + 128 |@@@ 68 + 256 | 8 + 512 | 1 + 1024 | 2 + 2048 | 0 + 4096 | 0 + 8192 | 0 + 16384 | 3 + 32768 | 0 + +Java object allocation count by pid and class, + + PID OBJS CLASS + 311496 1 [J + 311496 1 [Ljava/lang/OutOfMemoryError; + 311496 1 [Ljava/lang/StackTraceElement; + 311496 1 [Ljava/lang/ThreadGroup; + 311496 1 [Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; + 311496 1 [Ljava/security/Principal; + 311496 1 [Ljava/security/cert/Certificate; + 311496 1 [Ljava/util/concurrent/ConcurrentHashMap$Segment; + 311496 1 java/io/BufferedInputStream + 311496 1 java/io/BufferedReader + 311496 1 java/io/Console$1 + 311496 1 java/io/Console$1$1 + 311496 1 java/io/DataInputStream + 311496 1 java/io/DeleteOnExitHook + 311496 1 java/io/File$1 + 311496 1 java/io/FilePermissionCollection + 311496 1 java/io/FileReader + 311496 1 java/io/UnixFileSystem + 311496 1 java/lang/ApplicationShutdownHooks + 311496 1 java/lang/ArithmeticException + 311496 1 java/lang/ClassLoader$3 + 311496 1 java/lang/ClassLoader$NativeLibrary + 311496 1 java/lang/Compiler$1 + 311496 1 java/lang/NoSuchMethodError + 311496 1 java/lang/NullPointerException + 311496 1 java/lang/Runtime + 311496 1 java/lang/String$CaseInsensitiveComparator + 311496 1 java/lang/StringCoding$StringDecoder + 311496 1 java/lang/System$2 + 311496 1 java/lang/SystemClassLoaderAction + 311496 1 java/lang/Terminator$1 + 311496 1 java/lang/ThreadLocal$ThreadLocalMap + 311496 1 java/lang/ThreadLocal$ThreadLocalMap$Entry + 311496 1 java/lang/VirtualMachineError + 311496 1 java/lang/ref/Finalizer$FinalizerThread + 311496 1 java/lang/ref/Reference$Lock + 311496 1 java/lang/ref/Reference$ReferenceHandler + 311496 1 java/lang/reflect/Method + 311496 1 java/lang/reflect/ReflectAccess + 311496 1 java/lang/reflect/ReflectPermission + 311496 1 java/net/URLClassLoader$7 + 311496 1 java/net/UnknownContentHandler + 311496 1 java/nio/charset/CoderResult$1 + 311496 1 java/nio/charset/CoderResult$2 + 311496 1 java/security/BasicPermissionCollection + 311496 1 java/security/CodeSource + 311496 1 java/security/Policy$UnsupportedEmptyCollection + 311496 1 java/security/PrivilegedActionException + 311496 1 java/security/ProtectionDomain + 311496 1 java/util/BitSet + 311496 1 java/util/Collections$EmptyList + 311496 1 java/util/Collections$EmptyMap + 311496 1 java/util/Collections$EmptySet + 311496 1 java/util/Collections$ReverseComparator + 311496 1 java/util/Collections$SynchronizedMap + 311496 1 java/util/HashMap$KeySet + 311496 1 java/util/Hashtable$EmptyEnumerator + 311496 1 java/util/Hashtable$EmptyIterator + 311496 1 java/util/IdentityHashMap + 311496 1 java/util/IdentityHashMap$KeySet + 311496 1 java/util/LinkedHashMap + 311496 1 java/util/LinkedHashMap$KeyIterator + 311496 1 java/util/LinkedHashSet + 311496 1 java/util/Properties + 311496 1 java/util/concurrent/ConcurrentHashMap + 311496 1 java/util/concurrent/atomic/AtomicInteger + 311496 1 java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl + 311496 1 java/util/jar/JarFile + 311496 1 java/util/jar/JarFile$JarFileEntry + 311496 1 java/util/jar/JavaUtilJarAccessImpl + 311496 1 java/util/zip/Inflater + 311496 1 java/util/zip/ZipEntry + 311496 1 java/util/zip/ZipFile$1 + 311496 1 java/util/zip/ZipFile$ZipFileInputStream + 311496 1 sun/misc/FileURLMapper + 311496 1 sun/misc/Launcher + 311496 1 sun/misc/Launcher$AppClassLoader + 311496 1 sun/misc/Launcher$AppClassLoader$1 + 311496 1 sun/misc/Launcher$ExtClassLoader + 311496 1 sun/misc/Launcher$ExtClassLoader$1 + 311496 1 sun/misc/Launcher$Factory + 311496 1 sun/misc/SoftCache + 311496 1 sun/misc/URLClassPath$FileLoader + 311496 1 sun/misc/URLClassPath$FileLoader$1 + 311496 1 sun/misc/URLClassPath$JarLoader$1 + 311496 1 sun/misc/Unsafe + 311496 1 sun/net/www/MessageHeader + 311496 1 sun/net/www/protocol/file/FileURLConnection + 311496 1 sun/net/www/protocol/file/Handler + 311496 1 sun/nio/cs/StandardCharsets + 311496 1 sun/nio/cs/StandardCharsets$Aliases + 311496 1 sun/nio/cs/StandardCharsets$Cache + 311496 1 sun/nio/cs/StandardCharsets$Classes + 311496 1 sun/nio/cs/StreamDecoder + 311496 1 sun/nio/cs/US_ASCII + 311496 1 sun/reflect/ReflectionFactory + 311496 1 sun/reflect/ReflectionFactory$1 + 311496 2 [Ljava/io/File; + 311496 2 [Ljava/lang/Thread; + 311496 2 [Ljava/lang/reflect/Constructor; + 311496 2 [Ljava/net/URL; + 311496 2 java/io/BufferedOutputStream + 311496 2 java/io/BufferedWriter + 311496 2 java/io/ExpiringCache + 311496 2 java/io/ExpiringCache$1 + 311496 2 java/io/FileOutputStream + 311496 2 java/io/FilePermission + 311496 2 java/io/FilePermission$1 + 311496 2 java/io/OutputStreamWriter + 311496 2 java/io/PrintStream + 311496 2 java/lang/Class$1 + 311496 2 java/lang/ClassNotFoundException + 311496 2 java/lang/Shutdown$Lock + 311496 2 java/lang/ThreadGroup + 311496 2 java/lang/ref/ReferenceQueue + 311496 2 java/lang/ref/ReferenceQueue$Null + 311496 2 java/lang/ref/WeakReference + 311496 2 java/net/URLClassLoader$1 + 311496 2 java/nio/ByteOrder + 311496 2 java/nio/charset/CoderResult + 311496 2 java/security/Permissions + 311496 2 java/util/AbstractList$Itr + 311496 2 java/util/HashSet + 311496 2 java/util/IdentityHashMap$KeyIterator + 311496 2 java/util/StringTokenizer + 311496 2 sun/misc/NativeSignalHandler + 311496 2 sun/misc/URLClassPath + 311496 2 sun/net/www/protocol/jar/Handler + 311496 2 sun/nio/cs/StreamEncoder + 311496 2 sun/nio/cs/Surrogate$Parser + 311496 2 sun/nio/cs/US_ASCII$Encoder + 311496 2 sun/reflect/DelegatingConstructorAccessorImpl + 311496 2 sun/reflect/NativeConstructorAccessorImpl + 311496 3 java/io/FileInputStream + 311496 3 java/lang/Boolean + 311496 3 java/lang/Class$3 + 311496 3 java/lang/Integer + 311496 3 java/lang/RuntimePermission + 311496 3 java/lang/ThreadLocal + 311496 3 java/nio/charset/CodingErrorAction + 311496 3 java/util/Stack + 311496 3 sun/misc/Signal + 311496 4 [Ljava/lang/annotation/Annotation; + 311496 4 [Ljava/lang/reflect/Field; + 311496 4 java/lang/ref/ReferenceQueue$Lock + 311496 4 java/lang/reflect/Constructor + 311496 4 sun/misc/MetaIndex + 311496 4 sun/nio/cs/US_ASCII$Decoder + 311496 4 sun/reflect/ReflectionFactory$GetReflectionFactoryAction + 311496 5 java/io/FileDescriptor + 311496 5 sun/misc/URLClassPath$JarLoader + 311496 6 java/lang/Thread + 311496 6 java/nio/HeapByteBuffer + 311496 6 java/util/Hashtable + 311496 6 sun/misc/URLClassPath$3 + 311496 7 java/lang/ref/SoftReference + 311496 8 [Ljava/io/ObjectStreamField; + 311496 8 java/lang/OutOfMemoryError + 311496 8 java/lang/ref/Finalizer + 311496 8 java/util/ArrayList + 311496 8 java/util/Vector + 311496 9 java/lang/StringBuffer + 311496 10 [Ljava/util/Hashtable$Entry; + 311496 10 java/io/ObjectStreamField + 311496 10 java/security/AccessControlContext + 311496 11 java/net/Parts + 311496 11 java/nio/HeapCharBuffer + 311496 12 [Ljava/lang/Class; + 311496 12 java/io/ExpiringCache$Entry + 311496 13 java/net/URL + 311496 14 java/util/HashMap + 311496 15 java/util/HashMap$Entry + 311496 15 java/util/LinkedHashMap$Entry + 311496 16 java/lang/Object + 311496 16 java/util/concurrent/ConcurrentHashMap$Segment + 311496 16 java/util/concurrent/locks/ReentrantLock$NonfairSync + 311496 17 [Ljava/util/HashMap$Entry; + 311496 17 sun/security/action/GetPropertyAction + 311496 19 java/util/Locale + 311496 22 [Ljava/util/concurrent/ConcurrentHashMap$HashEntry; + 311496 23 java/util/concurrent/ConcurrentHashMap$HashEntry + 311496 37 java/io/File + 311496 37 java/lang/reflect/Field + 311496 57 [Ljava/lang/String; + 311496 57 java/util/Hashtable$Entry + 311496 73 java/lang/StringBuilder + 311496 326 [Ljava/lang/Object; + 311496 374 [I + 311496 395 java/lang/Class + 311496 406 [B + 311496 486 [S + 311496 541 [[I + 311496 931 java/lang/String + 311496 1076 [C + +In the first section - Java object allocation byte distributions by PID and +class, you can see in graphical form the range of sizes of each type of +object. For example: + + 311496 [C + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@ 271 + 32 |@@@@@@@@@@@@@@@@@@@@@ 573 + 64 |@@@@@@ 150 + 128 |@@@ 68 + 256 | 8 + 512 | 1 + 1024 | 2 + 2048 | 0 + 4096 | 0 + 8192 | 0 + 16384 | 3 + 32768 | 0 + +shows that there were 271 objects of type [C and size 16 bytes to 31 bytes +created. It is important to pay close attention to the third column, +"count" as this will indicate if there were any instances in a particular +size, even if the number is too small to show up on the histogram scale. + +In the second section - Java object allocation count by pid and class, you can +easily see that there were 395 objects of java/lang/Class created, and 931 +objects of java/lang/String. + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_package_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_package_example.txt new file mode 100644 index 000000000000..0d4da29d9e90 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_package_example.txt @@ -0,0 +1,44 @@ +The following are examples of j_package.d. + +This script will show you the number of times a class is loaded from +particular packages. + +Here you can see it running when Code/Java/Func_abc runs. + +# j_package.d +Tracing... Hit Ctrl-C to end. + + PID LOADS PACKAGE + 311500 1 . + 311500 1 java/lang/annotation + 311500 1 java/nio/charset/spi + 311500 1 java/security/cert + 311500 1 sun/net/www/protocol/jar + 311500 1 sun/nio + 311500 1 sun/reflect/misc + 311500 1 sun/security/action + 311500 1 sun/security/provider + 311500 1 sun/security/util + 311500 1 sun/util + 311500 2 sun/net/www/protocol/file + 311500 3 java/util/concurrent/atomic + 311500 3 sun/net/www + 311500 4 java/util/concurrent + 311500 4 java/util/jar + 311500 7 java/nio + 311500 7 java/util/concurrent/locks + 311500 7 java/util/zip + 311500 8 java/nio/charset + 311500 10 java/net + 311500 12 java/lang/ref + 311500 12 java/lang/reflect + 311500 13 sun/nio/cs + 311500 18 sun/reflect + 311500 19 java/security + 311500 34 sun/misc + 311500 38 java/io + 311500 46 java/util + 311500 69 java/lang + +You can see that 69 classes from the java/lang package were loaded during the +time this script was running. diff --git a/cddl/contrib/dtracetoolkit/Examples/j_profile_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_profile_example.txt new file mode 100644 index 000000000000..bb45c4b3f759 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_profile_example.txt @@ -0,0 +1,209 @@ +The following are examples of j_profile.d. + +This script samples on-CPU stack traces and prints them with Java +translations. With DTrace, as well as tracing events, you can also sample +them. Each approach has its own advantages and disadvantages and you are +encouraged to try both when investigating performance issues (especially +tracing). Sampling is inaccurate and can miss events, yet is a quick and +easy way to discover a certain set of performance issues involving on-CPU +load. + +This script samples at 101 Hertz, printing out the 25 most frequently seen +stack traces down to 10 lines deep. All of these values can be tweaked in +the script. + +Here we run the script on Code/Java/Func_loop. The argument fed to the script +is the PID of the Java program we wish to investigate. Here the raw output is +show, then again after filtering using c++filt. + +# j_profile.d -p 1312 +Sampling 10-level stacks at 101 Hertz... Hit Ctrl-C to end. +^C + +Top 25 most frequently sampled stacks, + + + Func_loop.func_c()V + Func_loop.func_b()V + Func_loop.func_a()V + Func_loop.main([Ljava/lang/String;)V + StubRoutines (1) + libjvm.so`__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x1a3 + libjvm.so`__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27 + libjvm.so`__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x2f + libjvm.so`__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_+0x1df + libjvm.so`jni_CallStaticVoidMethod+0x15d + 30 + + Func_loop.func_c()V + Func_loop.func_b()V + Func_loop.func_a()V + Func_loop.main([Ljava/lang/String;)V + StubRoutines (1) + libjvm.so`__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x1a3 + libjvm.so`__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27 + libjvm.so`__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x2f + libjvm.so`__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_+0x1df + libjvm.so`jni_CallStaticVoidMethod+0x15d + 31 + + Func_loop.func_c()V + Func_loop.func_b()V + Func_loop.func_a()V + Func_loop.main([Ljava/lang/String;)V + StubRoutines (1) + libjvm.so`__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x1a3 + libjvm.so`__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27 + libjvm.so`__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x2f + libjvm.so`__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_+0x1df + libjvm.so`jni_CallStaticVoidMethod+0x15d + 32 + + Func_loop.func_c()V + Func_loop.func_b()V + Func_loop.func_a()V + Func_loop.main([Ljava/lang/String;)V + StubRoutines (1) + libjvm.so`__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x1a3 + libjvm.so`__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27 + libjvm.so`__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x2f + libjvm.so`__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_+0x1df + libjvm.so`jni_CallStaticVoidMethod+0x15d + 33 + + Func_loop.func_c()V + Func_loop.func_b()V + Func_loop.func_a()V + Func_loop.main([Ljava/lang/String;)V + StubRoutines (1) + libjvm.so`__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x1a3 + libjvm.so`__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27 + libjvm.so`__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x2f + libjvm.so`__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_+0x1df + libjvm.so`jni_CallStaticVoidMethod+0x15d + 41 + + Func_loop.func_c()V + Func_loop.func_b()V + Func_loop.func_a()V + Func_loop.main([Ljava/lang/String;)V + StubRoutines (1) + libjvm.so`__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x1a3 + libjvm.so`__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27 + libjvm.so`__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x2f + libjvm.so`__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_+0x1df + libjvm.so`jni_CallStaticVoidMethod+0x15d + 72 + + Func_loop.func_c()V + Func_loop.func_b()V + Func_loop.func_a()V + Func_loop.main([Ljava/lang/String;)V + StubRoutines (1) + libjvm.so`__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x1a3 + libjvm.so`__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27 + libjvm.so`__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x2f + libjvm.so`__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_+0x1df + libjvm.so`jni_CallStaticVoidMethod+0x15d + 116 + + +The most frequent stacks had Func_loop.func_c() on CPU, with a stack trace +showing func_b() and func_a() - as expected from the source to Func_loop.java. + + +Now passing that output through c++filt to translate the compiled C++ symbols +of the JVM. + +# j_profile.d -p 1312 -o out.j_profile +# c++filt out.j_profile +Sampling 10-level stacks at 101 Hertz... Hit Ctrl-C to end. + +Top 25 most frequently sampled stacks, + + + Func_loop.func_c()V + Func_loop.func_b()V + Func_loop.func_a()V + Func_loop.main([Ljava/lang/String;)V + StubRoutines (1) + libjvm.so`void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x1a3 + libjvm.so`void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x27 + libjvm.so`void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x2f + libjvm.so`void jni_invoke_static(JNIEnv_*,JavaValue*,_jobject*,JNICallType,_jmethodID*,JNI_ArgumentPusher*,Thread*)+0x1df + libjvm.so`jni_CallStaticVoidMethod+0x15d + 10 + + Func_loop.func_c()V + Func_loop.func_b()V + Func_loop.func_a()V + Func_loop.main([Ljava/lang/String;)V + StubRoutines (1) + libjvm.so`void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x1a3 + libjvm.so`void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x27 + libjvm.so`void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x2f + libjvm.so`void jni_invoke_static(JNIEnv_*,JavaValue*,_jobject*,JNICallType,_jmethodID*,JNI_ArgumentPusher*,Thread*)+0x1df + libjvm.so`jni_CallStaticVoidMethod+0x15d + 13 + + Func_loop.func_c()V + Func_loop.func_b()V + Func_loop.func_a()V + Func_loop.main([Ljava/lang/String;)V + StubRoutines (1) + libjvm.so`void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x1a3 + libjvm.so`void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x27 + libjvm.so`void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x2f + libjvm.so`void jni_invoke_static(JNIEnv_*,JavaValue*,_jobject*,JNICallType,_jmethodID*,JNI_ArgumentPusher*,Thread*)+0x1df + libjvm.so`jni_CallStaticVoidMethod+0x15d + 19 + + Func_loop.func_c()V + Func_loop.func_b()V + Func_loop.func_a()V + Func_loop.main([Ljava/lang/String;)V + StubRoutines (1) + libjvm.so`void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x1a3 + libjvm.so`void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x27 + libjvm.so`void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x2f + libjvm.so`void jni_invoke_static(JNIEnv_*,JavaValue*,_jobject*,JNICallType,_jmethodID*,JNI_ArgumentPusher*,Thread*)+0x1df + libjvm.so`jni_CallStaticVoidMethod+0x15d + 21 + + Func_loop.func_c()V + Func_loop.func_b()V + Func_loop.func_a()V + Func_loop.main([Ljava/lang/String;)V + StubRoutines (1) + libjvm.so`void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x1a3 + libjvm.so`void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x27 + libjvm.so`void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x2f + libjvm.so`void jni_invoke_static(JNIEnv_*,JavaValue*,_jobject*,JNICallType,_jmethodID*,JNI_ArgumentPusher*,Thread*)+0x1df + libjvm.so`jni_CallStaticVoidMethod+0x15d + 29 + + Func_loop.func_c()V + Func_loop.func_b()V + Func_loop.func_a()V + Func_loop.main([Ljava/lang/String;)V + StubRoutines (1) + libjvm.so`void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x1a3 + libjvm.so`void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x27 + libjvm.so`void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x2f + libjvm.so`void jni_invoke_static(JNIEnv_*,JavaValue*,_jobject*,JNICallType,_jmethodID*,JNI_ArgumentPusher*,Thread*)+0x1df + libjvm.so`jni_CallStaticVoidMethod+0x15d + 53 + + Func_loop.func_c()V + Func_loop.func_b()V + Func_loop.func_a()V + Func_loop.main([Ljava/lang/String;)V + StubRoutines (1) + libjvm.so`void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x1a3 + libjvm.so`void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x27 + libjvm.so`void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x2f + libjvm.so`void jni_invoke_static(JNIEnv_*,JavaValue*,_jobject*,JNICallType,_jmethodID*,JNI_ArgumentPusher*,Thread*)+0x1df + libjvm.so`jni_CallStaticVoidMethod+0x15d + 74 + + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_stat_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_stat_example.txt new file mode 100644 index 000000000000..6c7e12e99cfa --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_stat_example.txt @@ -0,0 +1,33 @@ +The following are examples of running j_stat.d. + +j_stat.d shows you the number of events per second that have happened since +the last line output. The default interval is 1 second, but you can specify +other intervals as arguments to the script. + +This shows the j_stat.d script reflecting the Code/Ruby/Func_abc script. + +# j_stat.d +TIME EXEC/s THREAD/s METHOD/s OBJNEW/s CLOAD/s EXCP/s GC/s +2007 Sep 24 04:00:34 0 0 0 0 0 0 0 +2007 Sep 24 04:00:35 2 6 11660 5306 318 41 0 +2007 Sep 24 04:00:36 0 0 124 4 0 2 0 +2007 Sep 24 04:00:37 0 0 124 4 0 2 0 +2007 Sep 24 04:00:38 0 0 123 75 9 1 0 +2007 Sep 24 04:00:39 0 0 0 0 0 0 0 +2007 Sep 24 04:00:40 0 0 0 0 0 0 0 +^C + +Here we can see that at 2007 Sep 24 04:00:35 there were 2 Java programs +executed, (this number will include those without Java provider support), +there were 6 threads created, 11,660 methods called, 5306 new objects created, +318 class loads, 41 exceptions raised and no garbage collects. + +The numbers are per second counts for the interval specified. The default +interval is 1 second. + +If you see a count in "EXECS" but not in the other columns, then your Java +software is probably not running with the DTrace hotspot provider. + +If you see counts in "CLOAD" but not in "METHODS", then you Java software +probably isn't running with "+ExtendedDTraceProbes". + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_syscalls_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_syscalls_example.txt new file mode 100644 index 000000000000..911d4b0ec5c5 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_syscalls_example.txt @@ -0,0 +1,165 @@ +The following are examples of j_syscalls.d. + +This is a simple script to count executed Java methods and system calls. +Here it traces an example program, Code/Java/Func_abc. + +# j_syscalls.d -c 'java -XX:+ExtendedDTraceProbes Func_abc' +Tracing... Hit Ctrl-C to end. +Function A +Function B +Function C + PID TYPE NAME COUNT + 311536 method Func_abc.func_a 1 + 311536 method Func_abc.func_b 1 + 311536 method Func_abc.func_c 1 + 311536 method Func_abc.main 1 + 311536 method java/io/BufferedInputStream.<clinit> 1 + 311536 method java/io/BufferedReader.<clinit> 1 + 311536 method java/io/BufferedReader.close 1 + 311536 method java/io/BufferedWriter.<clinit> 1 + 311536 method java/io/Console$1$1.<init> 1 + 311536 method java/io/Console$1$1.run 1 + 311536 method java/io/Console$1.<init> 1 + 311536 method java/io/Console$1.consoleRestoreHook 1 + 311536 method java/io/Console.<clinit> 1 + 311536 method java/io/Console.access$600 1 + 311536 method java/io/DataInputStream.<init> 1 + 311536 method java/io/DataInputStream.readFully 1 + 311536 method java/io/DeleteOnExitHook.<clinit> 1 + 311536 method java/io/DeleteOnExitHook.<init> 1 + 311536 method java/io/DeleteOnExitHook.hook 1 + 311536 method java/io/DeleteOnExitHook.run 1 +[... 900 lines truncated ...] + 311536 method java/io/ExpiringCache.get 18 + 311536 method java/lang/Class.desiredAssertionStatus 18 + 311536 method java/lang/Class.desiredAssertionStatus0 18 + 311536 method java/lang/ClassLoader.findLoadedClass 18 + 311536 method java/lang/ClassLoader.findLoadedClass0 18 + 311536 method java/io/BufferedReader.ensureOpen 19 + 311536 method java/lang/System.currentTimeMillis 19 + 311536 method java/nio/Buffer.limit 19 + 311536 method java/util/Locale.<init> 19 + 311536 method java/util/Locale.createSingleton 19 + 311536 method java/util/concurrent/ConcurrentHashMap$Segment.put 19 + 311536 method java/util/concurrent/ConcurrentHashMap.put 19 + 311536 method java/util/concurrent/locks/AbstractQueuedSynchronizer.compareAndSetState 19 + 311536 method java/util/concurrent/locks/AbstractQueuedSynchronizer.release 19 + 311536 method java/util/concurrent/locks/AbstractQueuedSynchronizer.setState 19 + 311536 method java/util/concurrent/locks/ReentrantLock$NonfairSync.lock 19 + 311536 method java/util/concurrent/locks/ReentrantLock$Sync.tryRelease 19 + 311536 method java/util/concurrent/locks/ReentrantLock.lock 19 + 311536 method java/util/concurrent/locks/ReentrantLock.unlock 19 + 311536 method java/io/ObjectStreamField.<init> 20 + 311536 method java/nio/ByteBuffer.array 20 + 311536 method java/util/AbstractList.<init> 20 + 311536 method java/util/BitSet.get 20 + 311536 method java/util/concurrent/ConcurrentHashMap.hash 20 + 311536 method java/util/concurrent/ConcurrentHashMap.segmentFor 20 + 311536 method sun/misc/VM.isBooted 20 + 311536 syscall memcntl 20 + 311536 method java/io/File.getName 21 + 311536 method java/io/UnixFileSystem.getBooleanAttributes 21 + 311536 method java/io/UnixFileSystem.getBooleanAttributes0 21 + 311536 method java/lang/StringBuffer.append 21 + 311536 method java/nio/charset/Charset.atBugLevel 21 + 311536 method java/util/concurrent/ConcurrentHashMap$HashEntry.newArray 22 + 311536 method sun/misc/Unsafe.compareAndSwapInt 22 + 311536 method java/util/HashMap.<init> 23 + 311536 method java/util/concurrent/ConcurrentHashMap$HashEntry.<init> 23 + 311536 syscall stat64 23 + 311536 method java/nio/charset/CoderResult.isUnderflow 24 + 311536 method java/util/AbstractMap.<init> 24 + 311536 method java/util/Vector.elementAt 24 + 311536 syscall munmap 24 + 311536 method java/lang/Class.getClassLoader 25 + 311536 syscall lwp_sigmask 25 + 311536 syscall sigaction 25 + 311536 method java/util/AbstractCollection.<init> 26 + 311536 method java/util/ArrayList.add 26 + 311536 method java/util/ArrayList.ensureCapacity 26 + 311536 method java/lang/ClassLoader.loadClass 27 + 311536 method java/net/URL.<init> 27 + 311536 method java/lang/ClassLoader.check 28 + 311536 method java/lang/ClassLoader.checkName 28 + 311536 method java/lang/ref/Reference.<init> 28 + 311536 method java/lang/String.endsWith 29 + 311536 method sun/misc/VM.allowArraySyntax 29 + 311536 method java/io/ExpiringCache.entryFor 30 + 311536 method java/io/UnixFileSystem.resolve 30 + 311536 method java/util/HashMap$Entry.<init> 30 + 311536 method java/util/LinkedHashMap.get 30 + 311536 syscall priocntlsys 30 + 311536 method java/util/HashMap.put 33 + 311536 method java/util/Vector.<init> 33 + 311536 method java/io/UnixFileSystem.normalize 34 + 311536 method java/lang/Class.getClassLoader0 34 + 311536 method java/lang/String.toLowerCase 34 + 311536 method sun/security/action/GetPropertyAction.run 34 + 311536 method java/nio/CharBuffer.arrayOffset 36 + 311536 method java/util/HashMap.getEntry 36 + 311536 method java/io/File.<init> 37 + 311536 method java/io/UnixFileSystem.prefixLength 37 + 311536 method java/io/BufferedReader.readLine 38 + 311536 method java/util/concurrent/locks/AbstractOwnableSynchronizer.setExclusiveOwnerThread 38 + 311536 syscall resolvepath 38 + 311536 method java/lang/CharacterDataLatin1.toLowerCase 41 + 311536 method java/lang/CharacterDataLatin1.getProperties 43 + 311536 method java/security/AccessController.doPrivileged 43 + 311536 method java/util/Vector.size 43 + 311536 method java/nio/Buffer.position 44 + 311536 method java/nio/ByteBuffer.arrayOffset 44 + 311536 method java/lang/System.getProperty 48 + 311536 method java/util/Properties.getProperty 50 + 311536 method java/util/BitSet.expandTo 51 + 311536 method java/util/BitSet.set 51 + 311536 syscall pollsys 55 + 311536 method java/lang/System.checkKey 56 + 311536 method java/lang/Thread.currentThread 57 + 311536 method java/util/Hashtable$Entry.<init> 57 + 311536 method java/util/Hashtable.get 59 + 311536 method java/util/Hashtable.put 63 + 311536 method java/util/BitSet.checkInvariants 71 + 311536 method java/util/BitSet.wordIndex 72 + 311536 method java/lang/StringBuilder.<init> 73 + 311536 method java/lang/StringBuilder.toString 73 + 311536 method java/lang/AbstractStringBuilder.expandCapacity 81 + 311536 method java/util/HashMap.hash 81 + 311536 method java/util/HashMap.indexFor 81 + 311536 method java/lang/AbstractStringBuilder.<init> 82 + 311536 method java/lang/Character.toLowerCase 82 + 311536 method java/lang/String.startsWith 83 + 311536 method java/util/Arrays.copyOf 87 + 311536 method java/lang/String.lastIndexOf 90 + 311536 method java/lang/String.substring 94 + 311536 syscall brk 102 + 311536 syscall ioctl 103 + 311536 method java/util/Arrays.copyOfRange 107 + 311536 syscall mmap 127 + 311536 syscall open 129 + 311536 syscall close 133 + 311536 method java/lang/String.getChars 156 + 311536 method java/lang/System.getSecurityManager 174 + 311536 method java/lang/String.<init> 175 + 311536 syscall xstat 188 + 311536 method java/lang/String.equals 202 + 311536 method java/lang/Math.min 208 + 311536 method java/lang/String.hashCode 213 + 311536 syscall lwp_exit 291 + 311536 method java/lang/String.indexOf 302 + 311536 method java/lang/System.arraycopy 360 + 311536 method java/lang/StringBuilder.append 545 + 311536 method java/lang/AbstractStringBuilder.append 561 + 311536 syscall llseek 664 + 311536 syscall read 668 + 311536 method java/lang/Object.<init> 823 + 311536 method java/lang/String.charAt 1987 + +While tracing there were numerous system calls made, including 668 reads()'s, +and 664 llseek()'s. Many Java methods were also called, with 1987 +java/lang/String.charAt being the most of a particular kind. + +This script can provide an insight to how an application is interacting +with the system, by providing both application method calls and +system calls in the same output. + + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_syscolors_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_syscolors_example.txt new file mode 100644 index 000000000000..3b130ee8883b --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_syscolors_example.txt @@ -0,0 +1,1550 @@ +The following are examples of j_syscolors.d. + +This is a simple script to trace the method flow of Java methods within a +program, and the system calls made. It watches Java method entries and +returns, and indents child * method calls. It renders the output in color +("colour") using terminal escape sequences (which you can tweak by modifying +the script). + +Here it traces the example program, Code/Java/Func_abc. + +WARNING: This output is full of terminal escape sequences, so if you are +trying to view this through an editor or web browser - it may look awful. +Try viewing this using "more" (although, depending on your terminal, it +still may look awful). + +The fields in the output are, in order; CPU-id, Process ID/Thread ID, Elapsed +time from previous line to current line, Type of call (func/syscall) and name +of Java method or syscall. + +If the flow appears to jump, check the TID column - the JVM may have switched +to another thread. + +WARNING: Watch the first column carefully, it prints the CPU-id. If it changes, +then it is very likely that the output has been shuffled. Changes in TID will +appear to shuffle output, as we change from one thread depth to the next. See +Docs/Notes/ALLjavaflow.txt for additional notes. + +# j_syscolors.d -c 'java -XX:+ExtendedDTraceProbes Func_abc' +C PID/TID DELTA(us) TYPE -- NAME +[2;32m0 311542/1 2 syscall -> munmap[0m +[2;32m0 311542/1 33 syscall <- munmap[0m +[2;32m0 311542/1 52 syscall -> mmap[0m +[2;32m0 311542/1 16 syscall <- mmap[0m +[2;32m0 311542/1 34 syscall -> setcontext[0m +[2;32m0 311542/1 7 syscall <- setcontext[0m +[2;32m0 311542/1 7 syscall -> getrlimit[0m +[2;32m0 311542/1 7 syscall <- getrlimit[0m +[2;32m0 311542/1 7 syscall -> getpid[0m +[2;32m0 311542/1 6 syscall <- getpid[0m +[2;32m0 311542/1 58 syscall -> setcontext[0m +[2;32m0 311542/1 6 syscall <- setcontext[0m +[2;32m0 311542/1 975 syscall -> sysi86[0m +[2;32m0 311542/1 9 syscall <- sysi86[0m +[2;32m0 311542/1 134 syscall -> brk[0m +[2;32m0 311542/1 8 syscall <- brk[0m +[2;32m0 311542/1 7 syscall -> brk[0m +[2;32m0 311542/1 10 syscall <- brk[0m +[2;32m0 311542/1 47 syscall -> sysconfig[0m +[2;32m0 311542/1 6 syscall <- sysconfig[0m +[2;32m0 311542/1 36 syscall -> resolvepath[0m +[2;32m0 311542/1 31 syscall <- resolvepath[0m +[2;32m0 311542/1 9 syscall -> resolvepath[0m +[2;32m0 311542/1 18 syscall <- resolvepath[0m +[2;32m0 311542/1 85 syscall -> access[0m +[2;32m0 311542/1 20 syscall <- access[0m +[2;32m0 311542/1 8 syscall -> access[0m +[2;32m0 311542/1 24 syscall <- access[0m +[2;32m0 311542/1 115 syscall -> open[0m +[2;32m0 311542/1 27 syscall <- open[0m +[2;32m0 311542/1 14 syscall -> fstat64[0m +[2;32m0 311542/1 7 syscall <- fstat64[0m +[2;32m0 311542/1 11 syscall -> fstat64[0m +[2;32m0 311542/1 6 syscall <- fstat64[0m +[2;32m0 311542/1 22 syscall -> ioctl[0m +[2;32m0 311542/1 7 syscall <- ioctl[0m +[2;32m0 311542/1 11 syscall -> read[0m +[2;32m0 311542/1 43 syscall <- read[0m +[2;32m0 311542/1 39 syscall -> read[0m +[2;32m0 311542/1 7 syscall <- read[0m +[2;32m0 311542/1 10 syscall -> llseek[0m +[2;32m0 311542/1 7 syscall <- llseek[0m +[2;32m0 311542/1 8 syscall -> close[0m +[2;32m0 311542/1 9 syscall <- close[0m +[2;32m0 311542/1 12 syscall -> sysconfig[0m +[2;32m0 311542/1 6 syscall <- sysconfig[0m +[2;32m0 311542/1 7 syscall -> sysconfig[0m +[2;32m0 311542/1 6 syscall <- sysconfig[0m +[2;32m0 311542/1 6 syscall -> sysconfig[0m +[2;32m0 311542/1 6 syscall <- sysconfig[0m +[2;32m0 311542/1 11 syscall -> xstat[0m +[2;32m0 311542/1 27 syscall <- xstat[0m +[2;32m0 311542/1 19 syscall -> exece[0m +[2;32m0 311542/1 684 syscall <- exece[0m +[2;32m0 311542/1 3320 syscall -> mmap[0m +[2;32m0 311542/1 22 syscall <- mmap[0m +[2;32m0 311542/1 26 syscall -> resolvepath[0m +[2;32m0 311542/1 52 syscall <- resolvepath[0m +[2;32m0 311542/1 8 syscall -> resolvepath[0m +[2;32m0 311542/1 25 syscall <- resolvepath[0m +[2;32m0 311542/1 7 syscall -> sysconfig[0m +[2;32m0 311542/1 6 syscall <- sysconfig[0m +[2;32m0 311542/1 9 syscall -> xstat[0m +[2;32m0 311542/1 18 syscall <- xstat[0m +[2;32m0 311542/1 7 syscall -> open[0m +[2;32m0 311542/1 18 syscall <- open[0m +[2;32m0 311542/1 7 syscall -> fxstat[0m +[2;32m0 311542/1 7 syscall <- fxstat[0m +[2;32m0 311542/1 6 syscall -> mmap[0m +[2;32m0 311542/1 11 syscall <- mmap[0m +[2;32m0 311542/1 7 syscall -> close[0m +[2;32m0 311542/1 10 syscall <- close[0m +[2;32m0 311542/1 42 syscall -> xstat[0m +[2;32m0 311542/1 27 syscall <- xstat[0m +[2;32m0 311542/1 8 syscall -> xstat[0m +[2;32m0 311542/1 19 syscall <- xstat[0m +[2;32m0 311542/1 7 syscall -> xstat[0m +[2;32m0 311542/1 25 syscall <- xstat[0m +[... 31000 lines truncated ...] +[2;35m0 311542/2 10 method <- java/util/HashSet.add[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.checkPackageAccess[0m +[2;35m0 311542/2 28 method -> java/lang/reflect/Method.getModifiers[0m +[2;35m0 311542/2 14 method <- java/lang/reflect/Method.getModifiers[0m +[2;35m0 311542/2 17 method -> Func_abc.main[0m +[2;35m0 311542/2 14 method -> Func_abc.func_a[0m +[2;35m0 311542/2 12 method -> java/lang/ClassLoader.checkPackageAccess[0m +[2;35m0 311542/2 10 method -> java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 10 method <- java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 11 method -> java/util/HashSet.add[0m +[2;35m0 311542/2 10 method -> java/util/HashMap.put[0m +[2;35m0 311542/2 9 method -> java/lang/Object.hashCode[0m +[2;35m0 311542/2 10 method <- java/lang/Object.hashCode[0m +[2;35m0 311542/2 10 method -> java/util/HashMap.hash[0m +[2;35m0 311542/2 10 method <- java/util/HashMap.hash[0m +[2;35m0 311542/2 10 method -> java/util/HashMap.indexFor[0m +[2;35m0 311542/2 10 method <- java/util/HashMap.indexFor[0m +[2;35m0 311542/2 10 method <- java/util/HashMap.put[0m +[2;35m0 311542/2 10 method <- java/util/HashSet.add[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.checkPackageAccess[0m +[2;32m0 311542/2 20 syscall -> brk[0m +[2;32m0 311542/2 15 syscall <- brk[0m +[2;32m0 311542/2 13 syscall -> brk[0m +[2;32m0 311542/2 17 syscall <- brk[0m +[2;35m0 311542/2 47 method -> java/lang/ClassLoader.loadClassInternal[0m +[2;35m0 311542/2 12 method -> java/lang/ClassLoader.loadClass[0m +[2;35m0 311542/2 10 method -> sun/misc/Launcher$AppClassLoader.loadClass[0m +[2;35m0 311542/2 10 method -> java/lang/String.lastIndexOf[0m +[2;35m0 311542/2 10 method -> java/lang/String.lastIndexOf[0m +[2;35m0 311542/2 11 method <- java/lang/String.lastIndexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.lastIndexOf[0m +[2;35m0 311542/2 10 method -> java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 10 method <- java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.loadClass[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.findLoadedClass[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.check[0m +[2;35m0 311542/2 9 method <- java/lang/ClassLoader.check[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.checkName[0m +[2;35m0 311542/2 10 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 11 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method -> sun/misc/VM.allowArraySyntax[0m +[2;35m0 311542/2 10 method <- sun/misc/VM.allowArraySyntax[0m +[2;35m0 311542/2 10 method -> java/lang/String.charAt[0m +[2;35m0 311542/2 10 method <- java/lang/String.charAt[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.checkName[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.findLoadedClass0[0m +[2;35m0 311542/2 12 method <- java/lang/ClassLoader.findLoadedClass0[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.findLoadedClass[0m +[2;35m0 311542/2 11 method -> java/lang/ClassLoader.loadClass[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.findLoadedClass[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.check[0m +[2;35m0 311542/2 9 method <- java/lang/ClassLoader.check[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.checkName[0m +[2;35m0 311542/2 10 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method -> sun/misc/VM.allowArraySyntax[0m +[2;35m0 311542/2 10 method <- sun/misc/VM.allowArraySyntax[0m +[2;35m0 311542/2 10 method -> java/lang/String.charAt[0m +[2;35m0 311542/2 9 method <- java/lang/String.charAt[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.checkName[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.findLoadedClass0[0m +[2;35m0 311542/2 11 method <- java/lang/ClassLoader.findLoadedClass0[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.findLoadedClass[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.findBootstrapClass0[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.check[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.check[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.checkName[0m +[2;35m0 311542/2 10 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method -> sun/misc/VM.allowArraySyntax[0m +[2;35m0 311542/2 10 method <- sun/misc/VM.allowArraySyntax[0m +[2;35m0 311542/2 10 method -> java/lang/String.charAt[0m +[2;35m0 311542/2 9 method <- java/lang/String.charAt[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.checkName[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.findBootstrapClass[0m +[2;35m0 311542/2 12 method <- java/lang/ClassLoader.findBootstrapClass[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.findBootstrapClass0[0m +[2;35m0 311542/2 11 method <- java/lang/ClassLoader.loadClass[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.loadClass[0m +[2;35m0 311542/2 10 method <- sun/misc/Launcher$AppClassLoader.loadClass[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.loadClass[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.loadClassInternal[0m +[2;35m0 311542/2 14 method -> java/lang/ClassLoader.checkPackageAccess[0m +[2;35m0 311542/2 10 method -> java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 10 method <- java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 10 method -> java/util/HashSet.add[0m +[2;35m0 311542/2 10 method -> java/util/HashMap.put[0m +[2;35m0 311542/2 10 method -> java/lang/Object.hashCode[0m +[2;35m0 311542/2 9 method <- java/lang/Object.hashCode[0m +[2;35m0 311542/2 10 method -> java/util/HashMap.hash[0m +[2;35m0 311542/2 10 method <- java/util/HashMap.hash[0m +[2;35m0 311542/2 10 method -> java/util/HashMap.indexFor[0m +[2;35m0 311542/2 10 method <- java/util/HashMap.indexFor[0m +[2;35m0 311542/2 11 method <- java/util/HashMap.put[0m +[2;35m0 311542/2 10 method <- java/util/HashSet.add[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.checkPackageAccess[0m +[2;35m0 311542/2 18 method -> java/io/PrintStream.println[0m +[2;35m0 311542/2 13 method -> java/io/PrintStream.print[0m +[2;35m0 311542/2 12 method -> java/io/PrintStream.write[0m +[2;35m0 311542/2 12 method -> java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 13 method <- java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 15 method -> java/io/Writer.write[0m +[2;35m0 311542/2 16 method -> java/io/BufferedWriter.write[0m +[2;35m0 311542/2 13 method -> java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 12 method -> java/io/BufferedWriter.min[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.min[0m +[2;35m0 311542/2 13 method -> java/lang/String.getChars[0m +[2;35m0 311542/2 10 method -> java/lang/System.arraycopy[0m +[2;35m0 311542/2 11 method <- java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/String.getChars[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.write[0m +[2;35m0 311542/2 10 method <- java/io/Writer.write[0m +[2;35m0 311542/2 13 method -> java/io/BufferedWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 13 method -> java/io/OutputStreamWriter.write[0m +[2;35m0 311542/2 13 method -> sun/nio/cs/StreamEncoder.write[0m +[2;35m0 311542/2 13 method -> sun/nio/cs/StreamEncoder.ensureOpen[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.ensureOpen[0m +[2;35m0 311542/2 13 method -> sun/nio/cs/StreamEncoder.implWrite[0m +[2;35m0 311542/2 14 method -> java/nio/CharBuffer.wrap[0m +[2;35m0 311542/2 11 method -> java/nio/HeapCharBuffer.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.<init>[0m +[2;35m0 311542/2 10 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 11 method -> java/nio/Buffer.limit[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.limit[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/HeapCharBuffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.wrap[0m +[2;35m0 311542/2 13 method -> java/nio/Buffer.hasRemaining[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.hasRemaining[0m +[2;35m0 311542/2 14 method -> java/nio/charset/CharsetEncoder.encode[0m +[2;35m0 311542/2 13 method -> sun/nio/cs/US_ASCII$Encoder.encodeLoop[0m +[2;35m0 311542/2 13 method -> java/nio/CharBuffer.hasArray[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.hasArray[0m +[2;35m0 311542/2 14 method -> java/nio/ByteBuffer.hasArray[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.hasArray[0m +[2;35m0 311542/2 13 method -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop[0m +[2;35m0 311542/2 56 method -> java/nio/CharBuffer.array[0m +[2;35m0 311542/2 11 method <- java/nio/CharBuffer.array[0m +[2;35m0 311542/2 12 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 13 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 16 method -> java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 12 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 12 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 17 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 12 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 12 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/US_ASCII$Encoder.encodeLoop[0m +[2;35m0 311542/2 12 method -> java/nio/charset/CoderResult.isOverflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isOverflow[0m +[2;35m0 311542/2 12 method -> java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CharsetEncoder.encode[0m +[2;35m0 311542/2 13 method -> java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 14 method -> java/nio/Buffer.remaining[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.remaining[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.implWrite[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.write[0m +[2;35m0 311542/2 10 method <- java/io/OutputStreamWriter.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.flushBuffer[0m +[2;35m0 311542/2 13 method -> java/io/OutputStreamWriter.flushBuffer[0m +[2;35m0 311542/2 12 method -> sun/nio/cs/StreamEncoder.flushBuffer[0m +[2;35m0 311542/2 13 method -> sun/nio/cs/StreamEncoder.implFlushBuffer[0m +[2;35m0 311542/2 13 method -> sun/nio/cs/StreamEncoder.writeBytes[0m +[2;35m0 311542/2 12 method -> java/nio/Buffer.flip[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.flip[0m +[2;35m0 311542/2 14 method -> java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 12 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 14 method -> java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 13 method -> java/io/BufferedOutputStream.write[0m +[2;35m0 311542/2 15 method -> java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.write[0m +[2;35m0 311542/2 12 method -> java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 12 method -> java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 15 method -> java/io/FileOutputStream.write[0m +[2;35m0 311542/2 12 method -> java/io/FileOutputStream.writeBytes[0m +[2;32m0 311542/2 55 syscall -> write[0m +[2;32m0 311542/2 160 syscall <- write[0m +[2;35m0 311542/2 12 method <- java/io/FileOutputStream.writeBytes[0m +[2;35m0 311542/2 12 method <- java/io/FileOutputStream.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 13 method <- java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 11 method <- java/io/PrintStream.write[0m +[2;35m0 311542/2 13 method -> java/nio/Buffer.clear[0m +[2;35m0 311542/2 11 method <- java/nio/Buffer.clear[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.writeBytes[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.implFlushBuffer[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/OutputStreamWriter.flushBuffer[0m +[2;35m0 311542/2 15 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.print[0m +[2;35m0 311542/2 12 method -> java/io/PrintStream.newLine[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 12 method -> java/io/BufferedWriter.newLine[0m +[2;35m0 311542/2 12 method -> java/io/Writer.write[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.write[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 11 method -> java/io/BufferedWriter.min[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.min[0m +[2;35m0 311542/2 10 method -> java/lang/String.getChars[0m +[2;35m0 311542/2 10 method -> java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/String.getChars[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.write[0m +[2;35m0 311542/2 10 method <- java/io/Writer.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.newLine[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 10 method -> java/io/OutputStreamWriter.write[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.write[0m +[2;35m0 311542/2 9 method -> sun/nio/cs/StreamEncoder.ensureOpen[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.ensureOpen[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.implWrite[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.wrap[0m +[2;35m0 311542/2 10 method -> java/nio/HeapCharBuffer.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.<init>[0m +[2;35m0 311542/2 10 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 9 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.limit[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.limit[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/HeapCharBuffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.wrap[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.hasRemaining[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.hasRemaining[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CharsetEncoder.encode[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/US_ASCII$Encoder.encodeLoop[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.hasArray[0m +[2;35m0 311542/2 9 method <- java/nio/CharBuffer.hasArray[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.hasArray[0m +[2;35m0 311542/2 9 method <- java/nio/ByteBuffer.hasArray[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.array[0m +[2;35m0 311542/2 9 method <- java/nio/CharBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 9 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 11 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/US_ASCII$Encoder.encodeLoop[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CoderResult.isOverflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isOverflow[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CharsetEncoder.encode[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.remaining[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.remaining[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.implWrite[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.write[0m +[2;35m0 311542/2 10 method <- java/io/OutputStreamWriter.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/OutputStreamWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.flushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.implFlushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.writeBytes[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.flip[0m +[2;35m0 311542/2 9 method <- java/nio/Buffer.flip[0m +[2;35m0 311542/2 11 method -> java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 9 method <- java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 9 method <- java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.write[0m +[2;35m0 311542/2 10 method -> java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.write[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/FileOutputStream.write[0m +[2;35m0 311542/2 10 method -> java/io/FileOutputStream.writeBytes[0m +[2;32m0 311542/2 12 syscall -> write[0m +[2;32m0 311542/2 63 syscall <- write[0m +[2;35m0 311542/2 8 method <- java/io/FileOutputStream.writeBytes[0m +[2;35m0 311542/2 11 method <- java/io/FileOutputStream.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.clear[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.clear[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.writeBytes[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.implFlushBuffer[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/OutputStreamWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.newLine[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.println[0m +[2;35m0 311542/2 23 method -> java/lang/ClassLoader.loadClassInternal[0m +[2;35m0 311542/2 11 method -> java/lang/ClassLoader.loadClass[0m +[2;35m0 311542/2 10 method -> sun/misc/Launcher$AppClassLoader.loadClass[0m +[2;35m0 311542/2 10 method -> java/lang/String.lastIndexOf[0m +[2;35m0 311542/2 10 method -> java/lang/String.lastIndexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.lastIndexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.lastIndexOf[0m +[2;35m0 311542/2 10 method -> java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 10 method <- java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.loadClass[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.findLoadedClass[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.check[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.check[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.checkName[0m +[2;35m0 311542/2 10 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method -> sun/misc/VM.allowArraySyntax[0m +[2;35m0 311542/2 9 method <- sun/misc/VM.allowArraySyntax[0m +[2;35m0 311542/2 10 method -> java/lang/String.charAt[0m +[2;35m0 311542/2 10 method <- java/lang/String.charAt[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.checkName[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.findLoadedClass0[0m +[2;35m0 311542/2 14 method <- java/lang/ClassLoader.findLoadedClass0[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.findLoadedClass[0m +[2;35m0 311542/2 12 method -> java/lang/ClassLoader.loadClass[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.findLoadedClass[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.check[0m +[2;35m0 311542/2 9 method <- java/lang/ClassLoader.check[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.checkName[0m +[2;35m0 311542/2 10 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 9 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method -> sun/misc/VM.allowArraySyntax[0m +[2;35m0 311542/2 10 method <- sun/misc/VM.allowArraySyntax[0m +[2;35m0 311542/2 10 method -> java/lang/String.charAt[0m +[2;35m0 311542/2 9 method <- java/lang/String.charAt[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.checkName[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.findLoadedClass0[0m +[2;35m0 311542/2 12 method <- java/lang/ClassLoader.findLoadedClass0[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.findLoadedClass[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.findBootstrapClass0[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.check[0m +[2;35m0 311542/2 9 method <- java/lang/ClassLoader.check[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.checkName[0m +[2;35m0 311542/2 10 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 9 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method -> sun/misc/VM.allowArraySyntax[0m +[2;35m0 311542/2 10 method <- sun/misc/VM.allowArraySyntax[0m +[2;35m0 311542/2 10 method -> java/lang/String.charAt[0m +[2;35m0 311542/2 10 method <- java/lang/String.charAt[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.checkName[0m +[2;35m0 311542/2 10 method -> java/lang/ClassLoader.findBootstrapClass[0m +[2;35m0 311542/2 15 method <- java/lang/ClassLoader.findBootstrapClass[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.findBootstrapClass0[0m +[2;35m0 311542/2 11 method <- java/lang/ClassLoader.loadClass[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.loadClass[0m +[2;35m0 311542/2 10 method <- sun/misc/Launcher$AppClassLoader.loadClass[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.loadClass[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.loadClassInternal[0m +[2;35m0 311542/2 17 method -> java/lang/ClassLoader.checkPackageAccess[0m +[2;35m0 311542/2 10 method -> java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 10 method <- java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 11 method -> java/util/HashSet.add[0m +[2;35m0 311542/2 10 method -> java/util/HashMap.put[0m +[2;35m0 311542/2 10 method -> java/lang/Object.hashCode[0m +[2;35m0 311542/2 10 method <- java/lang/Object.hashCode[0m +[2;35m0 311542/2 10 method -> java/util/HashMap.hash[0m +[2;35m0 311542/2 10 method <- java/util/HashMap.hash[0m +[2;35m0 311542/2 10 method -> java/util/HashMap.indexFor[0m +[2;35m0 311542/2 10 method <- java/util/HashMap.indexFor[0m +[2;35m0 311542/2 11 method <- java/util/HashMap.put[0m +[2;35m0 311542/2 10 method <- java/util/HashSet.add[0m +[2;35m0 311542/2 10 method <- java/lang/ClassLoader.checkPackageAccess[0m +[2;35m0 311542/2 20 method -> java/lang/Thread.currentThread[0m +[2;35m0 311542/2 11 method <- java/lang/Thread.currentThread[0m +[2;35m0 311542/2 13 method -> java/lang/Thread.sleep[0m +[2;32m0 311542/2 21 syscall -> pollsys[0m +[2;32m0 311542/10 59827 syscall <- pollsys[0m +[2;32m0 311542/10 31 syscall -> pollsys[0m +[2;32m0 311542/10 59842 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 60087 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 59871 syscall <- pollsys[0m +[2;32m0 311542/10 26 syscall -> pollsys[0m +[2;32m0 311542/3 1008044 syscall <- lwp_cond_wait[0m +[2;32m0 311542/3 37 syscall -> lwp_cond_wait[0m +[2;32m0 311542/10 59402 syscall <- pollsys[0m +[2;32m0 311542/10 18 syscall -> pollsys[0m +[2;32m0 311542/10 59999 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 59965 syscall <- pollsys[0m +[2;32m0 311542/10 25 syscall -> pollsys[0m +[2;32m0 311542/10 59979 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 51241 syscall <- pollsys[0m +[2;32m0 311542/10 31 syscall -> pollsys[0m +[2;32m0 311542/10 58679 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 50215 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 59734 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 59977 syscall <- pollsys[0m +[2;32m0 311542/10 26 syscall -> pollsys[0m +[2;32m0 311542/10 59970 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 59966 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 60013 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 59924 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +Function B +[2;32m0 311542/2 1003741 syscall <- pollsys[0m +[2;35m0 311542/2 28 method <- java/lang/Thread.sleep[0m +[2;35m0 311542/2 45 method -> Func_abc.func_b[0m +[2;35m0 311542/2 36 method -> java/io/PrintStream.println[0m +[2;35m0 311542/2 11 method -> java/io/PrintStream.print[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 11 method -> java/io/Writer.write[0m +[2;35m0 311542/2 11 method -> java/io/BufferedWriter.write[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 12 method -> java/io/BufferedWriter.min[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.min[0m +[2;35m0 311542/2 11 method -> java/lang/String.getChars[0m +[2;35m0 311542/2 11 method -> java/lang/System.arraycopy[0m +[2;35m0 311542/2 11 method <- java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/String.getChars[0m +[2;35m0 311542/2 11 method <- java/io/BufferedWriter.write[0m +[2;35m0 311542/2 10 method <- java/io/Writer.write[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 11 method -> java/io/OutputStreamWriter.write[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.write[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.ensureOpen[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.ensureOpen[0m +[2;35m0 311542/2 11 method -> sun/nio/cs/StreamEncoder.implWrite[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.wrap[0m +[2;35m0 311542/2 10 method -> java/nio/HeapCharBuffer.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.<init>[0m +[2;35m0 311542/2 10 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 11 method -> java/nio/Buffer.limit[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.limit[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/HeapCharBuffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.wrap[0m +[2;35m0 311542/2 11 method -> java/nio/Buffer.hasRemaining[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.hasRemaining[0m +[2;35m0 311542/2 11 method -> java/nio/charset/CharsetEncoder.encode[0m +[2;35m0 311542/2 11 method -> sun/nio/cs/US_ASCII$Encoder.encodeLoop[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.hasArray[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.hasArray[0m +[2;35m0 311542/2 11 method -> java/nio/ByteBuffer.hasArray[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.hasArray[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.array[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 11 method -> java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 9 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 12 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/US_ASCII$Encoder.encodeLoop[0m +[2;35m0 311542/2 11 method -> java/nio/charset/CoderResult.isOverflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isOverflow[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CharsetEncoder.encode[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.remaining[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.remaining[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.implWrite[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.write[0m +[2;35m0 311542/2 10 method <- java/io/OutputStreamWriter.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/OutputStreamWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.flushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.implFlushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.writeBytes[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.flip[0m +[2;35m0 311542/2 9 method <- java/nio/Buffer.flip[0m +[2;35m0 311542/2 11 method -> java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 9 method <- java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 9 method <- java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 11 method -> java/io/BufferedOutputStream.write[0m +[2;35m0 311542/2 10 method -> java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.write[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/FileOutputStream.write[0m +[2;35m0 311542/2 10 method -> java/io/FileOutputStream.writeBytes[0m +[2;32m0 311542/2 17 syscall -> write[0m +[2;32m0 311542/2 104 syscall <- write[0m +[2;35m0 311542/2 9 method <- java/io/FileOutputStream.writeBytes[0m +[2;35m0 311542/2 11 method <- java/io/FileOutputStream.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.clear[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.clear[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.writeBytes[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.implFlushBuffer[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/OutputStreamWriter.flushBuffer[0m +[2;35m0 311542/2 11 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 11 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.print[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.newLine[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.newLine[0m +[2;35m0 311542/2 10 method -> java/io/Writer.write[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.write[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 9 method <- java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.min[0m +[2;35m0 311542/2 9 method <- java/io/BufferedWriter.min[0m +[2;35m0 311542/2 10 method -> java/lang/String.getChars[0m +[2;35m0 311542/2 10 method -> java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/String.getChars[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.write[0m +[2;35m0 311542/2 10 method <- java/io/Writer.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.newLine[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 9 method <- java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 10 method -> java/io/OutputStreamWriter.write[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.write[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.ensureOpen[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.ensureOpen[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.implWrite[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.wrap[0m +[2;35m0 311542/2 10 method -> java/nio/HeapCharBuffer.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.<init>[0m +[2;35m0 311542/2 9 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 9 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.limit[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.limit[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/HeapCharBuffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.wrap[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.hasRemaining[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.hasRemaining[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CharsetEncoder.encode[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/US_ASCII$Encoder.encodeLoop[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.hasArray[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.hasArray[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.hasArray[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.hasArray[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.array[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 11 method -> java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 9 method <- java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 11 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 9 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/US_ASCII$Encoder.encodeLoop[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CoderResult.isOverflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isOverflow[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CharsetEncoder.encode[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.remaining[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.remaining[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.implWrite[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.write[0m +[2;35m0 311542/2 10 method <- java/io/OutputStreamWriter.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/OutputStreamWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.flushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.implFlushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.writeBytes[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.flip[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.flip[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 9 method <- java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 9 method <- java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.write[0m +[2;35m0 311542/2 10 method -> java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.write[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/FileOutputStream.write[0m +[2;35m0 311542/2 10 method -> java/io/FileOutputStream.writeBytes[0m +[2;32m0 311542/2 11 syscall -> write[0m +[2;32m0 311542/2 64 syscall <- write[0m +[2;35m0 311542/2 8 method <- java/io/FileOutputStream.writeBytes[0m +[2;35m0 311542/2 11 method <- java/io/FileOutputStream.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.clear[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.clear[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.writeBytes[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.implFlushBuffer[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/OutputStreamWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.newLine[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.println[0m +[2;35m0 311542/2 10 method -> java/lang/Thread.currentThread[0m +[2;35m0 311542/2 10 method <- java/lang/Thread.currentThread[0m +[2;35m0 311542/2 10 method -> java/lang/Thread.sleep[0m +[2;32m0 311542/2 14 syscall -> pollsys[0m +[2;32m0 311542/10 59985 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 59968 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 59981 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 59960 syscall <- pollsys[0m +[2;32m0 311542/10 28 syscall -> pollsys[0m +[2;32m0 311542/10 59967 syscall <- pollsys[0m +[2;32m0 311542/10 22 syscall -> pollsys[0m +[2;32m0 311542/3 1050003 syscall <- lwp_cond_wait[0m +[2;32m0 311542/3 14 syscall -> lwp_cond_wait[0m +[2;32m0 311542/10 59985 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 59969 syscall <- pollsys[0m +[2;32m0 311542/10 25 syscall -> pollsys[0m +[2;32m0 311542/10 59980 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 51269 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 58678 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 50207 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 59714 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 59967 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 59965 syscall <- pollsys[0m +[2;32m0 311542/10 28 syscall -> pollsys[0m +[2;32m0 311542/10 59970 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 59952 syscall <- pollsys[0m +[2;32m0 311542/10 31 syscall -> pollsys[0m +[2;32m0 311542/10 59969 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +Function C +[2;32m0 311542/2 1006879 syscall <- pollsys[0m +[2;35m0 311542/2 29 method <- java/lang/Thread.sleep[0m +[2;35m0 311542/2 45 method -> Func_abc.func_c[0m +[2;35m0 311542/2 36 method -> java/io/PrintStream.println[0m +[2;35m0 311542/2 11 method -> java/io/PrintStream.print[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 11 method -> java/io/Writer.write[0m +[2;35m0 311542/2 11 method -> java/io/BufferedWriter.write[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 12 method -> java/io/BufferedWriter.min[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.min[0m +[2;35m0 311542/2 11 method -> java/lang/String.getChars[0m +[2;35m0 311542/2 11 method -> java/lang/System.arraycopy[0m +[2;35m0 311542/2 11 method <- java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/String.getChars[0m +[2;35m0 311542/2 11 method <- java/io/BufferedWriter.write[0m +[2;35m0 311542/2 10 method <- java/io/Writer.write[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 11 method -> java/io/OutputStreamWriter.write[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.write[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.ensureOpen[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.ensureOpen[0m +[2;35m0 311542/2 11 method -> sun/nio/cs/StreamEncoder.implWrite[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.wrap[0m +[2;35m0 311542/2 11 method -> java/nio/HeapCharBuffer.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.<init>[0m +[2;35m0 311542/2 10 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 11 method -> java/nio/Buffer.limit[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.limit[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/HeapCharBuffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.wrap[0m +[2;35m0 311542/2 11 method -> java/nio/Buffer.hasRemaining[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.hasRemaining[0m +[2;35m0 311542/2 11 method -> java/nio/charset/CharsetEncoder.encode[0m +[2;35m0 311542/2 11 method -> sun/nio/cs/US_ASCII$Encoder.encodeLoop[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.hasArray[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.hasArray[0m +[2;35m0 311542/2 11 method -> java/nio/ByteBuffer.hasArray[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.hasArray[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.array[0m +[2;35m0 311542/2 9 method <- java/nio/CharBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 11 method -> java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 12 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/US_ASCII$Encoder.encodeLoop[0m +[2;35m0 311542/2 11 method -> java/nio/charset/CoderResult.isOverflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isOverflow[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CharsetEncoder.encode[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.remaining[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.remaining[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.implWrite[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.write[0m +[2;35m0 311542/2 10 method <- java/io/OutputStreamWriter.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/OutputStreamWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.flushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.implFlushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.writeBytes[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.flip[0m +[2;35m0 311542/2 9 method <- java/nio/Buffer.flip[0m +[2;35m0 311542/2 11 method -> java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 9 method <- java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 11 method -> java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 9 method <- java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 11 method -> java/io/BufferedOutputStream.write[0m +[2;35m0 311542/2 10 method -> java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.write[0m +[2;35m0 311542/2 11 method -> java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/FileOutputStream.write[0m +[2;35m0 311542/2 10 method -> java/io/FileOutputStream.writeBytes[0m +[2;32m0 311542/2 17 syscall -> write[0m +[2;32m0 311542/2 143 syscall <- write[0m +[2;35m0 311542/2 9 method <- java/io/FileOutputStream.writeBytes[0m +[2;35m0 311542/2 11 method <- java/io/FileOutputStream.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.clear[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.clear[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.writeBytes[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.implFlushBuffer[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/OutputStreamWriter.flushBuffer[0m +[2;35m0 311542/2 11 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method -> java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/lang/String.indexOf[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.print[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.newLine[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.newLine[0m +[2;35m0 311542/2 10 method -> java/io/Writer.write[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.write[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 9 method <- java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.min[0m +[2;35m0 311542/2 9 method <- java/io/BufferedWriter.min[0m +[2;35m0 311542/2 10 method -> java/lang/String.getChars[0m +[2;35m0 311542/2 10 method -> java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/String.getChars[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.write[0m +[2;35m0 311542/2 10 method <- java/io/Writer.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.newLine[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.ensureOpen[0m +[2;35m0 311542/2 10 method -> java/io/OutputStreamWriter.write[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.write[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.ensureOpen[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.ensureOpen[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.implWrite[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.wrap[0m +[2;35m0 311542/2 10 method -> java/nio/HeapCharBuffer.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.<init>[0m +[2;35m0 311542/2 9 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 9 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.limit[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.limit[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/HeapCharBuffer.<init>[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.wrap[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.hasRemaining[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.hasRemaining[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CharsetEncoder.encode[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/US_ASCII$Encoder.encodeLoop[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.hasArray[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.hasArray[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.hasArray[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.hasArray[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.array[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 11 method -> java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 9 method <- java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 11 method -> java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/CharBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 9 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.position[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/US_ASCII$Encoder.encodeArrayLoop[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/US_ASCII$Encoder.encodeLoop[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CoderResult.isOverflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isOverflow[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CharsetEncoder.encode[0m +[2;35m0 311542/2 10 method -> java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method <- java/nio/charset/CoderResult.isUnderflow[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.remaining[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.remaining[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.implWrite[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.write[0m +[2;35m0 311542/2 10 method <- java/io/OutputStreamWriter.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/OutputStreamWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.flushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.implFlushBuffer[0m +[2;35m0 311542/2 10 method -> sun/nio/cs/StreamEncoder.writeBytes[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.flip[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.flip[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 9 method <- java/nio/ByteBuffer.array[0m +[2;35m0 311542/2 10 method -> java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 9 method <- java/nio/ByteBuffer.arrayOffset[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method -> java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 9 method <- java/io/PrintStream.ensureOpen[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.write[0m +[2;35m0 311542/2 10 method -> java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.write[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/FileOutputStream.write[0m +[2;35m0 311542/2 10 method -> java/io/FileOutputStream.writeBytes[0m +[2;32m0 311542/2 11 syscall -> write[0m +[2;32m0 311542/2 63 syscall <- write[0m +[2;35m0 311542/2 8 method <- java/io/FileOutputStream.writeBytes[0m +[2;35m0 311542/2 11 method <- java/io/FileOutputStream.write[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.write[0m +[2;35m0 311542/2 10 method -> java/nio/Buffer.clear[0m +[2;35m0 311542/2 10 method <- java/nio/Buffer.clear[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.writeBytes[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.implFlushBuffer[0m +[2;35m0 311542/2 10 method <- sun/nio/cs/StreamEncoder.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/OutputStreamWriter.flushBuffer[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method -> java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flushBuffer[0m +[2;35m0 311542/2 10 method <- java/io/BufferedOutputStream.flush[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.newLine[0m +[2;35m0 311542/2 10 method <- java/io/PrintStream.println[0m +[2;35m0 311542/2 10 method -> java/lang/Thread.currentThread[0m +[2;35m0 311542/2 10 method <- java/lang/Thread.currentThread[0m +[2;35m0 311542/2 11 method -> java/lang/Thread.sleep[0m +[2;32m0 311542/2 14 syscall -> pollsys[0m +[2;32m0 311542/10 59975 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 59963 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 59976 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 59961 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 59968 syscall <- pollsys[0m +[2;32m0 311542/10 22 syscall -> pollsys[0m +[2;32m0 311542/3 1009924 syscall <- lwp_cond_wait[0m +[2;32m0 311542/3 17 syscall -> lwp_cond_wait[0m +[2;32m0 311542/10 50021 syscall <- pollsys[0m +[2;32m0 311542/10 31 syscall -> pollsys[0m +[2;32m0 311542/10 59941 syscall <- pollsys[0m +[2;32m0 311542/10 27 syscall -> pollsys[0m +[2;32m0 311542/10 60034 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 61298 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 58590 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 50205 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 59723 syscall <- pollsys[0m +[2;32m0 311542/10 29 syscall -> pollsys[0m +[2;32m0 311542/10 60208 syscall <- pollsys[0m +[2;32m0 311542/10 28 syscall -> pollsys[0m +[2;32m0 311542/10 59733 syscall <- pollsys[0m +[2;32m0 311542/10 28 syscall -> pollsys[0m +[2;32m0 311542/10 59986 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 59938 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/10 59968 syscall <- pollsys[0m +[2;32m0 311542/10 30 syscall -> pollsys[0m +[2;32m0 311542/2 1007088 syscall <- pollsys[0m +[2;35m0 311542/2 30 method <- java/lang/Thread.sleep[0m +[2;35m0 311542/2 28 method <- Func_abc.func_c[0m +[2;35m0 311542/2 10 method <- Func_abc.func_b[0m +[2;35m0 311542/2 10 method <- Func_abc.func_a[0m +[2;35m0 311542/2 10 method <- Func_abc.main[0m +[2;35m0 311542/2 27 method -> java/lang/Thread.exit[0m +[2;35m0 311542/2 38 method -> java/lang/ThreadGroup.remove[0m +[2;35m0 311542/2 19 method -> java/lang/System.arraycopy[0m +[2;35m0 311542/2 11 method <- java/lang/System.arraycopy[0m +[2;35m0 311542/2 14 method -> java/lang/Object.notifyAll[0m +[2;35m0 311542/2 16 method <- java/lang/Object.notifyAll[0m +[2;35m0 311542/2 11 method <- java/lang/ThreadGroup.remove[0m +[2;35m0 311542/2 16 method <- java/lang/Thread.exit[0m +[2;32m0 311542/2 22 syscall -> mprotect[0m +[2;32m0 311542/2 19 syscall <- mprotect[0m +[2;32m0 311542/2 19 syscall -> lwp_sigmask[0m +[2;32m0 311542/2 7 syscall <- lwp_sigmask[0m +[2;32m0 311542/2 25 syscall -> lwp_self[0m +[2;32m0 311542/2 6 syscall <- lwp_self[0m +[2;32m0 311542/2 7 syscall -> lwp_sigmask[0m +[2;32m0 311542/2 5 syscall <- lwp_sigmask[0m +[2;32m0 311542/2 6 syscall -> lwp_sigmask[0m +[2;32m0 311542/2 6 syscall <- lwp_sigmask[0m +[2;35m0 311542/2 124 method -> java/lang/Thread.<init>[0m +[2;35m0 311542/2 12 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 11 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 11 method -> java/lang/Thread.init[0m +[2;35m0 311542/2 10 method -> java/lang/Thread.currentThread[0m +[2;35m0 311542/2 10 method <- java/lang/Thread.currentThread[0m +[2;35m0 311542/2 11 method -> java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 10 method <- java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 11 method -> java/lang/ThreadGroup.checkAccess[0m +[2;35m0 311542/2 10 method -> java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 10 method <- java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 10 method <- java/lang/ThreadGroup.checkAccess[0m +[2;35m0 311542/2 10 method -> java/lang/ThreadGroup.addUnstarted[0m +[2;35m0 311542/2 10 method <- java/lang/ThreadGroup.addUnstarted[0m +[2;35m0 311542/2 11 method -> java/lang/String.toCharArray[0m +[2;35m0 311542/2 11 method -> java/lang/String.getChars[0m +[2;35m0 311542/2 10 method -> java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/System.arraycopy[0m +[2;35m0 311542/2 10 method <- java/lang/String.getChars[0m +[2;35m0 311542/2 10 method <- java/lang/String.toCharArray[0m +[2;35m0 311542/2 10 method -> java/lang/Thread.getContextClassLoader[0m +[2;35m0 311542/2 10 method <- java/lang/Thread.getContextClassLoader[0m +[2;35m0 311542/2 11 method -> java/security/AccessController.getContext[0m +[2;35m0 311542/2 10 method -> java/security/AccessController.getStackAccessControlContext[0m +[2;35m0 311542/2 17 method <- java/security/AccessController.getStackAccessControlContext[0m +[2;35m0 311542/2 11 method -> java/security/AccessControlContext.optimize[0m +[2;35m0 311542/2 10 method -> java/security/AccessController.getInheritedAccessControlContext[0m +[2;35m0 311542/2 11 method <- java/security/AccessController.getInheritedAccessControlContext[0m +[2;35m0 311542/2 11 method <- java/security/AccessControlContext.optimize[0m +[2;35m0 311542/2 10 method <- java/security/AccessController.getContext[0m +[2;35m0 311542/2 10 method -> java/lang/Thread.setPriority[0m +[2;35m0 311542/2 10 method -> java/lang/Thread.checkAccess[0m +[2;35m0 311542/2 9 method -> java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 9 method <- java/lang/System.getSecurityManager[0m +[2;35m0 311542/2 10 method <- java/lang/Thread.checkAccess[0m +[2;35m0 311542/2 11 method -> java/lang/Thread.setPriority0[0m +[2;32m0 311542/2 15 syscall -> priocntlsys[0m +[2;32m0 311542/2 9 syscall <- priocntlsys[0m +[2;32m0 311542/2 7 syscall -> priocntlsys[0m +[2;32m0 311542/2 8 syscall <- priocntlsys[0m +[2;35m0 311542/2 7 method <- java/lang/Thread.setPriority0[0m +[2;35m0 311542/2 10 method <- java/lang/Thread.setPriority[0m +[2;35m0 311542/2 11 method -> java/lang/Thread.nextThreadID[0m +[2;35m0 311542/2 11 method <- java/lang/Thread.nextThreadID[0m +[2;35m0 311542/2 10 method <- java/lang/Thread.init[0m +[2;35m0 311542/2 10 method <- java/lang/Thread.<init>[0m +[2;35m0 311542/2 12 method -> java/lang/ThreadGroup.add[0m +[2;35m0 311542/2 11 method <- java/lang/ThreadGroup.add[0m +[2;32m0 311542/2 10 syscall -> mprotect[0m +[2;32m0 311542/2 7 syscall <- mprotect[0m +[2;35m0 311542/2 12 method -> java/lang/Shutdown.shutdown[0m +[2;35m0 311542/2 15 method -> java/lang/Shutdown.sequence[0m +[2;35m0 311542/2 12 method -> java/lang/Shutdown.runHooks[0m +[2;35m0 311542/2 14 method -> java/util/AbstractList.iterator[0m +[2;32m0 311542/2 30 syscall -> llseek[0m +[2;32m0 311542/2 9 syscall <- llseek[0m +[2;32m0 311542/2 8 syscall -> read[0m +[2;32m0 311542/2 1709 syscall <- read[0m +[2;32m0 311542/2 27 syscall -> llseek[0m +[2;32m0 311542/2 14 syscall <- llseek[0m +[2;32m0 311542/2 7 syscall -> read[0m +[2;32m0 311542/2 23 syscall <- read[0m +[2;35m0 311542/2 280 method -> java/util/AbstractList$Itr.<init>[0m +[2;35m0 311542/2 28 method -> java/util/AbstractList$Itr.<init>[0m +[2;35m0 311542/2 17 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 12 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 25 method <- java/util/AbstractList$Itr.<init>[0m +[2;35m0 311542/2 11 method <- java/util/AbstractList$Itr.<init>[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList.iterator[0m +[2;35m0 311542/2 17 method -> java/util/AbstractList$Itr.hasNext[0m +[2;35m0 311542/2 16 method <- java/util/AbstractList$Itr.hasNext[0m +[2;35m0 311542/2 13 method -> java/util/AbstractList$Itr.next[0m +[2;35m0 311542/2 12 method -> java/util/AbstractList$Itr.checkForComodification[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList$Itr.checkForComodification[0m +[2;35m0 311542/2 13 method -> java/util/ArrayList.get[0m +[2;35m0 311542/2 11 method -> java/util/ArrayList.RangeCheck[0m +[2;35m0 311542/2 10 method <- java/util/ArrayList.RangeCheck[0m +[2;35m0 311542/2 10 method <- java/util/ArrayList.get[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList$Itr.next[0m +[2;35m0 311542/2 15 method -> java/io/Console$1$1.run[0m +[2;35m0 311542/2 14 method -> java/io/Console.access$600[0m +[2;35m0 311542/2 12 method <- java/io/Console.access$600[0m +[2;35m0 311542/2 10 method <- java/io/Console$1$1.run[0m +[2;35m0 311542/2 10 method -> java/util/AbstractList$Itr.hasNext[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList$Itr.hasNext[0m +[2;35m0 311542/2 10 method -> java/util/AbstractList$Itr.next[0m +[2;35m0 311542/2 10 method -> java/util/AbstractList$Itr.checkForComodification[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList$Itr.checkForComodification[0m +[2;35m0 311542/2 11 method -> java/util/ArrayList.get[0m +[2;35m0 311542/2 10 method -> java/util/ArrayList.RangeCheck[0m +[2;35m0 311542/2 10 method <- java/util/ArrayList.RangeCheck[0m +[2;35m0 311542/2 10 method <- java/util/ArrayList.get[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList$Itr.next[0m +[2;35m0 311542/2 11 method -> java/lang/ApplicationShutdownHooks.run[0m +[2;35m0 311542/2 16 method -> java/util/IdentityHashMap.keySet[0m +[2;32m0 311542/2 27 syscall -> llseek[0m +[2;32m0 311542/2 7 syscall <- llseek[0m +[2;32m0 311542/2 8 syscall -> read[0m +[2;32m0 311542/2 18 syscall <- read[0m +[2;32m0 311542/2 7 syscall -> llseek[0m +[2;32m0 311542/2 6 syscall <- llseek[0m +[2;32m0 311542/2 6 syscall -> read[0m +[2;32m0 311542/2 17 syscall <- read[0m +[2;35m0 311542/2 139 method -> java/util/IdentityHashMap$KeySet.<init>[0m +[2;35m0 311542/2 14 method -> java/util/IdentityHashMap$KeySet.<init>[0m +[2;35m0 311542/2 14 method -> java/util/AbstractSet.<init>[0m +[2;35m0 311542/2 10 method -> java/util/AbstractCollection.<init>[0m +[2;35m0 311542/2 10 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 11 method <- java/util/AbstractCollection.<init>[0m +[2;35m0 311542/2 10 method <- java/util/AbstractSet.<init>[0m +[2;35m0 311542/2 10 method <- java/util/IdentityHashMap$KeySet.<init>[0m +[2;35m0 311542/2 10 method <- java/util/IdentityHashMap$KeySet.<init>[0m +[2;35m0 311542/2 10 method <- java/util/IdentityHashMap.keySet[0m +[2;35m0 311542/2 14 method -> java/util/IdentityHashMap$KeySet.iterator[0m +[2;32m0 311542/2 17 syscall -> llseek[0m +[2;32m0 311542/2 7 syscall <- llseek[0m +[2;32m0 311542/2 7 syscall -> read[0m +[2;32m0 311542/2 15 syscall <- read[0m +[2;32m0 311542/2 7 syscall -> llseek[0m +[2;32m0 311542/2 6 syscall <- llseek[0m +[2;32m0 311542/2 6 syscall -> read[0m +[2;32m0 311542/2 12 syscall <- read[0m +[2;32m0 311542/2 30 syscall -> llseek[0m +[2;32m0 311542/2 6 syscall <- llseek[0m +[2;32m0 311542/2 7 syscall -> read[0m +[2;32m0 311542/2 14 syscall <- read[0m +[2;32m0 311542/2 7 syscall -> llseek[0m +[2;32m0 311542/2 6 syscall <- llseek[0m +[2;32m0 311542/2 6 syscall -> read[0m +[2;32m0 311542/2 17 syscall <- read[0m +[2;35m0 311542/2 125 method -> java/util/IdentityHashMap$KeyIterator.<init>[0m +[2;35m0 311542/2 14 method -> java/util/IdentityHashMap$KeyIterator.<init>[0m +[2;35m0 311542/2 14 method -> java/util/IdentityHashMap$IdentityHashMapIterator.<init>[0m +[2;35m0 311542/2 13 method -> java/util/IdentityHashMap$IdentityHashMapIterator.<init>[0m +[2;35m0 311542/2 57 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 11 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 15 method -> java/util/IdentityHashMap.access$000[0m +[2;35m0 311542/2 11 method <- java/util/IdentityHashMap.access$000[0m +[2;35m0 311542/2 15 method -> java/util/IdentityHashMap.access$200[0m +[2;35m0 311542/2 11 method <- java/util/IdentityHashMap.access$200[0m +[2;35m0 311542/2 13 method <- java/util/IdentityHashMap$IdentityHashMapIterator.<init>[0m +[2;35m0 311542/2 10 method <- java/util/IdentityHashMap$IdentityHashMapIterator.<init>[0m +[2;35m0 311542/2 10 method <- java/util/IdentityHashMap$KeyIterator.<init>[0m +[2;35m0 311542/2 10 method <- java/util/IdentityHashMap$KeyIterator.<init>[0m +[2;35m0 311542/2 10 method <- java/util/IdentityHashMap$KeySet.iterator[0m +[2;35m0 311542/2 14 method -> java/util/IdentityHashMap$IdentityHashMapIterator.hasNext[0m +[2;35m0 311542/2 11 method <- java/util/IdentityHashMap$IdentityHashMapIterator.hasNext[0m +[2;35m0 311542/2 11 method -> java/util/IdentityHashMap$KeySet.iterator[0m +[2;35m0 311542/2 10 method -> java/util/IdentityHashMap$KeyIterator.<init>[0m +[2;35m0 311542/2 10 method -> java/util/IdentityHashMap$KeyIterator.<init>[0m +[2;35m0 311542/2 10 method -> java/util/IdentityHashMap$IdentityHashMapIterator.<init>[0m +[2;35m0 311542/2 10 method -> java/util/IdentityHashMap$IdentityHashMapIterator.<init>[0m +[2;35m0 311542/2 10 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/util/IdentityHashMap$IdentityHashMapIterator.<init>[0m +[2;35m0 311542/2 10 method <- java/util/IdentityHashMap$IdentityHashMapIterator.<init>[0m +[2;35m0 311542/2 10 method <- java/util/IdentityHashMap$KeyIterator.<init>[0m +[2;35m0 311542/2 10 method <- java/util/IdentityHashMap$KeyIterator.<init>[0m +[2;35m0 311542/2 10 method <- java/util/IdentityHashMap$KeySet.iterator[0m +[2;35m0 311542/2 10 method -> java/util/IdentityHashMap$IdentityHashMapIterator.hasNext[0m +[2;35m0 311542/2 10 method <- java/util/IdentityHashMap$IdentityHashMapIterator.hasNext[0m +[2;35m0 311542/2 11 method <- java/lang/ApplicationShutdownHooks.run[0m +[2;35m0 311542/2 10 method -> java/util/AbstractList$Itr.hasNext[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList$Itr.hasNext[0m +[2;35m0 311542/2 10 method -> java/util/AbstractList$Itr.next[0m +[2;35m0 311542/2 10 method -> java/util/AbstractList$Itr.checkForComodification[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList$Itr.checkForComodification[0m +[2;35m0 311542/2 11 method -> java/util/ArrayList.get[0m +[2;35m0 311542/2 10 method -> java/util/ArrayList.RangeCheck[0m +[2;35m0 311542/2 10 method <- java/util/ArrayList.RangeCheck[0m +[2;35m0 311542/2 10 method <- java/util/ArrayList.get[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList$Itr.next[0m +[2;35m0 311542/2 11 method -> java/io/File$1.run[0m +[2;32m0 311542/2 17 syscall -> llseek[0m +[2;32m0 311542/2 8 syscall <- llseek[0m +[2;32m0 311542/2 8 syscall -> read[0m +[2;32m0 311542/2 17 syscall <- read[0m +[2;32m0 311542/2 7 syscall -> llseek[0m +[2;32m0 311542/2 6 syscall <- llseek[0m +[2;32m0 311542/2 6 syscall -> read[0m +[2;32m0 311542/2 12 syscall <- read[0m +[2;35m0 311542/2 62 method -> java/io/DeleteOnExitHook.<clinit>[0m +[2;32m0 311542/2 19 syscall -> llseek[0m +[2;32m0 311542/2 6 syscall <- llseek[0m +[2;32m0 311542/2 7 syscall -> read[0m +[2;32m0 311542/2 14 syscall <- read[0m +[2;32m0 311542/2 7 syscall -> llseek[0m +[2;32m0 311542/2 6 syscall <- llseek[0m +[2;32m0 311542/2 6 syscall -> read[0m +[2;32m0 311542/2 12 syscall <- read[0m +[2;35m0 311542/2 130 method -> java/util/LinkedHashSet.<init>[0m +[2;35m0 311542/2 15 method -> java/util/HashSet.<init>[0m +[2;35m0 311542/2 10 method -> java/util/AbstractSet.<init>[0m +[2;35m0 311542/2 10 method -> java/util/AbstractCollection.<init>[0m +[2;35m0 311542/2 10 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 11 method <- java/util/AbstractCollection.<init>[0m +[2;35m0 311542/2 10 method <- java/util/AbstractSet.<init>[0m +[2;35m0 311542/2 15 method -> java/util/LinkedHashMap.<init>[0m +[2;35m0 311542/2 13 method -> java/util/HashMap.<init>[0m +[2;35m0 311542/2 10 method -> java/util/AbstractMap.<init>[0m +[2;35m0 311542/2 10 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/util/AbstractMap.<init>[0m +[2;35m0 311542/2 12 method -> java/lang/Float.isNaN[0m +[2;35m0 311542/2 10 method <- java/lang/Float.isNaN[0m +[2;35m0 311542/2 15 method -> java/util/LinkedHashMap.init[0m +[2;35m0 311542/2 10 method -> java/util/LinkedHashMap$Entry.<init>[0m +[2;35m0 311542/2 10 method -> java/util/HashMap$Entry.<init>[0m +[2;35m0 311542/2 10 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 9 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/util/HashMap$Entry.<init>[0m +[2;35m0 311542/2 10 method <- java/util/LinkedHashMap$Entry.<init>[0m +[2;35m0 311542/2 10 method <- java/util/LinkedHashMap.init[0m +[2;35m0 311542/2 10 method <- java/util/HashMap.<init>[0m +[2;35m0 311542/2 10 method <- java/util/LinkedHashMap.<init>[0m +[2;35m0 311542/2 10 method <- java/util/HashSet.<init>[0m +[2;35m0 311542/2 10 method <- java/util/LinkedHashSet.<init>[0m +[2;35m0 311542/2 12 method <- java/io/DeleteOnExitHook.<clinit>[0m +[2;35m0 311542/2 13 method -> java/io/DeleteOnExitHook.hook[0m +[2;35m0 311542/2 13 method -> java/io/DeleteOnExitHook.<init>[0m +[2;35m0 311542/2 12 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/io/DeleteOnExitHook.<init>[0m +[2;35m0 311542/2 10 method <- java/io/DeleteOnExitHook.hook[0m +[2;35m0 311542/2 13 method -> java/io/DeleteOnExitHook.run[0m +[2;35m0 311542/2 15 method -> java/util/ArrayList.<init>[0m +[2;35m0 311542/2 10 method -> java/util/AbstractList.<init>[0m +[2;35m0 311542/2 10 method -> java/util/AbstractCollection.<init>[0m +[2;35m0 311542/2 10 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 9 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/util/AbstractCollection.<init>[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList.<init>[0m +[2;35m0 311542/2 15 method -> java/util/AbstractCollection.toArray[0m +[2;35m0 311542/2 13 method -> java/util/HashSet.size[0m +[2;35m0 311542/2 12 method <- java/util/HashSet.size[0m +[2;35m0 311542/2 13 method -> java/util/HashSet.iterator[0m +[2;35m0 311542/2 12 method -> java/util/HashMap.keySet[0m +[2;32m0 311542/2 19 syscall -> llseek[0m +[2;32m0 311542/2 7 syscall <- llseek[0m +[2;32m0 311542/2 8 syscall -> read[0m +[2;32m0 311542/2 17 syscall <- read[0m +[2;32m0 311542/2 7 syscall -> llseek[0m +[2;32m0 311542/2 6 syscall <- llseek[0m +[2;32m0 311542/2 6 syscall -> read[0m +[2;32m0 311542/2 12 syscall <- read[0m +[2;35m0 311542/2 68 method -> java/util/HashMap$KeySet.<init>[0m +[2;35m0 311542/2 14 method -> java/util/HashMap$KeySet.<init>[0m +[2;35m0 311542/2 14 method -> java/util/AbstractSet.<init>[0m +[2;35m0 311542/2 10 method -> java/util/AbstractCollection.<init>[0m +[2;35m0 311542/2 10 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 11 method <- java/util/AbstractCollection.<init>[0m +[2;35m0 311542/2 10 method <- java/util/AbstractSet.<init>[0m +[2;35m0 311542/2 10 method <- java/util/HashMap$KeySet.<init>[0m +[2;35m0 311542/2 10 method <- java/util/HashMap$KeySet.<init>[0m +[2;35m0 311542/2 10 method <- java/util/HashMap.keySet[0m +[2;35m0 311542/2 13 method -> java/util/HashMap$KeySet.iterator[0m +[2;35m0 311542/2 14 method -> java/util/LinkedHashMap.newKeyIterator[0m +[2;32m0 311542/2 16 syscall -> llseek[0m +[2;32m0 311542/2 6 syscall <- llseek[0m +[2;32m0 311542/2 7 syscall -> read[0m +[2;32m0 311542/2 14 syscall <- read[0m +[2;32m0 311542/2 7 syscall -> llseek[0m +[2;32m0 311542/2 6 syscall <- llseek[0m +[2;32m0 311542/2 6 syscall -> read[0m +[2;32m0 311542/2 16 syscall <- read[0m +[2;32m0 311542/2 81 syscall -> llseek[0m +[2;32m0 311542/2 7 syscall <- llseek[0m +[2;32m0 311542/2 7 syscall -> read[0m +[2;32m0 311542/2 14 syscall <- read[0m +[2;32m0 311542/2 7 syscall -> llseek[0m +[2;32m0 311542/2 6 syscall <- llseek[0m +[2;32m0 311542/2 6 syscall -> read[0m +[2;32m0 311542/2 12 syscall <- read[0m +[2;35m0 311542/2 77 method -> java/util/LinkedHashMap$KeyIterator.<init>[0m +[2;35m0 311542/2 14 method -> java/util/LinkedHashMap$KeyIterator.<init>[0m +[2;35m0 311542/2 14 method -> java/util/LinkedHashMap$LinkedHashIterator.<init>[0m +[2;35m0 311542/2 12 method -> java/util/LinkedHashMap$LinkedHashIterator.<init>[0m +[2;35m0 311542/2 13 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 19 method <- java/util/LinkedHashMap$LinkedHashIterator.<init>[0m +[2;35m0 311542/2 11 method <- java/util/LinkedHashMap$LinkedHashIterator.<init>[0m +[2;35m0 311542/2 10 method <- java/util/LinkedHashMap$KeyIterator.<init>[0m +[2;35m0 311542/2 10 method <- java/util/LinkedHashMap$KeyIterator.<init>[0m +[2;35m0 311542/2 10 method <- java/util/LinkedHashMap.newKeyIterator[0m +[2;35m0 311542/2 10 method <- java/util/HashMap$KeySet.iterator[0m +[2;35m0 311542/2 10 method <- java/util/HashSet.iterator[0m +[2;35m0 311542/2 14 method -> java/util/LinkedHashMap$LinkedHashIterator.hasNext[0m +[2;35m0 311542/2 11 method <- java/util/LinkedHashMap$LinkedHashIterator.hasNext[0m +[2;35m0 311542/2 11 method <- java/util/AbstractCollection.toArray[0m +[2;35m0 311542/2 11 method -> java/lang/Object.getClass[0m +[2;35m0 311542/2 12 method <- java/lang/Object.getClass[0m +[2;35m0 311542/2 11 method <- java/util/ArrayList.<init>[0m +[2;35m0 311542/2 14 method -> java/util/Collections.reverse[0m +[2;35m0 311542/2 15 method <- java/util/Collections.reverse[0m +[2;35m0 311542/2 13 method -> java/util/AbstractList.iterator[0m +[2;35m0 311542/2 11 method -> java/util/AbstractList$Itr.<init>[0m +[2;35m0 311542/2 10 method -> java/util/AbstractList$Itr.<init>[0m +[2;35m0 311542/2 10 method -> java/lang/Object.<init>[0m +[2;35m0 311542/2 9 method <- java/lang/Object.<init>[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList$Itr.<init>[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList$Itr.<init>[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList.iterator[0m +[2;35m0 311542/2 13 method -> java/util/AbstractList$Itr.hasNext[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList$Itr.hasNext[0m +[2;35m0 311542/2 10 method <- java/io/DeleteOnExitHook.run[0m +[2;35m0 311542/2 10 method <- java/io/File$1.run[0m +[2;35m0 311542/2 10 method -> java/util/AbstractList$Itr.hasNext[0m +[2;35m0 311542/2 10 method <- java/util/AbstractList$Itr.hasNext[0m +[2;35m0 311542/2 10 method <- java/lang/Shutdown.runHooks[0m +[2;35m0 311542/2 12 method <- java/lang/Shutdown.sequence[0m +[2;35m0 311542/2 10 method <- java/lang/Shutdown.shutdown[0m +[2;32m0 311542/2 16 syscall -> lwp_cond_wait[0m +[2;32m0 311542/10 59973 syscall <- pollsys[0m +[2;32m0 311542/10 31 syscall -> lwp_cond_signal[0m +[2;32m0 311542/10 15 syscall <- lwp_cond_signal[0m +[2;32m0 311542/10 12 syscall -> lwp_sigmask[0m +[2;32m0 311542/10 7 syscall <- lwp_sigmask[0m +[2;32m0 311542/10 29 syscall -> lwp_exit[0m +[2;32m0 311542/2 13322 syscall <- lwp_cond_wait[0m +[2;32m0 311542/2 22 syscall -> lwp_park[0m +[2;32m0 311542/2 8 syscall <- lwp_park[0m +[2;32m0 311542/2 17 syscall -> mprotect[0m +[2;32m0 311542/2 16 syscall <- mprotect[0m +[2;32m0 311542/2 12 syscall -> lwp_cond_signal[0m +[2;32m0 311542/2 7 syscall <- lwp_cond_signal[0m +[2;32m0 311542/2 8 syscall -> lwp_cond_wait[0m +[2;32m0 311542/3 750221 syscall <- lwp_cond_wait[0m +[2;32m0 311542/3 36 syscall -> mprotect[0m +[2;32m0 311542/3 9 syscall <- mprotect[0m +[2;32m0 311542/3 7 syscall -> mprotect[0m +[2;32m0 311542/3 8 syscall <- mprotect[0m +[2;32m0 311542/3 14 syscall -> mprotect[0m +[2;32m0 311542/3 6 syscall <- mprotect[0m +[2;32m0 311542/3 40 syscall -> lwp_cond_signal[0m +[2;32m0 311542/3 7 syscall <- lwp_cond_signal[0m +[2;32m0 311542/3 7 syscall -> lwp_sigmask[0m +[2;32m0 311542/3 6 syscall <- lwp_sigmask[0m +[2;32m0 311542/3 11 syscall -> lwp_exit[0m +[2;32m0 311542/2 184 syscall <- lwp_cond_wait[0m +[2;32m0 311542/2 16 syscall -> lwp_sigmask[0m +[2;32m0 311542/2 6 syscall <- lwp_sigmask[0m +[2;32m0 311542/2 108 syscall -> unlink[0m +[2;32m0 311542/2 36 syscall <- unlink[0m +[2;32m0 311542/2 9 syscall -> lwp_sigmask[0m +[2;32m0 311542/2 6 syscall <- lwp_sigmask[0m +[2;32m0 311542/2 50 syscall -> lwp_exit[0m +[2;32m0 311542/1 6423404 syscall <- lwp_wait[0m +[2;32m0 311542/1 40 syscall -> open64[0m +[2;32m0 311542/1 101 syscall <- open64[0m +[2;32m0 311542/1 8 syscall -> ioctl[0m +[2;32m0 311542/1 14 syscall <- ioctl[0m +[2;32m0 311542/1 10 syscall -> close[0m +[2;32m0 311542/1 14 syscall <- close[0m +[2;32m0 311542/1 8 syscall -> open64[0m +[2;32m0 311542/1 31 syscall <- open64[0m +[2;32m0 311542/1 7 syscall -> ioctl[0m +[2;32m0 311542/1 7 syscall <- ioctl[0m +[2;32m0 311542/1 7 syscall -> close[0m +[2;32m0 311542/1 9 syscall <- close[0m +[2;32m0 311542/1 27 syscall -> rexit[0m +[2;32m0 311542/9 3298915 syscall <- lwp_cond_wait[0m +[2;32m0 311542/8 3375816 syscall <- lwp_cond_wait[0m +[2;32m0 311542/7 3376775 syscall <- lwp_cond_wait[0m +[2;32m0 311542/5 3738267 syscall <- lwp_cond_wait[0m +[2;32m0 311542/4 3760581 syscall <- lwp_cond_wait[0m +[2;32m0 311542/6 3376767 syscall <- lwp_park[0m + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_thread_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_thread_example.txt new file mode 100644 index 000000000000..3c5e83c6ee02 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_thread_example.txt @@ -0,0 +1,20 @@ +Following we see examples of the results of running j_thread.d. + +Here it is running while Code/Java/Func_abc is executing. + +# j_thread.d +TIME PID/TID -- THREAD +2007 Sep 24 04:01:34 311512/5 => Finalizer +2007 Sep 24 04:01:34 311512/4 => Reference Handler +2007 Sep 24 04:01:34 311512/7 => CompilerThread0 +2007 Sep 24 04:01:34 311512/6 => Signal Dispatcher +2007 Sep 24 04:01:34 311512/8 => CompilerThread1 +2007 Sep 24 04:01:34 311512/9 => Low Memory Detector +^C + +The fields of the output are, in order, Event time, Process ID/Thread ID, +entry (=>) or exit (<=) and Thread name. + +In this example we see six different threads starting, but we do not see +thread exit events as the JVM exited when the program stopped. + diff --git a/cddl/contrib/dtracetoolkit/Examples/j_who_example.txt b/cddl/contrib/dtracetoolkit/Examples/j_who_example.txt new file mode 100644 index 000000000000..f765d4852b8b --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/j_who_example.txt @@ -0,0 +1,17 @@ +In many cases, in order to get interesting or in-depth results the +ExtendedDTraceProbes flag needs to be set when DTracing Java programs. In +this case, because of the probes we have chosen to trace, running the program +Code/Java/Func_abc, both with (PID 311517) and without (311526) this flag, +and we can see that it has made no difference, with each reporting 35 lines +executed. + +# j_who.d +Tracing... Hit Ctrl-C to end. +^C + PID UID CALLS ARGS + 194441 100 18 /usr/local/lib/opera/9.02-20060919.1/opera + 309790 100 20 java_vm + 311517 100 35 java -XX:+ExtendedDTraceProbes Func_abc + 311526 100 35 java Func_abc + + diff --git a/cddl/contrib/dtracetoolkit/Examples/js_calldist_example.txt b/cddl/contrib/dtracetoolkit/Examples/js_calldist_example.txt new file mode 100644 index 000000000000..57058b7d9a77 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/js_calldist_example.txt @@ -0,0 +1,110 @@ +The following are examples of running js_calldist.d. + +Here it is running while the code at Code/JavaScript/func_clock.html is +being executed. + +# js_calldist.d +Tracing... Hit Ctrl-C to end. +^C + +Elapsed times (us), + func_clock.html, obj-new, Date + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 16 | 0 + + +Exclusive function elapsed times (us), + func_clock.html, func, setTimeout + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 128 | 0 + + func_clock.html, func, getElementById + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@ 1 + 16 |@@@@@@@@@@@@@@@@@@ 9 + 32 |@@@@@@@@@@@@@@@@@@@@ 10 + 64 | 0 + + func_clock.html, func, start + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 2048 | 0 + + func_clock.html, func, func_a + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 32768 | 0 + + func_clock.html, func, func_b + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 65536 | 0 + + func_clock.html, func, func_c + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 65536 | 0 + + +Inclusive function elapsed times (us), + func_clock.html, func, setTimeout + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 128 | 0 + + func_clock.html, func, getElementById + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@ 1 + 16 |@@@@@@@@@@@@@@@@@@ 9 + 32 |@@@@@@@@@@@@@@@@@@@@ 10 + 64 | 0 + + func_clock.html, func, func_c + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 65536 | 0 + + func_clock.html, func, func_a + value ------------- Distribution ------------- count + 32768 | 0 + 65536 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 131072 | 0 + + func_clock.html, func, func_b + value ------------- Distribution ------------- count + 32768 | 0 + 65536 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 131072 | 0 + + func_clock.html, func, start + value ------------- Distribution ------------- count + 32768 | 0 + 65536 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 131072 | 0 + +The elapsed times show us that the script spent some small amount of time +processing various events that were not functions. In this case there was +five new Date objects, and each event took between 8 microseconds and 15 +microseconds. + +The exclusive function elapsed times show the time each of our functions +takes, excluding the time spent in subroutines called by that function. We +can see in this example that func_a took between 16384 microseconds and 32767 +microseconds. + +The inclusive function elapsed times show that func_a took between 65536 +microseconds and 131071 microseconds, including the time spent in any +subroutines it calls. + diff --git a/cddl/contrib/dtracetoolkit/Examples/js_calls_example.txt b/cddl/contrib/dtracetoolkit/Examples/js_calls_example.txt new file mode 100644 index 000000000000..848e4362c9d9 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/js_calls_example.txt @@ -0,0 +1,312 @@ +The following are examples of the results of running js_calls.d + +A JavaScript program that behaves like a clock is frequently used by these +examples, since it can be left running in the background without browser +input. Browser input, such as hitting the reload button or using menus, +triggers many other JavaScript events since much of the browser uses +JavaScript. + +With Code/JavaScript/func_clock.html loaded, we trace one second of activity: + +# js_calls.d +Tracing... Hit Ctrl-C to end. +^C + FILE TYPE NAME CALLS + func_clock.html exec . 1 + func_clock.html func func_a 1 + func_clock.html func func_b 1 + func_clock.html func func_c 1 + func_clock.html func setTimeout 1 + func_clock.html func start 1 + func_clock.html obj-new Date 1 + func_clock.html func getElementById 4 + +This shows the type of calls made, 1 exec, one obj-new, several func; a more +descriptive name of each call; and a count of how many times a particular call +was made. + + +The following demonstrates what happens when a different program - +Code/JavaScript/func_slow.html is reloaded by hitting the reload button on the +browser. Apart from the func_slow.html JavaScript events, all those events +from the browser caused by moving the mouse pointer over the screen etc. have +been traced as well. + +# js_calls.d +Tracing... Hit Ctrl-C to end. + + FILE TYPE NAME CALLS + <null> obj-free BarProp 1 + <null> obj-free CSSStyleDeclaration 1 + <null> obj-free Global Scope Polluter 1 + <null> obj-free HTMLCollection 1 + <null> obj-free HTMLDocument 1 + <null> obj-free HTMLHtmlElement 1 + <null> obj-free KeyboardEvent 1 + <null> obj-free Location 1 + <null> obj-free NodeList 1 + <null> obj-free StyleSheetList 1 + <null> obj-free TreeSelection 1 + <null> obj-free Window 1 + <null> obj-free XULCommandDispatcher 1 + <null> obj-free chrome://global/content/bindings/scrollbar.xml#scrollbar 8c35ec2 1 + <null> obj-free nsXPCComponents_Classes 1 + <null> obj-free xpcTempGlobalClass 1 + <null> obj-new BarProp 1 + <null> obj-new CSSStyleDeclaration 1 + <null> obj-new Global Scope Polluter 1 + <null> obj-new HTMLCollection 1 + <null> obj-new HTMLDocument 1 + <null> obj-new HTMLHtmlElement 1 + <null> obj-new KeyboardEvent 1 + <null> obj-new NodeList 1 + <null> obj-new StyleSheetList 1 + <null> obj-new TreeSelection 1 + <null> obj-new Window 1 + <null> obj-new XULCommandDispatcher 1 + <null> obj-new chrome://global/content/bindings/popup.xml#popup 8befc22 1 + <null> obj-new chrome://global/content/bindings/popup.xml#popup 8befcea 1 + <null> obj-new chrome://global/content/bindings/scrollbar.xml#scrollbar 8ce1c1a 1 + <null> obj-new nsXPCComponents_Classes 1 + <null> obj-new xpcTempGlobalClass 1 + autocomplete.xml func apply 1 + autocomplete.xml func attachController 1 + autocomplete.xml func detachController 1 + autocomplete.xml func fireEvent 1 + autocomplete.xml func getPreventDefault 1 + autocomplete.xml func handleEnter 1 + autocomplete.xml func onKeyPress 1 + autocomplete.xml obj-new Object 1 + browser.js func BrowserLoadURL 1 + browser.js func SetPageProxyState 1 + browser.js func URLBarFocusHandler 1 + browser.js func UpdateBackForwardButtons 1 + browser.js func addEventListener 1 + browser.js func addToUrlbarHistory 1 + browser.js func canonizeUrl 1 + browser.js func charsetLoadListener 1 + browser.js func checkForDirectoryListing 1 + browser.js func contentAreaClick 1 + browser.js func createExposableURI 1 + browser.js func createFixupURI 1 + browser.js func getShortcutOrURI 1 + browser.js func getWebNavigation 1 + browser.js func handleURLBarCommand 1 + browser.js func isSuccessCode 1 + browser.js func markPageAsTyped 1 + browser.js func resolveKeyword 1 + browser.js func search 1 + browser.js func test 1 + browser.js func updateLastVisitedDate 1 + browser.js obj-new Object 1 + browser.js obj-new XPC_WN_NoMods_Proto_JSClass 1 + browser.js obj-new nsJSCID 1 + browser.xml func attachFormFill 1 + browser.xml func getAttribute 1 + browser.xml func getBoolPref 1 + consoleAPI.js obj-new Call 1 + findBar.js func getElementById 1 + firebug.js func addEventListener 1 + firebug.js obj-new Constructor 1 + firebug.js obj-new Location 1 + firebug.js obj-new Object 1 + firebug.js obj-new XPC_WN_ModsAllowed_Proto_JSClass 1 + func_slow.html exec . 1 + func_slow.html func func_a 1 + func_slow.html func func_b 1 + func_slow.html func func_c 1 + func_slow.html obj-new Function 1 + preferences.js obj-new nsJSCID 1 + reporterOverlay.js func getElementById 1 + reporterOverlay.js func setAttribute 1 + tabbox.xml func getAttribute 1 + tabbrowser.xml func QueryInterface 1 + tabbrowser.xml func getAnonymousElementByAttribute 1 + tabbrowser.xml func getBrowserIndexForDocument 1 + tabbrowser.xml func indexOf 1 + tabbrowser.xml func push 1 + tabbrowser.xml func setIcon 1 + tabbrowser.xml func setTabTitle 1 + tabbrowser.xml func shouldLoadFavIcon 1 + tabbrowser.xml func updateTitlebar 1 + tabbrowser.xml func useDefaultIcon 1 + tabbrowser.xml obj-new Array 1 + tabbrowser.xml obj-new String 1 + textbox.xml func hasAttribute 1 + textbox.xml func setAttribute 1 + webdeveloper.js func getAttribute 1 + webdeveloper.js func hasAttribute 1 + webdeveloper.js func toLowerCase 1 + webdeveloper.js func webdeveloper_changeOptions 1 + webdeveloper.js func webdeveloper_configureElement 1 + webdeveloper.js func webdeveloper_openToolbarButton 1 + webdeveloper.js func webdeveloper_updateMetaRedirects 1 + webdeveloper.js func webdeveloper_updateRenderMode 1 + webdeveloper.js obj-new Array 1 + webdeveloper.js obj-new String 1 + <null> obj-free BoxObject 2 + <null> obj-free HTMLBodyElement 2 + <null> obj-free JSOptions 2 + <null> obj-free JavaArray 2 + <null> obj-free JavaClass 2 + <null> obj-free JavaMember 2 + <null> obj-free JavaObject 2 + <null> obj-free PageTransitionEvent 2 + <null> obj-free nsJSCID 2 + <null> obj-new BoxObject 2 + <null> obj-new HTMLBodyElement 2 + <null> obj-new JSOptions 2 + <null> obj-new JavaArray 2 + <null> obj-new JavaClass 2 + <null> obj-new JavaMember 2 + <null> obj-new JavaObject 2 + <null> obj-new PageTransitionEvent 2 + autocomplete.xml func ensureRowIsVisible 2 + autocomplete.xml func initSearchNames 2 + autocomplete.xml func select 2 + autocomplete.xml obj-new Function 2 + browser.js func PageProxyClearIcon 2 + browser.js func PageProxySetIcon 2 + browser.js func URLBarClickHandler 2 + browser.js func URLBarMouseDownHandler 2 + browser.js func XPCNativeWrapper function wrapper 2 + browser.js func getService 2 + browser.js func loadURI 2 + browser.js func notifyObservers 2 + css.js func <null> 2 + dom.js func <null> 2 + events.js func <null> 2 + firebug.js func appendChild 2 + firebug.js obj-new XPC_WN_NoMods_Proto_JSClass 2 + general.xml func getAttribute 2 + layout.js func <null> 2 + preferences.js func webdeveloper_getStringPreference 2 + progressmeter.xml func createEvent 2 + progressmeter.xml func dispatchEvent 2 + progressmeter.xml func initEvent 2 + progressmeter.xml func setAttribute 2 + reporterOverlay.js obj-new Function 2 + scrollbar.xml func indexOf 2 + source.js func <null> 2 + style.js func <null> 2 + tabbox.xml func setAttribute 2 + tabbrowser.xml func getBoolPref 2 + tabbrowser.xml func getBrowserAtIndex 2 + tabbrowser.xml func schemeIs 2 + tabbrowser.xml func setAttribute 2 + textbox.xml func setSelectionRange 2 + toolbar.xml func updateStatusText 2 + tree.xml obj-new Function 2 + webdeveloper.js func getElementsByTagName 2 + webdeveloper.js func removeAttribute 2 + <null> obj-free DOM Constructor.prototype 3 + <null> obj-free With 3 + <null> obj-free nsXPCComponents 3 + <null> obj-new Array 3 + <null> obj-new DOM Constructor.prototype 3 + <null> obj-new With 3 + <null> obj-new XPC_WN_NoMods_Proto_JSClass 3 + <null> obj-new nsXPCComponents 3 + autocomplete.xml func getAttribute 3 + browser.js func QueryInterface 3 + func_slow.html func write 3 + globalOverlay.js obj-new Function 3 + progressmeter.xml func getAttribute 3 + progressmeter.xml func round 3 + scrollbar.xml obj-new String 3 + tabbrowser.xml func <null> 3 + tabbrowser.xml func hasAttribute 3 + tabbrowser.xml func updateIcon 3 + text.xml func setAttribute 3 + textbox.xml func removeAttribute 3 + utils.js func join 3 + utils.js func splice 3 + utils.js func toLowerCase 3 + utils.js obj-new Array 3 + utils.js obj-new String 3 + autocomplete.xml func closePopup 4 + browser.js func indexOf 4 + browser.js obj-new Call 4 + browser.xml func getInterface 4 + preferences.js func webdeveloper_getBooleanPreference 4 + tabbrowser.xml func getAttribute 4 + tabbrowser.xml func removeAttribute 4 + utilityOverlay.js func goUpdateGlobalEditMenuItems 4 + utils.js func isElement 4 + <null> obj-free Call 5 + view.js func <null> 5 + <null> obj-free XPCNativeWrapper 6 + <null> obj-free XPC_WN_NoMods_Proto_JSClass 6 + <null> obj-new XPCNativeWrapper 6 + XStringBundle func GetStringFromName 6 + XStringBundle func getString 6 + autocomplete.xml func createEvent 6 + autocomplete.xml func dispatchEvent 6 + autocomplete.xml func initEvent 6 + browser.js func getBrowser 6 + browser.js func setTimeout 6 + browser.js obj-new String 6 + preferences.js func getBranch 6 + preferences.js func getService 6 + preferences.js func prefHasUserValue 6 + preferences.js func webdeveloper_isPreferenceSet 6 + tabbrowser.xml func getBrowserForTab 6 + utils.js func <null> 6 + webdeveloper.js obj-new Function 6 + <null> obj-new Object 7 + firebug.js func removeAttribute 7 + tabbrowser.xml obj-new Function 7 + tree.xml func QueryInterface 7 + <null> obj-free Array 8 + browser.js func hasAttribute 8 + globalOverlay.js func removeAttribute 8 + reporterOverlay.js func <null> 8 + browser.js func getElementById 9 + browser.js func setAttribute 9 + browser.xml obj-new Function 9 + webdeveloper.js func getElementById 9 + <null> obj-free Constructor 10 + <null> obj-free Object 10 + <null> obj-free XPC_WN_ModsAllowed_Proto_JSClass 10 + <null> obj-new Constructor 10 + <null> obj-new XPC_WN_ModsAllowed_Proto_JSClass 10 + browser.js func removeAttribute 10 + firebug.js obj-new Function 10 + text.xml obj-new String 12 + webdeveloper.js func item 14 + firebug.js func getElementById 15 + <null> obj-free XULElement 16 + button.xml func hasAttribute 16 + <null> obj-free Event 17 + browser.js func <null> 17 + <null> obj-new Event 18 + text.xml func getAttribute 19 + firebug.js func getAttribute 20 + globalOverlay.js func setAttribute 20 + <null> obj-free MouseEvent 22 + <null> obj-new MouseEvent 22 + globalOverlay.js func isCommandEnabled 22 + webdeveloper.js func setAttribute 22 + <null> obj-free String 26 + firebug.js func setAttribute 26 + <null> obj-free RegExp 28 + <null> obj-new RegExp 28 + globalOverlay.js func getControllerForCommand 28 + globalOverlay.js func getElementById 28 + globalOverlay.js func goSetCommandEnabled 28 + globalOverlay.js func goUpdateCommand 28 + text.xml func test 28 + browser.js obj-new Function 30 + <null> obj-free XPCWrappedNative_NoHelper 32 + <null> obj-new XPCWrappedNative_NoHelper 32 + consoleAPI.js obj-new Function 33 + browser.xml func QueryInterface 38 + <null> obj-free JavaPackage 41 + <null> obj-new JavaPackage 41 + scrollbar.xml obj-new Function 61 + firebug.js func <null> 62 + text.xml exec . 84 + <null> obj-new XULElement 85 + <null> obj-new Function 172 + <null> obj-free Function 310 + diff --git a/cddl/contrib/dtracetoolkit/Examples/js_calltime_example.txt b/cddl/contrib/dtracetoolkit/Examples/js_calltime_example.txt new file mode 100644 index 000000000000..0b69b76e0a7a --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/js_calltime_example.txt @@ -0,0 +1,60 @@ +The following are examples of js_calltime.d. + +This script traces the elapsed time of JavaScript functions and +prints a report. Here it traces the example program, +Code/JavaScript/func_clock.html + +# js_calltime.d +Tracing... Hit Ctrl-C to end. +^C + +Count, + FILE TYPE NAME COUNT + func_clock.html func func_a 3 + func_clock.html func func_b 3 + func_clock.html func func_c 3 + func_clock.html func setTimeout 3 + func_clock.html func start 3 + func_clock.html obj-new Date 3 + func_clock.html func getElementById 12 + - total - 30 + +Elapsed times (us), + FILE TYPE NAME TOTAL + - total - 29 + func_clock.html obj-new Date 29 + +Exclusive function elapsed times (us), + FILE TYPE NAME TOTAL + func_clock.html func setTimeout 229 + func_clock.html func getElementById 378 + func_clock.html func start 4061 + func_clock.html func func_a 51080 + func_clock.html func func_b 102943 + func_clock.html func func_c 153330 + - total - 312024 + +Inclusive function elapsed times (us), + FILE TYPE NAME TOTAL + func_clock.html func setTimeout 229 + func_clock.html func getElementById 378 + func_clock.html func func_c 153454 + func_clock.html func func_b 256470 + func_clock.html func func_a 307601 + func_clock.html func start 312054 + +Counts shows us how many times each different function was called, and how +many functions were called in total. + +The elapsed time shows us the time spent not in a JavaScript function. + +The exclusive function elapsed times show the time that each function spent +processing code - while not in other functions. + +The inclusive function elapsed times show the time that each function spent +processing code, including the time spent in other calls. + +These elapsed times are the absolute time from when the function began to +when it completed - which includes off-CPU time due to other system events +such as I/O, scheduling, interrupts, etc. + diff --git a/cddl/contrib/dtracetoolkit/Examples/js_cpudist_example.txt b/cddl/contrib/dtracetoolkit/Examples/js_cpudist_example.txt new file mode 100644 index 000000000000..c71a2ad82a2e --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/js_cpudist_example.txt @@ -0,0 +1,112 @@ +The following are examples of js_cpudist.d. + +This script traces the on-CPU time of JavaScript functions and prints a report +in the form of a histogram. Here it traces the example program, +Code/JavaScript/func_clock.html + +# js_cpudist.d +Tracing... Hit Ctrl-C to end. +^C + +Elapsed times (us), + func_clock.html, obj-new, Date + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 8 | 0 + + +Exclusive function on-CPU times (us), + func_clock.html, func, setTimeout + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@ 2 + 64 |@@@@@@@@@@@@@@@@@@@@ 2 + 128 | 0 + + func_clock.html, func, getElementById + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@ 4 + 16 |@@@@@@@@@@ 4 + 32 |@@@@@@@@@@@@@@@@@@@@ 8 + 64 | 0 + + func_clock.html, func, start + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 1024 | 0 + + func_clock.html, func, func_a + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 32768 | 0 + + func_clock.html, func, func_b + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 65536 | 0 + + func_clock.html, func, func_c + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 65536 | 0 + + +Inclusive function on-CPU times (us), + func_clock.html, func, setTimeout + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@ 2 + 64 |@@@@@@@@@@@@@@@@@@@@ 2 + 128 | 0 + + func_clock.html, func, getElementById + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@ 4 + 16 |@@@@@@@@@@ 4 + 32 |@@@@@@@@@@@@@@@@@@@@ 8 + 64 | 0 + + func_clock.html, func, func_c + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 65536 | 0 + + func_clock.html, func, func_a + value ------------- Distribution ------------- count + 32768 | 0 + 65536 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 131072 | 0 + + func_clock.html, func, func_b + value ------------- Distribution ------------- count + 32768 | 0 + 65536 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 131072 | 0 + + func_clock.html, func, start + value ------------- Distribution ------------- count + 32768 | 0 + 65536 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 131072 | 0 + +The first section, Exclusive function on-CPU times, shows us the time spent +on-CPU by various functions, not including time spent in subroutines. You can +see here that func_a had four instances of being on-CPU between 16384 +microseconds and 32767 microseconds. + +The second section, Inclusive function on-CPU times, shows us the time spent +on-CPU by various functions, including that time spent in subroutines called +by those functions. You can see that here func_a had four instances of being +on-CPU between 65536 microseconds and 131071 microseconds. + +It is important to pay close attention to the third column, "count" as this +will indicate if there were any instances in a particular timeframe, even if +the number is too small to show up on the histogram clearly. diff --git a/cddl/contrib/dtracetoolkit/Examples/js_cputime_example.txt b/cddl/contrib/dtracetoolkit/Examples/js_cputime_example.txt new file mode 100644 index 000000000000..dff42fdca9fa --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/js_cputime_example.txt @@ -0,0 +1,69 @@ +The following are examples of js_cputime.d. + +This script traces the on-CPU time of JavaScript functions and prints a report. +Here it traces the example program, Code/JavaScript/func_clock.html + +# js_cputime.d +Tracing... Hit Ctrl-C to end. +^C + +Count, + FILE TYPE NAME COUNT + func_clock.html func func_a 5 + func_clock.html func func_b 5 + func_clock.html func func_c 5 + func_clock.html func setTimeout 5 + func_clock.html func start 5 + func_clock.html obj-new Date 5 + func_clock.html func getElementById 20 + - total - 50 + +Elapsed times (us), + FILE TYPE NAME TOTAL + - total - 37 + func_clock.html obj-new Date 37 + +Exclusive function on-CPU times (us), + FILE TYPE NAME TOTAL + func_clock.html func setTimeout 316 + func_clock.html func getElementById 588 + func_clock.html func start 4734 + func_clock.html func func_a 83465 + func_clock.html func func_b 166613 + func_clock.html func func_c 247683 + - total - 503402 + +Inclusive function on-CPU times (us), + FILE TYPE NAME TOTAL + func_clock.html func setTimeout 316 + func_clock.html func getElementById 588 + func_clock.html func func_c 247872 + func_clock.html func func_b 414601 + func_clock.html func func_a 498142 + func_clock.html func start 503439 + +You can see the results are printed in four sections. + +The first section reports how many times each subroutine was called, and it's +type. + +The second section reports on the on-CPU time of anything that was not of type +"func", in this case the only elements reported here are Date obj-new. + +The exclusive subroutine on-CPU times shows, amongst other results, that func_a +spent around 83,000 microseconds on-CPU. This time excludes time spent in +other subroutines. + +The inclusive subroutine on-CPU times show that func_a spent around 0.5 +seconds on-CPU. This includes the time spent in other subroutines +called. + +These on-CPU times are the time the thread spent running on a CPU, from when +the subroutine began to when it completed. This does not include time +spent off-CPU time such as sleeping for I/O or waiting for scheduling. + +On-CPU times are useful for showing who is causing the CPUs to be busy. +See Notes/ALLoncpu_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive subroutine time. + diff --git a/cddl/contrib/dtracetoolkit/Examples/js_execs_example.txt b/cddl/contrib/dtracetoolkit/Examples/js_execs_example.txt new file mode 100644 index 000000000000..d555c1a1c27d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/js_execs_example.txt @@ -0,0 +1,15 @@ +The following examples show the results of running the script js_execs.d. + +Here it runs on the program Code/JavaScript/func_clock.html. The script will +show you every time something is executed, including page reloads and +timeouts. + +# js_execs.d +TIME FILE:LINENO +2007 Sep 23 22:54:31 func_clock.html:32 +2007 Sep 23 22:54:32 func_clock.html:32 +2007 Sep 23 22:54:34 func_clock.html:32 +2007 Sep 23 22:54:35 func_clock.html:32 +2007 Sep 23 22:54:36 func_clock.html:32 +^C + diff --git a/cddl/contrib/dtracetoolkit/Examples/js_flow_example.txt b/cddl/contrib/dtracetoolkit/Examples/js_flow_example.txt new file mode 100644 index 000000000000..7a9278d7ce6b --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/js_flow_example.txt @@ -0,0 +1,41 @@ +The following are examples of js_flow.d. + +This is a simple script to trace the flow of JavaScript functions. +Here it traces the example program, Code/JavaScript/func_clock.html + +# js_flow.d + C TIME(us) FILE -- FUNC + 0 3650471830941 func_clock.html -> start + 0 3650471831005 func_clock.html -> getElementById + 0 3650471831058 func_clock.html <- getElementById + 0 3650471831890 func_clock.html -> func_a + 0 3650471831906 func_clock.html -> getElementById + 0 3650471831929 func_clock.html <- getElementById + 0 3650471850084 func_clock.html -> func_b + 0 3650471850111 func_clock.html -> getElementById + 0 3650471850146 func_clock.html <- getElementById + 0 3650471886534 func_clock.html -> func_c + 0 3650471886573 func_clock.html -> getElementById + 0 3650471886624 func_clock.html <- getElementById + 0 3650471942212 func_clock.html <- func_c + 0 3650471942231 func_clock.html <- func_b + 0 3650471942242 func_clock.html <- func_a + 0 3650471942300 func_clock.html -> setTimeout + 0 3650471942392 func_clock.html <- setTimeout + 0 3650471942404 func_clock.html <- start +^C + +The fourth column is indented by 2 spaces to show when a new function begins. +This shows which function is calling which - the output above shows that +func_a called func_b, which in turn called func_c. + +The TIME(us) column shows time from boot in microseconds. + +The FILE column shows the file that was being executed. + +If the output looks strange, check the CPU "C" column - if it changes, +then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for +details and suggested workarounds. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/js_flowinfo_example.txt b/cddl/contrib/dtracetoolkit/Examples/js_flowinfo_example.txt new file mode 100644 index 000000000000..45970c1f9e64 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/js_flowinfo_example.txt @@ -0,0 +1,42 @@ +Following are examples of js_flowinfo.d. + +This is a simple script to trace the flow of JavaScript functions. Here it +traces the example program Code/JavaScript/func_clock.html + +# js_flowinfo.d + C PID DELTA(us) FILE:LINE TYPE -- FUNC + 0 11651 2 .:0 func -> start + 0 11651 75 func_clock.html:30 func -> getElementById + 0 11651 51 func_clock.html:- func <- getElementById + 0 11651 479 func_clock.html:31 func -> func_a + 0 11651 25 func_clock.html:21 func -> getElementById + 0 11651 23 func_clock.html:- func <- getElementById + 0 11651 30611 func_clock.html:25 func -> func_b + 0 11651 79 func_clock.html:13 func -> getElementById + 0 11651 51 func_clock.html:- func <- getElementById + 0 11651 33922 func_clock.html:17 func -> func_c + 0 11651 75 func_clock.html:6 func -> getElementById + 0 11651 50 func_clock.html:- func <- getElementById + 0 11651 50481 func_clock.html:- func <- func_c + 0 11651 24 func_clock.html:- func <- func_b + 0 11651 10 func_clock.html:- func <- func_a + 0 11651 39 func_clock.html:32 func -> setTimeout + 0 11651 118 func_clock.html:- func <- setTimeout + 0 11651 11 func_clock.html:- func <- start +^C + +As each function is entered, the last column is indented by 2 spaces. This +shows which function is calling which. + +The DELTA(us) column shows the change in time from the previous line to the +current line. + +The FILE::LINE column shows which line in which file was being executed. Refer +to the source program to see what this line refers to. + +If the output looks shuffled, check the CPU "C" column - if it changes, +then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for +details and suggested workarounds. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/js_flowtime_example.txt b/cddl/contrib/dtracetoolkit/Examples/js_flowtime_example.txt new file mode 100644 index 000000000000..46b2f2f12b28 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/js_flowtime_example.txt @@ -0,0 +1,42 @@ +The following are examples of js_flowtime.d. + +This is a simple script to trace the flow of JavaScript functions. +Here it traces the example program, Code/JavaScript/func_clock.html + +# js_flowtime.d + C TIME(us) FILE DELTA(us) -- FUNC + 0 3650523390654 func_clock.html 2 -> start + 0 3650523390721 func_clock.html 67 -> getElementById + 0 3650523390773 func_clock.html 51 <- getElementById + 0 3650523391609 func_clock.html 835 -> func_a + 0 3650523391627 func_clock.html 18 -> getElementById + 0 3650523391651 func_clock.html 23 <- getElementById + 0 3650523409735 func_clock.html 18084 -> func_b + 0 3650523409763 func_clock.html 27 -> getElementById + 0 3650523409795 func_clock.html 32 <- getElementById + 0 3650523445921 func_clock.html 36125 -> func_c + 0 3650523445959 func_clock.html 38 -> getElementById + 0 3650523446004 func_clock.html 44 <- getElementById + 0 3650523500557 func_clock.html 54552 <- func_c + 0 3650523500581 func_clock.html 24 <- func_b + 0 3650523500593 func_clock.html 11 <- func_a + 0 3650523500648 func_clock.html 54 -> setTimeout + 0 3650523500736 func_clock.html 88 <- setTimeout + 0 3650523500749 func_clock.html 12 <- start +^C + +The fifth column is indented by 2 spaces to show when a new function begins. +This shows which function is calling which. + +The TIME(us) column shows time since boot. + +The DELTA(us) column shows time from that line to the previous line, and +so can be a bit tricky to read. For example, the second line of data output +shows that a getElementById function happened 67 microseconds after start. + +The FILE column shows file that was being executed. + +If the output looks shuffled, check the CPU "C" and "TIME" columns, and +post sort based on TIME if necessary. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. diff --git a/cddl/contrib/dtracetoolkit/Examples/js_objcpu_example.txt b/cddl/contrib/dtracetoolkit/Examples/js_objcpu_example.txt new file mode 100644 index 000000000000..9e9a957ff9b9 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/js_objcpu_example.txt @@ -0,0 +1,317 @@ +The following are examples of running js_objcpu.d. + +This script will show the time on-CPU of object creation events in graphical +format. + +Here we see it running on Code/JavaScript/func_clock.html + +# js_objcpu.d +Tracing... Hit Ctrl-C to end. +^C +Total object creation on-CPU time (ms): 0 + +Object creation on-CPU time distributions (us), + + Date + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 16 | 0 + +We can see that there were two object creation events, both of type 'Date' +that spent between 8 microseconds and 15 microseconds on-CPU each. + + +Here we see the results of having Code/JavaScript/func_slow.html in a browser +window and hitting reload. This includes events that happen due to mouse +movement. + +# js_objcpu.d +Tracing... Hit Ctrl-C to end. +^C +Total object creation on-CPU time (ms): 2 + +Object creation on-CPU time distributions (us), + + HTMLBodyElement + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + HTMLCollection + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + HTMLDocument + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + HTMLHtmlElement + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + Location + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + NodeList + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + StyleSheetList + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + Window + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + chrome://global/content/bindings/popup.xml#popup 8830492 + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + chrome://global/content/bindings/scrollbar.xml#scrollbar 8beef52 + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + BarProp + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + BoxObject + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + CSSStyleDeclaration + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + chrome://global/content/bindings/popup.xml#popup 8bef592 + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + nsXPCComponents_Classes + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + nsJSCID + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 1 + 4 |@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + nsXPCComponents + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 4 | 0 + + Global Scope Polluter + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + JavaArray + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + JavaClass + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + JavaMember + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + JavaObject + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + KeyboardEvent + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + XPC_WN_NoMods_Proto_JSClass + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 4 |@@@@@@@@@@ 1 + 8 | 0 + + PageTransitionEvent + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@ 1 + 8 |@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + JSOptions + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 16 | 0 + + Call + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 8 | 0 + + DOM Constructor.prototype + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 4 | 0 + 8 | 0 + 16 |@@@@@@@@@@@@@ 1 + 32 | 0 + + With + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@ 1 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 16 | 0 + + Constructor + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 9 + 4 |@@@@ 1 + 8 | 0 + + Object + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@ 3 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 8 | 0 + + XPCNativeWrapper + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@ 1 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 8 |@@@@@@@ 1 + 16 | 0 + + XULElement + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@ 5 + 4 |@@@@@@@@@@@@@@@@@@ 4 + 8 | 0 + + Array + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@ 2 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 8 | 0 + + XPCWrappedNative_NoHelper + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@ 3 + 4 |@@@@@@@@@@@@@@@@@@@@ 4 + 8 |@@@@@ 1 + 16 | 0 + + XPC_WN_ModsAllowed_Proto_JSClass + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 4 |@@@@@@@@@@@@ 3 + 8 |@@@@ 1 + 16 | 0 + + MouseEvent + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@ 3 + 8 |@@@@@@@@@@@@@@@@@@@@@@@ 4 + 16 | 0 + + String + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 11 + 8 | 0 + + Event + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@ 1 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 10 + 8 |@@@@@@@@@ 3 + 16 | 0 + + JavaPackage + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 40 + 4 | 0 + 8 |@ 1 + 16 | 0 + + Function + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 246 + 4 |@@@@@@@ 58 + 8 |@ 8 + 16 |@ 9 + 32 | 0 + + diff --git a/cddl/contrib/dtracetoolkit/Examples/js_objgc_example.txt b/cddl/contrib/dtracetoolkit/Examples/js_objgc_example.txt new file mode 100644 index 000000000000..711b223d08e6 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/js_objgc_example.txt @@ -0,0 +1,230 @@ +Following are examples of running js_objgc.d. + +This script reports on the garbage collection of Java objects. That is it +will keep track of when resources are allocated to an object, and when +resources are freed from an object. It is useful for providing information on +when garbage collection is not working correctly, as this can cause the +browser to have a memory leak. + +We trace object creation (+1) and destruction (-1), and provide a summary +each second of the running tally of the object class and originating filename. + +Here we can see it running on Code/JavaScript/func_clock.html + +# js_objgc.d +Tracing... Hit Ctrl-C to end. + + FILE TOTAL CLASS 2007 Sep 23 22:59:24 + func_clock.html 1 Date + + FILE TOTAL CLASS 2007 Sep 23 22:59:25 + func_clock.html 2 Date + + FILE TOTAL CLASS 2007 Sep 23 22:59:26 + func_clock.html 3 Date + + FILE TOTAL CLASS 2007 Sep 23 22:59:27 + func_clock.html 4 Date + + FILE TOTAL CLASS 2007 Sep 23 22:59:28 + func_clock.html 5 Date + + FILE TOTAL CLASS 2007 Sep 23 22:59:29 + browser.js 3 Function + <null> 5 Function + func_clock.html 6 Date + <null> 7 MouseEvent + + FILE TOTAL CLASS 2007 Sep 23 22:59:30 + browser.js 3 Function + <null> 5 Function + func_clock.html 7 Date + <null> 10 MouseEvent + + FILE TOTAL CLASS 2007 Sep 23 22:59:31 + <null> 1 Constructor + <null> 1 HTMLBodyElement + <null> 1 XPCNativeWrapper + <null> 1 XPC_WN_ModsAllowed_Proto_JSClass + browser.js 1 Array + browser.js 1 XPCNativeWrapper + popup.xml 1 Array + func_clock.html 7 Date + <null> 13 MouseEvent + <null> 18 Function + browser.js 20 Function + + FILE TOTAL CLASS 2007 Sep 23 22:59:32 + <null> 1 BoxObject + <null> 1 Constructor + <null> 1 HTMLBodyElement + <null> 1 NodeList + <null> 1 UIEvent + <null> 1 XPCNativeWrapper + <null> 1 XPC_WN_ModsAllowed_Proto_JSClass + <null> 1 chrome://global/content/bindings/menu.xml#menu-iconic 84ff45a + <null> 1 chrome://global/content/bindings/menu.xml#menu-iconic 8befbba + bookmarksMenu.js 1 Function + browser.js 1 Array + browser.js 1 XPCNativeWrapper + popup.xml 1 Function + scrollbox.xml 1 Function + <null> 2 Event + popup.xml 2 Array + bookmarks.js 3 With + firebug-service.js 3 Object + bookmarks.js 6 Object + bookmarks.js 6 XPCWrappedNative_NoHelper + func_clock.html 8 Date + firebug-service.js 10 Function + <null> 15 MouseEvent + bookmarks.js 19 Error + browser.js 20 Function + bookmarks.js 22 Function + <null> 39 XPCWrappedNative_NoHelper + <null> 44 Function + <null> 60 RegExp + <null> 191 XULElement + +[... 39 seconds deleted ...] + + FILE TOTAL CLASS 2007 Sep 23 23:00:10 + <null> 1 HTMLBodyElement + <null> 1 HTMLCollection + <null> 1 TreeColumns + <null> 1 XPCNativeWrapper + <null> 1 XPC_WN_NoMods_Proto_JSClass + <null> 1 XULTreeBuilder + <null> 1 chrome://global/content/bindings/menu.xml#menu-iconic 84ff45a + <null> 1 chrome://global/content/bindings/menu.xml#menu-iconic 8befbba + <null> 1 chrome://global/content/bindings/tree.xml#treebody 84caa3a + <null> 1 chrome://global/content/bindings/tree.xml#treebody 84e3a72 + <null> 1 nsXPCComponents_Interfaces + <null> 1 nsXPCComponents_Results + bookmarksMenu.js 1 Function + browser.js 1 Array + browser.js 1 XPCNativeWrapper + browser.js 1 XPC_WN_NoMods_Proto_JSClass + nsUpdateService.js 1 XPC_WN_NoMods_Proto_JSClass + nsUpdateService.js 1 nsJSCID + popup.xml 1 Function + scrollbar.xml 1 String + scrollbox.xml 1 Function + tree.xml 1 Array + <null> 2 Constructor + <null> 2 UIEvent + <null> 2 XPC_WN_ModsAllowed_Proto_JSClass + <null> 2 nsXPCComponents_Classes + browser.js 2 nsJSCID + browser.js 2 nsJSIID + utilityOverlay.js 2 nsJSCID + utilityOverlay.js 2 nsJSIID + <null> 3 Array + <null> 3 NodeList + nsUpdateService.js 3 Array + nsUpdateService.js 3 Object + nsUpdateService.js 3 With + utilityOverlay.js 3 Call + tree.xml 4 Function + utilityOverlay.js 4 Function + nsUpdateService.js 7 nsJSIID + nsUpdateService.js 15 Function + bookmarks.js 22 Function + text.xml 23 String + <null> 36 BoxObject + func_clock.html 42 Date + bookmarks.js 57 With + firebug-service.js 57 Object + bookmarks.js 73 Error + browser.js 78 Function + popup.xml 82 Array + bookmarks.js 114 Object + bookmarks.js 114 XPCWrappedNative_NoHelper + <null> 157 MouseEvent + firebug-service.js 172 Function + <null> 307 XPCWrappedNative_NoHelper + <null> 388 RegExp + <null> 488 Event + <null> 876 XULElement + <null> 1221 Function + + FILE TOTAL CLASS 2007 Sep 23 23:00:11 + <missed> -94 Date + <missed> -34 Function + <missed> -4 MouseEvent + <missed> -2 Array + <missed> -1 HTMLBodyElement + <missed> -1 HTMLCollection + <missed> -1 XPCNativeWrapper + <missed> -1 XPC_WN_ModsAllowed_Proto_JSClass + <null> 0 Array + <null> 0 HTMLBodyElement + <null> 0 HTMLCollection + <null> 0 RegExp + <null> 0 TreeColumns + <null> 0 UIEvent + <null> 0 XPC_WN_NoMods_Proto_JSClass + <null> 0 XULTreeBuilder + <null> 0 nsXPCComponents_Classes + <null> 0 nsXPCComponents_Interfaces + <null> 0 nsXPCComponents_Results + browser.js 0 Array + browser.js 0 XPCNativeWrapper + browser.js 0 XPC_WN_NoMods_Proto_JSClass + browser.js 0 nsJSCID + nsUpdateService.js 0 Array + nsUpdateService.js 0 Function + nsUpdateService.js 0 Object + nsUpdateService.js 0 With + nsUpdateService.js 0 XPC_WN_NoMods_Proto_JSClass + nsUpdateService.js 0 nsJSCID + nsUpdateService.js 0 nsJSIID + scrollbar.xml 0 String + text.xml 0 String + tree.xml 0 Array + utilityOverlay.js 0 Call + utilityOverlay.js 0 Function + utilityOverlay.js 0 nsJSCID + <null> 1 NodeList + <null> 1 XPCNativeWrapper + <null> 1 chrome://global/content/bindings/menu.xml#menu-iconic 84ff45a + <null> 1 chrome://global/content/bindings/menu.xml#menu-iconic 8befbba + <null> 1 chrome://global/content/bindings/tree.xml#treebody 84caa3a + <null> 1 chrome://global/content/bindings/tree.xml#treebody 84e3a72 + bookmarksMenu.js 1 Function + browser.xul 1 Function + func_clock.html 1 Date + popup.xml 1 Function + scrollbox.xml 1 XULElement + scrollbox.xml 1 nsJSIID + <null> 2 Constructor + <null> 2 XPC_WN_ModsAllowed_Proto_JSClass + browser.js 2 nsJSIID + scrollbox.xml 2 Function + tree.xml 2 Function + utilityOverlay.js 2 nsJSIID + popup.xml 3 Array + bookmarks.js 5 With + firebug-service.js 5 Object + <null> 6 Event + <null> 6 MouseEvent + bookmarks.js 9 XPCWrappedNative_NoHelper + <null> 10 XPCWrappedNative_NoHelper + bookmarks.js 10 Object + browser.js 10 Function + bookmarks.js 15 Function + firebug-service.js 16 Function + <null> 18 BoxObject + bookmarks.js 75 Error + <null> 79 Function + <null> 315 XULElement +^C + +Just after time 23:00:10, garbage collection fired cleaning up many objects. +The final output shows a much reduced object count including a negative +count for objects created before this script was tracing. + +If over the period of several minutes an object type is still steadily +increasing, then that would be of interest. Be patient, depending on the rate +of object creation it can take over ten minutes for garbage collect to kick in. + diff --git a/cddl/contrib/dtracetoolkit/Examples/js_objnew_example.txt b/cddl/contrib/dtracetoolkit/Examples/js_objnew_example.txt new file mode 100644 index 000000000000..c3a888120f78 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/js_objnew_example.txt @@ -0,0 +1,100 @@ +The following are examples of the results of running js_objnew.d. + +It reports on the class type of new objects created. + +Here we can see it running on the program Code/JavaScript/func_clock.html. + +# js_objnew.d +Tracing... Hit Ctrl-C to end. +^C + FILE CLASS COUNT + func_clock.html Date 2 + +The results are very simple, func_clock.html caused two new objects to be +created, both of type 'Date'. + + +Here is a more complicated example, running on the program +Code/JavaScript/func_slow.html, with the results of that plus JavaScript caused +by hitting reload on the browser. + + +# js_objnew.d +Tracing... Hit Ctrl-C to end. +^C + FILE CLASS COUNT + <null> BarProp 1 + <null> CSSStyleDeclaration 1 + <null> Global Scope Polluter 1 + <null> HTMLBodyElement 1 + <null> HTMLDocument 1 + <null> HTMLHtmlElement 1 + <null> NodeList 1 + <null> StyleSheetList 1 + <null> TreeSelection 1 + <null> Window 1 + <null> XULCommandDispatcher 1 + <null> chrome://global/content/bindings/popup.xml#popup 8c35c92 1 + <null> chrome://global/content/bindings/popup.xml#popup 8fb299a 1 + <null> chrome://global/content/bindings/scrollbar.xml#scrollbar 8fb2ea2 1 + <null> nsXPCComponents_Classes 1 + <null> xpcTempGlobalClass 1 + autocomplete.xml Object 1 + browser.js Array 1 + browser.js Object 1 + browser.js XPC_WN_NoMods_Proto_JSClass 1 + browser.js nsJSCID 1 + consoleAPI.js Call 1 + firebug.js Constructor 1 + firebug.js Location 1 + firebug.js Object 1 + firebug.js XPC_WN_ModsAllowed_Proto_JSClass 1 + func_slow.html Function 1 + popup.xml Array 1 + preferences.js nsJSCID 1 + tabbrowser.xml Array 1 + tabbrowser.xml String 1 + webdeveloper.js Array 1 + webdeveloper.js String 1 + <null> BoxObject 2 + <null> JSOptions 2 + <null> JavaArray 2 + <null> JavaClass 2 + <null> JavaMember 2 + <null> JavaObject 2 + <null> PageTransitionEvent 2 + autocomplete.xml Function 2 + firebug.js XPC_WN_NoMods_Proto_JSClass 2 + reporterOverlay.js Function 2 + tree.xml Function 2 + <null> Array 3 + <null> DOM Constructor.prototype 3 + <null> With 3 + <null> XPC_WN_NoMods_Proto_JSClass 3 + <null> nsXPCComponents 3 + globalOverlay.js Function 3 + scrollbar.xml String 3 + utils.js Array 3 + utils.js String 3 + browser.js Call 4 + func_clock.html Date 4 + webdeveloper.js Function 4 + <null> XPCNativeWrapper 5 + browser.js String 6 + <null> Object 7 + tabbrowser.xml Function 7 + <null> XPC_WN_ModsAllowed_Proto_JSClass 8 + <null> Constructor 9 + browser.xml Function 9 + firebug.js Function 10 + <null> MouseEvent 12 + <null> XPCWrappedNative_NoHelper 13 + <null> KeyboardEvent 14 + <null> XULElement 16 + <null> Event 29 + browser.js Function 33 + consoleAPI.js Function 33 + <null> JavaPackage 41 + scrollbar.xml Function 61 + <null> Function 211 + diff --git a/cddl/contrib/dtracetoolkit/Examples/js_stat_example.txt b/cddl/contrib/dtracetoolkit/Examples/js_stat_example.txt new file mode 100644 index 000000000000..b658b4f05422 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/js_stat_example.txt @@ -0,0 +1,35 @@ +The following are examples of running js_stat.d + +Here is the result after running the program Code/JavaScript/func_clock.html. + +# js_stat.d +TIME EXEC/s FUNC/s OBJNEW/s OBJFRE/s +2007 Sep 23 23:04:59 1 9 1 0 +2007 Sep 23 23:05:00 1 9 1 0 +2007 Sep 23 23:05:01 1 9 1 0 +2007 Sep 23 23:05:02 1 6 1 0 +2007 Sep 23 23:05:03 0 3 0 0 +2007 Sep 23 23:05:04 1 9 1 0 +2007 Sep 23 23:05:05 1 9 1 0 +2007 Sep 23 23:05:06 1 9 1 0 +^C + +We can see that at 2007 Sep 23 23:05:02 there was one JavaScript program +executed, six functions called, one new object created and no objects freed. + + +Here is the result after running the program Code/JavaScript/func_slow.html. +This also includes browser JavaScript. + +# js_stat.d +TIME EXEC/s FUNC/s OBJNEW/s OBJFRE/s +2007 Sep 23 23:05:48 1 124 41 0 +2007 Sep 23 23:05:49 1 29 19 0 +2007 Sep 23 23:05:50 1 29 25 0 +2007 Sep 23 23:05:51 1 670 497 0 +2007 Sep 23 23:05:52 0 62 11 0 +2007 Sep 23 23:05:53 0 0 6 617 +2007 Sep 23 23:05:54 0 0 0 0 +2007 Sep 23 23:05:55 0 0 0 0 +^C + diff --git a/cddl/contrib/dtracetoolkit/Examples/js_who_example.txt b/cddl/contrib/dtracetoolkit/Examples/js_who_example.txt new file mode 100644 index 000000000000..06e3e31c6020 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/js_who_example.txt @@ -0,0 +1,59 @@ +The following examples are the results of running the js_who.d script while +various JavaScript events happen. + +A JavaScript program that behaves like a clock is frequently used by these +examples, since it can be left running in the background without browser +input. Browser input, such as hitting the reload button or using menus, +triggers many other JavaScript events since much of the browser uses +JavaScript. This makes for interesting longer examples, but would be +overwhelming for example #1. + +In the first example, we can see what happens when we run this program, +Code/JavaScript/func_clock.html + +# js_who.d +Tracing... Hit Ctrl-C to end. +^C + PID UID FUNCS FILE + 10530 100 18 file:///export/home/brendan/Lang/JavaScript/func_clock.html + + +The second example is more complex, the reason for this is that the program +Code/Javascript/func_slow.html was loaded in the browser, and the reload +button was pressed. This output captured the many browser events that occured +when moving the mouse pointer to do so. + +# js_who.d +Tracing... Hit Ctrl-C to end. +^C + PID UID FUNCS FILE + 10530 100 2 chrome://firebug/content/views/css.js + 10530 100 2 chrome://firebug/content/views/dom.js + 10530 100 2 chrome://firebug/content/views/events.js + 10530 100 2 chrome://firebug/content/views/layout.js + 10530 100 2 chrome://firebug/content/views/source.js + 10530 100 2 chrome://firebug/content/views/style.js + 10530 100 2 chrome://global/content/bindings/scrollbar.xml + 10530 100 3 chrome://global/content/bindings/general.xml + 10530 100 3 chrome://global/content/bindings/tabbox.xml + 10530 100 3 chrome://global/content/bindings/text.xml + 10530 100 4 chrome://browser/content/utilityOverlay.js + 10530 100 5 chrome://firebug/content/views/view.js + 10530 100 6 file:///export/home/brendan/Lang/JavaScript/func_slow.html + 10530 100 7 chrome://global/content/bindings/textbox.xml + 10530 100 7 chrome://global/content/bindings/tree.xml + 10530 100 10 chrome://reporter/content/reporterOverlay.js + 10530 100 12 XStringBundle + 10530 100 14 chrome://global/content/bindings/progressmeter.xml + 10530 100 18 file:///export/home/brendan/Lang/JavaScript/func_clock.html + 10530 100 19 chrome://firebug/content/utils.js + 10530 100 30 chrome://webdeveloper/content/common/preferences.js + 10530 100 43 chrome://global/content/bindings/browser.xml + 10530 100 44 chrome://global/content/bindings/tabbrowser.xml + 10530 100 72 chrome://global/content/bindings/button.xml + 10530 100 88 chrome://global/content/bindings/autocomplete.xml + 10530 100 110 chrome://browser/content/browser.js + 10530 100 121 chrome://webdeveloper/content/webdeveloper.js + 10530 100 133 chrome://firebug/content/firebug.js + 10530 100 162 chrome://global/content/globalOverlay.js + diff --git a/cddl/contrib/dtracetoolkit/Examples/kill_example.txt b/cddl/contrib/dtracetoolkit/Examples/kill_example.txt new file mode 100644 index 000000000000..f73621c6d252 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/kill_example.txt @@ -0,0 +1,12 @@ +This is an example of the kill.d DTrace script, + + # kill.d + FROM COMMAND SIG TO RESULT + 2344 bash 2 3117 0 + 2344 bash 9 12345 -1 + ^C + +In the above output, a kill -2 (Ctrl-C) was sent from the bash command +to PID 3177. Then a kill -9 (SIGKILL) was sent to PID 12345 - which +returned a "-1" for failure. + diff --git a/cddl/contrib/dtracetoolkit/Examples/kstat_types_example.txt b/cddl/contrib/dtracetoolkit/Examples/kstat_types_example.txt new file mode 100644 index 000000000000..8ffecbff70eb --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/kstat_types_example.txt @@ -0,0 +1,1358 @@ +The following are demonstrations of the kstat_types.d script. + + +Here kstat_types.d is used to trace the kstat activity of the vmstat command, + + # ./kstat_types.d + CMD CLASS TYPE MOD:INS:NAME + vmstat . raw :0:kstat_headers + vmstat . raw :0:kstat_headers + vmstat misc named cpu_info:0:cpu_info0 + vmstat misc named cpu:0:vm + vmstat misc named cpu:0:sys + vmstat disk io cmdk:0:cmdk0 + vmstat disk io sd:0:sd0 + vmstat misc raw unix:0:sysinfo + vmstat vm raw unix:0:vminfo + vmstat misc named unix:0:dnlcstats + vmstat misc named unix:0:system_misc + ^C + +Details of each lookup can be seen, including each disk device that +was read. + + + +This is mpstat on a single CPU server, + + # ./kstat_types.d + CMD CLASS TYPE MOD:INS:NAME + mpstat . raw :0:kstat_headers + mpstat . raw :0:kstat_headers + mpstat misc named cpu_info:0:cpu_info0 + mpstat misc named cpu:0:vm + mpstat misc named cpu:0:sys + ^C + +The output shows that the focus was CPU statistics, as expected. + + + +The following has caught in.routed reading some statistics, + + # ./kstat_types.d + CMD CLASS TYPE MOD:INS:NAME + in.routed . raw :0:kstat_headers + in.routed . raw :0:kstat_headers + in.routed net named lo:0:lo0 + in.routed . raw :0:kstat_headers + in.routed . raw :0:kstat_headers + in.routed net named rtls:0:rtls0 + in.routed . raw :0:kstat_headers + in.routed . raw :0:kstat_headers + in.routed net named rtls:0:rtls0 + ^C + +Which shows that the network interfaces were checked. + + + +Finally, this is the kstats used when a "sar -u 1 1" command is run. +ie, this thing, + + $ sar -u 1 1 + + SunOS jupiter 5.10 Generic i86pc 04/21/2006 + + 23:28:53 %usr %sys %wio %idle + 23:28:54 1 3 0 96 + +sar actually forks a child "sadc" to do the lookups. sadc caused the +following kstat lookups (I'm not making this up), + + # ./kstat_types.d + CMD CLASS TYPE MOD:INS:NAME + sadc . raw :0:kstat_headers + sadc . raw :0:kstat_headers + sadc misc named unix:0:system_misc + sadc kmem_cache named unix:0:file_cache + sadc vmem named vmem:16:kmem_oversize + sadc ufs named ufs:0:inode_cache + sadc misc raw unix:0:var + sadc kmem_cache named unix:0:kmem_magazine_1 + sadc kmem_cache named unix:0:kmem_magazine_3 + sadc kmem_cache named unix:0:kmem_magazine_7 + sadc kmem_cache named unix:0:kmem_magazine_15 + sadc kmem_cache named unix:0:kmem_magazine_31 + sadc kmem_cache named unix:0:kmem_magazine_47 + sadc kmem_cache named unix:0:kmem_magazine_63 + sadc kmem_cache named unix:0:kmem_magazine_95 + sadc kmem_cache named unix:0:kmem_magazine_143 + sadc kmem_cache named unix:0:kmem_slab_cache + sadc kmem_cache named unix:0:kmem_bufctl_cache + sadc kmem_cache named unix:0:kmem_bufctl_audit_cache + sadc kmem_cache named unix:0:kmem_va_4096 + sadc kmem_cache named unix:0:kmem_va_8192 + sadc kmem_cache named unix:0:kmem_va_12288 + sadc kmem_cache named unix:0:kmem_va_16384 + sadc kmem_cache named unix:0:kmem_va_20480 + sadc kmem_cache named unix:0:kmem_va_24576 + sadc kmem_cache named unix:0:kmem_va_28672 + sadc kmem_cache named unix:0:kmem_va_32768 + sadc kmem_cache named unix:0:kmem_alloc_8 + sadc kmem_cache named unix:0:kmem_alloc_16 + sadc kmem_cache named unix:0:kmem_alloc_24 + sadc kmem_cache named unix:0:kmem_alloc_32 + sadc kmem_cache named unix:0:kmem_alloc_40 + sadc kmem_cache named unix:0:kmem_alloc_48 + sadc kmem_cache named unix:0:kmem_alloc_56 + sadc kmem_cache named unix:0:kmem_alloc_64 + sadc kmem_cache named unix:0:kmem_alloc_80 + sadc kmem_cache named unix:0:kmem_alloc_96 + sadc kmem_cache named unix:0:kmem_alloc_112 + sadc kmem_cache named unix:0:kmem_alloc_128 + sadc kmem_cache named unix:0:kmem_alloc_160 + sadc kmem_cache named unix:0:kmem_alloc_192 + sadc kmem_cache named unix:0:kmem_alloc_224 + sadc kmem_cache named unix:0:kmem_alloc_256 + sadc kmem_cache named unix:0:kmem_alloc_320 + sadc kmem_cache named unix:0:kmem_alloc_384 + sadc kmem_cache named unix:0:kmem_alloc_448 + sadc kmem_cache named unix:0:kmem_alloc_512 + sadc kmem_cache named unix:0:kmem_alloc_640 + sadc kmem_cache named unix:0:kmem_alloc_768 + sadc kmem_cache named unix:0:kmem_alloc_896 + sadc kmem_cache named unix:0:kmem_alloc_1152 + sadc kmem_cache named unix:0:kmem_alloc_1344 + sadc kmem_cache named unix:0:kmem_alloc_1600 + sadc kmem_cache named unix:0:kmem_alloc_2048 + sadc kmem_cache named unix:0:kmem_alloc_2688 + sadc kmem_cache named unix:0:kmem_alloc_4096 + sadc kmem_cache named unix:0:kmem_alloc_8192 + sadc kmem_cache named unix:0:kmem_alloc_12288 + sadc kmem_cache named unix:0:kmem_alloc_16384 + sadc kmem_cache named unix:0:streams_mblk + sadc kmem_cache named unix:0:streams_dblk_64 + sadc kmem_cache named unix:0:streams_dblk_128 + sadc kmem_cache named unix:0:streams_dblk_320 + sadc kmem_cache named unix:0:streams_dblk_576 + sadc kmem_cache named unix:0:streams_dblk_1088 + sadc kmem_cache named unix:0:streams_dblk_1536 + sadc kmem_cache named unix:0:streams_dblk_1984 + sadc kmem_cache named unix:0:streams_dblk_2624 + sadc kmem_cache named unix:0:streams_dblk_3968 + sadc kmem_cache named unix:0:streams_dblk_8192 + sadc kmem_cache named unix:0:streams_dblk_12160 + sadc kmem_cache named unix:0:streams_dblk_16384 + sadc kmem_cache named unix:0:streams_dblk_20352 + sadc kmem_cache named unix:0:streams_dblk_24576 + sadc kmem_cache named unix:0:streams_dblk_28544 + sadc kmem_cache named unix:0:streams_dblk_32768 + sadc kmem_cache named unix:0:streams_dblk_36736 + sadc kmem_cache named unix:0:streams_dblk_40960 + sadc kmem_cache named unix:0:streams_dblk_44928 + sadc kmem_cache named unix:0:streams_dblk_49152 + sadc kmem_cache named unix:0:streams_dblk_53120 + sadc kmem_cache named unix:0:streams_dblk_57344 + sadc kmem_cache named unix:0:streams_dblk_61312 + sadc kmem_cache named unix:0:streams_dblk_65536 + sadc kmem_cache named unix:0:streams_dblk_69504 + sadc kmem_cache named unix:0:streams_dblk_73728 + sadc kmem_cache named unix:0:streams_dblk_esb + sadc kmem_cache named unix:0:streams_fthdr + sadc kmem_cache named unix:0:streams_ftblk + sadc kmem_cache named unix:0:multidata + sadc kmem_cache named unix:0:multidata_pdslab + sadc kmem_cache named unix:0:multidata_pattbl + sadc kmem_cache named unix:0:taskq_ent_cache + sadc kmem_cache named unix:0:taskq_cache + sadc kmem_cache named unix:0:kmem_io_512M_128 + sadc kmem_cache named unix:0:kmem_io_512M_256 + sadc kmem_cache named unix:0:kmem_io_512M_512 + sadc kmem_cache named unix:0:kmem_io_512M_1024 + sadc kmem_cache named unix:0:kmem_io_512M_2048 + sadc kmem_cache named unix:0:kmem_io_512M_4096 + sadc kmem_cache named unix:0:kmem_io_16M_128 + sadc kmem_cache named unix:0:kmem_io_16M_256 + sadc kmem_cache named unix:0:kmem_io_16M_512 + sadc kmem_cache named unix:0:kmem_io_16M_1024 + sadc kmem_cache named unix:0:kmem_io_16M_2048 + sadc kmem_cache named unix:0:kmem_io_16M_4096 + sadc kmem_cache named unix:0:id32_cache + sadc kmem_cache named unix:0:bp_map_4096 + sadc kmem_cache named unix:0:bp_map_8192 + sadc kmem_cache named unix:0:bp_map_12288 + sadc kmem_cache named unix:0:bp_map_16384 + sadc kmem_cache named unix:0:bp_map_20480 + sadc kmem_cache named unix:0:bp_map_24576 + sadc kmem_cache named unix:0:bp_map_28672 + sadc kmem_cache named unix:0:bp_map_32768 + sadc kmem_cache named unix:0:mod_hash_entries + sadc kmem_cache named unix:0:ipp_mod + sadc kmem_cache named unix:0:ipp_action + sadc kmem_cache named unix:0:ipp_packet + sadc kmem_cache named unix:0:htable_t + sadc kmem_cache named unix:0:hment_t + sadc kmem_cache named unix:0:hat_t + sadc kmem_cache named unix:0:HatHash + sadc kmem_cache named unix:0:seg_cache + sadc kmem_cache named unix:0:snode_cache + sadc kmem_cache named unix:0:dv_node_cache + sadc kmem_cache named unix:0:dev_info_node_cache + sadc kmem_cache named unix:0:segkp_4096 + sadc kmem_cache named unix:0:segkp_8192 + sadc kmem_cache named unix:0:segkp_12288 + sadc kmem_cache named unix:0:segkp_16384 + sadc kmem_cache named unix:0:segkp_20480 + sadc kmem_cache named unix:0:thread_cache + sadc kmem_cache named unix:0:lwp_cache + sadc kmem_cache named unix:0:turnstile_cache + sadc kmem_cache named unix:0:cred_cache + sadc kmem_cache named unix:0:rctl_cache + sadc kmem_cache named unix:0:rctl_val_cache + sadc kmem_cache named unix:0:task_cache + sadc kmem_cache named unix:0:cyclic_id_cache + sadc kmem_cache named unix:0:dnlc_space_cache + sadc kmem_cache named unix:0:vn_cache + sadc kmem_cache named unix:0:file_cache + sadc kmem_cache named unix:0:stream_head_cache + sadc kmem_cache named unix:0:queue_cache + sadc kmem_cache named unix:0:syncq_cache + sadc kmem_cache named unix:0:qband_cache + sadc kmem_cache named unix:0:linkinfo_cache + sadc kmem_cache named unix:0:ciputctrl_cache + sadc kmem_cache named unix:0:serializer_cache + sadc kmem_cache named unix:0:as_cache + sadc kmem_cache named unix:0:marker_cache + sadc kmem_cache named unix:0:anon_cache + sadc kmem_cache named unix:0:anonmap_cache + sadc kmem_cache named unix:0:segvn_cache + sadc kmem_cache named unix:0:flk_edges + sadc kmem_cache named unix:0:fdb_cache + sadc kmem_cache named unix:0:timer_cache + sadc kmem_cache named unix:0:physio_buf_cache + sadc kmem_cache named unix:0:ufs_inode_cache + sadc kmem_cache named unix:0:directio_buf_cache + sadc kmem_cache named unix:0:lufs_save + sadc kmem_cache named unix:0:lufs_bufs + sadc kmem_cache named unix:0:lufs_mapentry_cache + sadc misc raw cpu_stat:0:cpu_stat0 + sadc kmem_cache named unix:0:kcf_sreq_cache + sadc kmem_cache named unix:0:kcf_areq_cache + sadc kmem_cache named unix:0:kcf_context_cache + sadc kmem_cache named unix:0:ipsec_actions + sadc kmem_cache named unix:0:ipsec_selectors + sadc kmem_cache named unix:0:ipsec_policy + sadc kmem_cache named unix:0:ipsec_info + sadc kmem_cache named unix:0:ip_minor_arena_1 + sadc kmem_cache named unix:0:ipcl_conn_cache + sadc kmem_cache named unix:0:ipcl_tcpconn_cache + sadc kmem_cache named unix:0:ire_cache + sadc kmem_cache named unix:0:tcp_timercache + sadc kmem_cache named unix:0:tcp_sack_info_cache + sadc kmem_cache named unix:0:tcp_iphc_cache + sadc kmem_cache named unix:0:squeue_cache + sadc kmem_cache named unix:0:sctp_conn_cache + sadc kmem_cache named unix:0:sctp_faddr_cache + sadc kmem_cache named unix:0:sctp_set_cache + sadc kmem_cache named unix:0:sctp_ftsn_set_cache + sadc kmem_cache named unix:0:sctpsock + sadc kmem_cache named unix:0:sctp_assoc + sadc kmem_cache named unix:0:socktpi_cache + sadc kmem_cache named unix:0:socktpi_unix_cache + sadc kmem_cache named unix:0:ncafs_cache + sadc kmem_cache named unix:0:process_cache + sadc kmem_cache named unix:0:exacct_object_cache + sadc kmem_cache named unix:0:fctl_cache + sadc kmem_cache named unix:0:tl_cache + sadc kmem_cache named unix:0:keysock_1 + sadc kmem_cache named unix:0:spdsock_1 + sadc kmem_cache named unix:0:fnode_cache + sadc kmem_cache named unix:0:pipe_cache + sadc kmem_cache named unix:0:namefs_inodes_1 + sadc kmem_cache named unix:0:port_cache + sadc kmem_cache named unix:0:lnode_cache + sadc kmem_cache named unix:0:clnt_clts_endpnt_cache + sadc kmem_cache named unix:0:pty_map + sadc kmem_cache named unix:0:sppptun_map + sadc kmem_cache named unix:0:dtrace_state_cache + sadc kmem_cache named unix:0:qif_head_cache + sadc kmem_cache named unix:0:udp_minor_1 + sadc kmem_cache named unix:0:authkern_cache + sadc kmem_cache named unix:0:authloopback_cache + sadc kmem_cache named unix:0:authdes_cache_handle + sadc kmem_cache named unix:0:rnode_cache + sadc kmem_cache named unix:0:nfs_access_cache + sadc kmem_cache named unix:0:client_handle_cache + sadc kmem_cache named unix:0:rnode4_cache + sadc kmem_cache named unix:0:svnode_cache + sadc kmem_cache named unix:0:nfs4_access_cache + sadc kmem_cache named unix:0:client_handle4_cache + sadc kmem_cache named unix:0:nfs4_ace4vals_cache + sadc kmem_cache named unix:0:nfs4_ace4_list_cache + sadc kmem_cache named unix:0:NFS_idmap_cache + sadc kmem_cache named unix:0:lm_vnode + sadc kmem_cache named unix:0:lm_xprt + sadc kmem_cache named unix:0:lm_sysid + sadc kmem_cache named unix:0:lm_client + sadc kmem_cache named unix:0:lm_async + sadc kmem_cache named unix:0:lm_sleep + sadc kmem_cache named unix:0:lm_config + sadc kmem_cache named unix:0:nfslog_small_rec + sadc kmem_cache named unix:0:nfslog_medium_rec + sadc kmem_cache named unix:0:nfslog_large_rec + sadc kmem_cache named unix:0:exi_cache_handle + sadc kmem_cache named unix:0:Client_entry_cache + sadc kmem_cache named unix:0:OpenOwner_entry_cache + sadc kmem_cache named unix:0:OpenStateID_entry_cache + sadc kmem_cache named unix:0:LockStateID_entry_cache + sadc kmem_cache named unix:0:Lockowner_entry_cache + sadc kmem_cache named unix:0:File_entry_cache + sadc kmem_cache named unix:0:DelegStateID_entry_cache + sadc kmem_cache named unix:0:ip_minor_1 + sadc kmem_cache named unix:0:ar_minor_1 + sadc kmem_cache named unix:0:icmp_minor_1 + sadc kmem_cache named unix:0:crypto_session_cache + sadc kmem_cache named unix:0:fcsm_job_cache + sadc kmem_cache named unix:0:sd0_cache + sadc kmem_cache named unix:0:hsfs_hsnode_cache + sadc kmem_cache named unix:0:kmem_magazine_1 + sadc misc named unix:0:system_misc + sadc kmem_cache named unix:0:file_cache + sadc vmem named vmem:16:kmem_oversize + sadc ufs named ufs:0:inode_cache + sadc misc raw unix:0:var + sadc kmem_cache named unix:0:kmem_magazine_1 + sadc kmem_cache named unix:0:kmem_magazine_3 + sadc kmem_cache named unix:0:kmem_magazine_7 + sadc kmem_cache named unix:0:kmem_magazine_15 + sadc kmem_cache named unix:0:kmem_magazine_31 + sadc kmem_cache named unix:0:kmem_magazine_47 + sadc kmem_cache named unix:0:kmem_magazine_63 + sadc kmem_cache named unix:0:kmem_magazine_95 + sadc kmem_cache named unix:0:kmem_magazine_143 + sadc kmem_cache named unix:0:kmem_slab_cache + sadc kmem_cache named unix:0:kmem_bufctl_cache + sadc kmem_cache named unix:0:kmem_bufctl_audit_cache + sadc kmem_cache named unix:0:kmem_va_4096 + sadc kmem_cache named unix:0:kmem_va_8192 + sadc kmem_cache named unix:0:kmem_va_12288 + sadc kmem_cache named unix:0:kmem_va_16384 + sadc kmem_cache named unix:0:kmem_va_20480 + sadc kmem_cache named unix:0:kmem_va_24576 + sadc kmem_cache named unix:0:kmem_va_28672 + sadc kmem_cache named unix:0:kmem_va_32768 + sadc kmem_cache named unix:0:kmem_alloc_8 + sadc kmem_cache named unix:0:kmem_alloc_16 + sadc kmem_cache named unix:0:kmem_alloc_24 + sadc kmem_cache named unix:0:kmem_alloc_32 + sadc kmem_cache named unix:0:kmem_alloc_40 + sadc kmem_cache named unix:0:kmem_alloc_48 + sadc kmem_cache named unix:0:kmem_alloc_56 + sadc kmem_cache named unix:0:kmem_alloc_64 + sadc kmem_cache named unix:0:kmem_alloc_80 + sadc kmem_cache named unix:0:kmem_alloc_96 + sadc kmem_cache named unix:0:kmem_alloc_112 + sadc kmem_cache named unix:0:kmem_alloc_128 + sadc kmem_cache named unix:0:kmem_alloc_160 + sadc kmem_cache named unix:0:kmem_alloc_192 + sadc kmem_cache named unix:0:kmem_alloc_224 + sadc kmem_cache named unix:0:kmem_alloc_256 + sadc kmem_cache named unix:0:kmem_alloc_320 + sadc kmem_cache named unix:0:kmem_alloc_384 + sadc kmem_cache named unix:0:kmem_alloc_448 + sadc kmem_cache named unix:0:kmem_alloc_512 + sadc kmem_cache named unix:0:kmem_alloc_640 + sadc kmem_cache named unix:0:kmem_alloc_768 + sadc kmem_cache named unix:0:kmem_alloc_896 + sadc kmem_cache named unix:0:kmem_alloc_1152 + sadc kmem_cache named unix:0:kmem_alloc_1344 + sadc kmem_cache named unix:0:kmem_alloc_1600 + sadc kmem_cache named unix:0:kmem_alloc_2048 + sadc kmem_cache named unix:0:kmem_alloc_2688 + sadc kmem_cache named unix:0:kmem_alloc_4096 + sadc kmem_cache named unix:0:kmem_alloc_8192 + sadc kmem_cache named unix:0:kmem_alloc_12288 + sadc kmem_cache named unix:0:kmem_alloc_16384 + sadc kmem_cache named unix:0:streams_mblk + sadc kmem_cache named unix:0:streams_dblk_64 + sadc kmem_cache named unix:0:streams_dblk_128 + sadc kmem_cache named unix:0:streams_dblk_320 + sadc kmem_cache named unix:0:streams_dblk_576 + sadc kmem_cache named unix:0:streams_dblk_1088 + sadc kmem_cache named unix:0:streams_dblk_1536 + sadc kmem_cache named unix:0:streams_dblk_1984 + sadc kmem_cache named unix:0:streams_dblk_2624 + sadc kmem_cache named unix:0:streams_dblk_3968 + sadc kmem_cache named unix:0:streams_dblk_8192 + sadc kmem_cache named unix:0:streams_dblk_12160 + sadc kmem_cache named unix:0:streams_dblk_16384 + sadc kmem_cache named unix:0:streams_dblk_20352 + sadc kmem_cache named unix:0:streams_dblk_24576 + sadc kmem_cache named unix:0:streams_dblk_28544 + sadc kmem_cache named unix:0:streams_dblk_32768 + sadc kmem_cache named unix:0:streams_dblk_36736 + sadc kmem_cache named unix:0:streams_dblk_40960 + sadc kmem_cache named unix:0:streams_dblk_44928 + sadc kmem_cache named unix:0:streams_dblk_49152 + sadc kmem_cache named unix:0:streams_dblk_53120 + sadc kmem_cache named unix:0:streams_dblk_57344 + sadc kmem_cache named unix:0:streams_dblk_61312 + sadc kmem_cache named unix:0:streams_dblk_65536 + sadc kmem_cache named unix:0:streams_dblk_69504 + sadc kmem_cache named unix:0:streams_dblk_73728 + sadc kmem_cache named unix:0:streams_dblk_esb + sadc kmem_cache named unix:0:streams_fthdr + sadc kmem_cache named unix:0:streams_ftblk + sadc kmem_cache named unix:0:multidata + sadc kmem_cache named unix:0:multidata_pdslab + sadc kmem_cache named unix:0:multidata_pattbl + sadc kmem_cache named unix:0:taskq_ent_cache + sadc kmem_cache named unix:0:taskq_cache + sadc kmem_cache named unix:0:kmem_io_512M_128 + sadc kmem_cache named unix:0:kmem_io_512M_256 + sadc kmem_cache named unix:0:kmem_io_512M_512 + sadc kmem_cache named unix:0:kmem_io_512M_1024 + sadc kmem_cache named unix:0:kmem_io_512M_2048 + sadc kmem_cache named unix:0:kmem_io_512M_4096 + sadc kmem_cache named unix:0:kmem_io_16M_128 + sadc kmem_cache named unix:0:kmem_io_16M_256 + sadc kmem_cache named unix:0:kmem_io_16M_512 + sadc kmem_cache named unix:0:kmem_io_16M_1024 + sadc kmem_cache named unix:0:kmem_io_16M_2048 + sadc kmem_cache named unix:0:kmem_io_16M_4096 + sadc kmem_cache named unix:0:id32_cache + sadc kmem_cache named unix:0:bp_map_4096 + sadc kmem_cache named unix:0:bp_map_8192 + sadc kmem_cache named unix:0:bp_map_12288 + sadc kmem_cache named unix:0:bp_map_16384 + sadc kmem_cache named unix:0:bp_map_20480 + sadc kmem_cache named unix:0:bp_map_24576 + sadc kmem_cache named unix:0:bp_map_28672 + sadc kmem_cache named unix:0:bp_map_32768 + sadc kmem_cache named unix:0:mod_hash_entries + sadc kmem_cache named unix:0:ipp_mod + sadc kmem_cache named unix:0:ipp_action + sadc kmem_cache named unix:0:ipp_packet + sadc kmem_cache named unix:0:htable_t + sadc kmem_cache named unix:0:hment_t + sadc kmem_cache named unix:0:hat_t + sadc kmem_cache named unix:0:HatHash + sadc kmem_cache named unix:0:seg_cache + sadc kmem_cache named unix:0:snode_cache + sadc kmem_cache named unix:0:dv_node_cache + sadc kmem_cache named unix:0:dev_info_node_cache + sadc kmem_cache named unix:0:segkp_4096 + sadc kmem_cache named unix:0:segkp_8192 + sadc kmem_cache named unix:0:segkp_12288 + sadc kmem_cache named unix:0:segkp_16384 + sadc kmem_cache named unix:0:segkp_20480 + sadc kmem_cache named unix:0:thread_cache + sadc kmem_cache named unix:0:lwp_cache + sadc kmem_cache named unix:0:turnstile_cache + sadc kmem_cache named unix:0:cred_cache + sadc kmem_cache named unix:0:rctl_cache + sadc kmem_cache named unix:0:rctl_val_cache + sadc kmem_cache named unix:0:task_cache + sadc kmem_cache named unix:0:cyclic_id_cache + sadc kmem_cache named unix:0:dnlc_space_cache + sadc kmem_cache named unix:0:vn_cache + sadc kmem_cache named unix:0:file_cache + sadc kmem_cache named unix:0:stream_head_cache + sadc kmem_cache named unix:0:queue_cache + sadc kmem_cache named unix:0:syncq_cache + sadc kmem_cache named unix:0:qband_cache + sadc kmem_cache named unix:0:linkinfo_cache + sadc kmem_cache named unix:0:ciputctrl_cache + sadc kmem_cache named unix:0:serializer_cache + sadc kmem_cache named unix:0:as_cache + sadc kmem_cache named unix:0:marker_cache + sadc kmem_cache named unix:0:anon_cache + sadc kmem_cache named unix:0:anonmap_cache + sadc kmem_cache named unix:0:segvn_cache + sadc kmem_cache named unix:0:flk_edges + sadc kmem_cache named unix:0:fdb_cache + sadc kmem_cache named unix:0:timer_cache + sadc kmem_cache named unix:0:physio_buf_cache + sadc kmem_cache named unix:0:ufs_inode_cache + sadc kmem_cache named unix:0:directio_buf_cache + sadc kmem_cache named unix:0:lufs_save + sadc kmem_cache named unix:0:lufs_bufs + sadc kmem_cache named unix:0:lufs_mapentry_cache + sadc misc raw cpu_stat:0:cpu_stat0 + sadc kmem_cache named unix:0:kcf_sreq_cache + sadc kmem_cache named unix:0:kcf_areq_cache + sadc kmem_cache named unix:0:kcf_context_cache + sadc kmem_cache named unix:0:ipsec_actions + sadc kmem_cache named unix:0:ipsec_selectors + sadc kmem_cache named unix:0:ipsec_policy + sadc kmem_cache named unix:0:ipsec_info + sadc kmem_cache named unix:0:ip_minor_arena_1 + sadc kmem_cache named unix:0:ipcl_conn_cache + sadc kmem_cache named unix:0:ipcl_tcpconn_cache + sadc kmem_cache named unix:0:ire_cache + sadc kmem_cache named unix:0:tcp_timercache + sadc kmem_cache named unix:0:tcp_sack_info_cache + sadc kmem_cache named unix:0:tcp_iphc_cache + sadc kmem_cache named unix:0:squeue_cache + sadc kmem_cache named unix:0:sctp_conn_cache + sadc kmem_cache named unix:0:sctp_faddr_cache + sadc kmem_cache named unix:0:sctp_set_cache + sadc kmem_cache named unix:0:sctp_ftsn_set_cache + sadc kmem_cache named unix:0:sctpsock + sadc kmem_cache named unix:0:sctp_assoc + sadc kmem_cache named unix:0:socktpi_cache + sadc kmem_cache named unix:0:socktpi_unix_cache + sadc kmem_cache named unix:0:ncafs_cache + sadc kmem_cache named unix:0:process_cache + sadc kmem_cache named unix:0:exacct_object_cache + sadc kmem_cache named unix:0:fctl_cache + sadc kmem_cache named unix:0:tl_cache + sadc kmem_cache named unix:0:keysock_1 + sadc kmem_cache named unix:0:spdsock_1 + sadc kmem_cache named unix:0:fnode_cache + sadc kmem_cache named unix:0:pipe_cache + sadc kmem_cache named unix:0:namefs_inodes_1 + sadc kmem_cache named unix:0:port_cache + sadc kmem_cache named unix:0:lnode_cache + sadc kmem_cache named unix:0:clnt_clts_endpnt_cache + sadc kmem_cache named unix:0:pty_map + sadc kmem_cache named unix:0:sppptun_map + sadc kmem_cache named unix:0:dtrace_state_cache + sadc kmem_cache named unix:0:qif_head_cache + sadc kmem_cache named unix:0:udp_minor_1 + sadc kmem_cache named unix:0:authkern_cache + sadc kmem_cache named unix:0:authloopback_cache + sadc kmem_cache named unix:0:authdes_cache_handle + sadc kmem_cache named unix:0:rnode_cache + sadc kmem_cache named unix:0:nfs_access_cache + sadc kmem_cache named unix:0:client_handle_cache + sadc kmem_cache named unix:0:rnode4_cache + sadc kmem_cache named unix:0:svnode_cache + sadc kmem_cache named unix:0:nfs4_access_cache + sadc kmem_cache named unix:0:client_handle4_cache + sadc kmem_cache named unix:0:nfs4_ace4vals_cache + sadc kmem_cache named unix:0:nfs4_ace4_list_cache + sadc kmem_cache named unix:0:NFS_idmap_cache + sadc kmem_cache named unix:0:lm_vnode + sadc kmem_cache named unix:0:lm_xprt + sadc kmem_cache named unix:0:lm_sysid + sadc kmem_cache named unix:0:lm_client + sadc kmem_cache named unix:0:lm_async + sadc kmem_cache named unix:0:lm_sleep + sadc kmem_cache named unix:0:lm_config + sadc kmem_cache named unix:0:nfslog_small_rec + sadc kmem_cache named unix:0:nfslog_medium_rec + sadc kmem_cache named unix:0:nfslog_large_rec + sadc kmem_cache named unix:0:exi_cache_handle + sadc kmem_cache named unix:0:Client_entry_cache + sadc kmem_cache named unix:0:OpenOwner_entry_cache + sadc kmem_cache named unix:0:OpenStateID_entry_cache + sadc kmem_cache named unix:0:LockStateID_entry_cache + sadc kmem_cache named unix:0:Lockowner_entry_cache + sadc kmem_cache named unix:0:File_entry_cache + sadc kmem_cache named unix:0:DelegStateID_entry_cache + sadc kmem_cache named unix:0:ip_minor_1 + sadc kmem_cache named unix:0:ar_minor_1 + sadc kmem_cache named unix:0:icmp_minor_1 + sadc kmem_cache named unix:0:crypto_session_cache + sadc kmem_cache named unix:0:fcsm_job_cache + sadc kmem_cache named unix:0:sd0_cache + sadc kmem_cache named unix:0:hsfs_hsnode_cache + sadc kmem_cache named unix:0:kmem_magazine_1 + sadc misc raw unix:0:sysinfo + sadc vm raw unix:0:vminfo + sadc misc named unix:0:system_misc + sadc kmem_cache named unix:0:file_cache + sadc ufs named ufs:0:inode_cache + sadc misc raw cpu_stat:0:cpu_stat0 + sadc kmem_cache named unix:0:kmem_magazine_1 + sadc kmem_cache named unix:0:kmem_magazine_3 + sadc kmem_cache named unix:0:kmem_magazine_7 + sadc kmem_cache named unix:0:kmem_magazine_15 + sadc kmem_cache named unix:0:kmem_magazine_31 + sadc kmem_cache named unix:0:kmem_magazine_47 + sadc kmem_cache named unix:0:kmem_magazine_63 + sadc kmem_cache named unix:0:kmem_magazine_95 + sadc kmem_cache named unix:0:kmem_magazine_143 + sadc kmem_cache named unix:0:kmem_slab_cache + sadc kmem_cache named unix:0:kmem_bufctl_cache + sadc kmem_cache named unix:0:kmem_bufctl_audit_cache + sadc kmem_cache named unix:0:kmem_va_4096 + sadc kmem_cache named unix:0:kmem_va_8192 + sadc kmem_cache named unix:0:kmem_va_12288 + sadc kmem_cache named unix:0:kmem_va_16384 + sadc kmem_cache named unix:0:kmem_va_20480 + sadc kmem_cache named unix:0:kmem_va_24576 + sadc kmem_cache named unix:0:kmem_va_28672 + sadc kmem_cache named unix:0:kmem_va_32768 + sadc kmem_cache named unix:0:kmem_alloc_8 + sadc kmem_cache named unix:0:kmem_alloc_16 + sadc kmem_cache named unix:0:kmem_alloc_24 + sadc kmem_cache named unix:0:kmem_alloc_32 + sadc kmem_cache named unix:0:kmem_alloc_40 + sadc kmem_cache named unix:0:kmem_alloc_48 + sadc kmem_cache named unix:0:kmem_alloc_56 + sadc kmem_cache named unix:0:kmem_alloc_64 + sadc kmem_cache named unix:0:kmem_alloc_80 + sadc kmem_cache named unix:0:kmem_alloc_96 + sadc kmem_cache named unix:0:kmem_alloc_112 + sadc kmem_cache named unix:0:kmem_alloc_128 + sadc kmem_cache named unix:0:kmem_alloc_160 + sadc kmem_cache named unix:0:kmem_alloc_192 + sadc kmem_cache named unix:0:kmem_alloc_224 + sadc kmem_cache named unix:0:kmem_alloc_256 + sadc kmem_cache named unix:0:kmem_alloc_320 + sadc kmem_cache named unix:0:kmem_alloc_384 + sadc kmem_cache named unix:0:kmem_alloc_448 + sadc kmem_cache named unix:0:kmem_alloc_512 + sadc kmem_cache named unix:0:kmem_alloc_640 + sadc kmem_cache named unix:0:kmem_alloc_768 + sadc kmem_cache named unix:0:kmem_alloc_896 + sadc kmem_cache named unix:0:kmem_alloc_1152 + sadc kmem_cache named unix:0:kmem_alloc_1344 + sadc kmem_cache named unix:0:kmem_alloc_1600 + sadc kmem_cache named unix:0:kmem_alloc_2048 + sadc kmem_cache named unix:0:kmem_alloc_2688 + sadc kmem_cache named unix:0:kmem_alloc_4096 + sadc kmem_cache named unix:0:kmem_alloc_8192 + sadc kmem_cache named unix:0:kmem_alloc_12288 + sadc kmem_cache named unix:0:kmem_alloc_16384 + sadc kmem_cache named unix:0:streams_mblk + sadc kmem_cache named unix:0:streams_dblk_64 + sadc kmem_cache named unix:0:streams_dblk_128 + sadc kmem_cache named unix:0:streams_dblk_320 + sadc kmem_cache named unix:0:streams_dblk_576 + sadc kmem_cache named unix:0:streams_dblk_1088 + sadc kmem_cache named unix:0:streams_dblk_1536 + sadc kmem_cache named unix:0:streams_dblk_1984 + sadc kmem_cache named unix:0:streams_dblk_2624 + sadc kmem_cache named unix:0:streams_dblk_3968 + sadc kmem_cache named unix:0:streams_dblk_8192 + sadc kmem_cache named unix:0:streams_dblk_12160 + sadc kmem_cache named unix:0:streams_dblk_16384 + sadc kmem_cache named unix:0:streams_dblk_20352 + sadc kmem_cache named unix:0:streams_dblk_24576 + sadc kmem_cache named unix:0:streams_dblk_28544 + sadc kmem_cache named unix:0:streams_dblk_32768 + sadc kmem_cache named unix:0:streams_dblk_36736 + sadc kmem_cache named unix:0:streams_dblk_40960 + sadc kmem_cache named unix:0:streams_dblk_44928 + sadc kmem_cache named unix:0:streams_dblk_49152 + sadc kmem_cache named unix:0:streams_dblk_53120 + sadc kmem_cache named unix:0:streams_dblk_57344 + sadc kmem_cache named unix:0:streams_dblk_61312 + sadc kmem_cache named unix:0:streams_dblk_65536 + sadc kmem_cache named unix:0:streams_dblk_69504 + sadc kmem_cache named unix:0:streams_dblk_73728 + sadc kmem_cache named unix:0:streams_dblk_esb + sadc kmem_cache named unix:0:streams_fthdr + sadc kmem_cache named unix:0:streams_ftblk + sadc kmem_cache named unix:0:multidata + sadc kmem_cache named unix:0:multidata_pdslab + sadc kmem_cache named unix:0:multidata_pattbl + sadc kmem_cache named unix:0:taskq_ent_cache + sadc kmem_cache named unix:0:taskq_cache + sadc kmem_cache named unix:0:kmem_io_512M_128 + sadc kmem_cache named unix:0:kmem_io_512M_256 + sadc kmem_cache named unix:0:kmem_io_512M_512 + sadc kmem_cache named unix:0:kmem_io_512M_1024 + sadc kmem_cache named unix:0:kmem_io_512M_2048 + sadc kmem_cache named unix:0:kmem_io_512M_4096 + sadc kmem_cache named unix:0:kmem_io_16M_128 + sadc kmem_cache named unix:0:kmem_io_16M_256 + sadc kmem_cache named unix:0:kmem_io_16M_512 + sadc kmem_cache named unix:0:kmem_io_16M_1024 + sadc kmem_cache named unix:0:kmem_io_16M_2048 + sadc kmem_cache named unix:0:kmem_io_16M_4096 + sadc kmem_cache named unix:0:id32_cache + sadc kmem_cache named unix:0:bp_map_4096 + sadc kmem_cache named unix:0:bp_map_8192 + sadc kmem_cache named unix:0:bp_map_12288 + sadc kmem_cache named unix:0:bp_map_16384 + sadc kmem_cache named unix:0:bp_map_20480 + sadc kmem_cache named unix:0:bp_map_24576 + sadc kmem_cache named unix:0:bp_map_28672 + sadc kmem_cache named unix:0:bp_map_32768 + sadc kmem_cache named unix:0:mod_hash_entries + sadc kmem_cache named unix:0:ipp_mod + sadc kmem_cache named unix:0:ipp_action + sadc kmem_cache named unix:0:ipp_packet + sadc kmem_cache named unix:0:htable_t + sadc kmem_cache named unix:0:hment_t + sadc kmem_cache named unix:0:hat_t + sadc kmem_cache named unix:0:HatHash + sadc kmem_cache named unix:0:seg_cache + sadc kmem_cache named unix:0:snode_cache + sadc kmem_cache named unix:0:dv_node_cache + sadc kmem_cache named unix:0:dev_info_node_cache + sadc kmem_cache named unix:0:segkp_4096 + sadc kmem_cache named unix:0:segkp_8192 + sadc kmem_cache named unix:0:segkp_12288 + sadc kmem_cache named unix:0:segkp_16384 + sadc kmem_cache named unix:0:segkp_20480 + sadc kmem_cache named unix:0:thread_cache + sadc kmem_cache named unix:0:lwp_cache + sadc kmem_cache named unix:0:turnstile_cache + sadc kmem_cache named unix:0:cred_cache + sadc kmem_cache named unix:0:rctl_cache + sadc kmem_cache named unix:0:rctl_val_cache + sadc kmem_cache named unix:0:task_cache + sadc kmem_cache named unix:0:cyclic_id_cache + sadc kmem_cache named unix:0:dnlc_space_cache + sadc kmem_cache named unix:0:vn_cache + sadc kmem_cache named unix:0:file_cache + sadc kmem_cache named unix:0:stream_head_cache + sadc kmem_cache named unix:0:queue_cache + sadc kmem_cache named unix:0:syncq_cache + sadc kmem_cache named unix:0:qband_cache + sadc kmem_cache named unix:0:linkinfo_cache + sadc kmem_cache named unix:0:ciputctrl_cache + sadc kmem_cache named unix:0:serializer_cache + sadc kmem_cache named unix:0:as_cache + sadc kmem_cache named unix:0:marker_cache + sadc kmem_cache named unix:0:anon_cache + sadc kmem_cache named unix:0:anonmap_cache + sadc kmem_cache named unix:0:segvn_cache + sadc kmem_cache named unix:0:flk_edges + sadc kmem_cache named unix:0:fdb_cache + sadc kmem_cache named unix:0:timer_cache + sadc kmem_cache named unix:0:physio_buf_cache + sadc kmem_cache named unix:0:ufs_inode_cache + sadc kmem_cache named unix:0:directio_buf_cache + sadc kmem_cache named unix:0:lufs_save + sadc kmem_cache named unix:0:lufs_bufs + sadc kmem_cache named unix:0:lufs_mapentry_cache + sadc kmem_cache named unix:0:kcf_sreq_cache + sadc kmem_cache named unix:0:kcf_areq_cache + sadc kmem_cache named unix:0:kcf_context_cache + sadc kmem_cache named unix:0:ipsec_actions + sadc kmem_cache named unix:0:ipsec_selectors + sadc kmem_cache named unix:0:ipsec_policy + sadc kmem_cache named unix:0:ipsec_info + sadc kmem_cache named unix:0:ip_minor_arena_1 + sadc kmem_cache named unix:0:ipcl_conn_cache + sadc kmem_cache named unix:0:ipcl_tcpconn_cache + sadc kmem_cache named unix:0:ire_cache + sadc kmem_cache named unix:0:tcp_timercache + sadc kmem_cache named unix:0:tcp_sack_info_cache + sadc kmem_cache named unix:0:tcp_iphc_cache + sadc kmem_cache named unix:0:squeue_cache + sadc kmem_cache named unix:0:sctp_conn_cache + sadc kmem_cache named unix:0:sctp_faddr_cache + sadc kmem_cache named unix:0:sctp_set_cache + sadc kmem_cache named unix:0:sctp_ftsn_set_cache + sadc kmem_cache named unix:0:sctpsock + sadc kmem_cache named unix:0:sctp_assoc + sadc kmem_cache named unix:0:socktpi_cache + sadc kmem_cache named unix:0:socktpi_unix_cache + sadc kmem_cache named unix:0:ncafs_cache + sadc kmem_cache named unix:0:process_cache + sadc kmem_cache named unix:0:exacct_object_cache + sadc kmem_cache named unix:0:fctl_cache + sadc kmem_cache named unix:0:tl_cache + sadc kmem_cache named unix:0:keysock_1 + sadc kmem_cache named unix:0:spdsock_1 + sadc kmem_cache named unix:0:fnode_cache + sadc kmem_cache named unix:0:pipe_cache + sadc kmem_cache named unix:0:namefs_inodes_1 + sadc kmem_cache named unix:0:port_cache + sadc kmem_cache named unix:0:lnode_cache + sadc kmem_cache named unix:0:clnt_clts_endpnt_cache + sadc kmem_cache named unix:0:pty_map + sadc kmem_cache named unix:0:sppptun_map + sadc kmem_cache named unix:0:dtrace_state_cache + sadc kmem_cache named unix:0:qif_head_cache + sadc kmem_cache named unix:0:udp_minor_1 + sadc kmem_cache named unix:0:authkern_cache + sadc kmem_cache named unix:0:authloopback_cache + sadc kmem_cache named unix:0:authdes_cache_handle + sadc kmem_cache named unix:0:rnode_cache + sadc kmem_cache named unix:0:nfs_access_cache + sadc kmem_cache named unix:0:client_handle_cache + sadc kmem_cache named unix:0:rnode4_cache + sadc kmem_cache named unix:0:svnode_cache + sadc kmem_cache named unix:0:nfs4_access_cache + sadc kmem_cache named unix:0:client_handle4_cache + sadc kmem_cache named unix:0:nfs4_ace4vals_cache + sadc kmem_cache named unix:0:nfs4_ace4_list_cache + sadc kmem_cache named unix:0:NFS_idmap_cache + sadc kmem_cache named unix:0:lm_vnode + sadc kmem_cache named unix:0:lm_xprt + sadc kmem_cache named unix:0:lm_sysid + sadc kmem_cache named unix:0:lm_client + sadc kmem_cache named unix:0:lm_async + sadc kmem_cache named unix:0:lm_sleep + sadc kmem_cache named unix:0:lm_config + sadc kmem_cache named unix:0:nfslog_small_rec + sadc kmem_cache named unix:0:nfslog_medium_rec + sadc kmem_cache named unix:0:nfslog_large_rec + sadc kmem_cache named unix:0:exi_cache_handle + sadc kmem_cache named unix:0:Client_entry_cache + sadc kmem_cache named unix:0:OpenOwner_entry_cache + sadc kmem_cache named unix:0:OpenStateID_entry_cache + sadc kmem_cache named unix:0:LockStateID_entry_cache + sadc kmem_cache named unix:0:Lockowner_entry_cache + sadc kmem_cache named unix:0:File_entry_cache + sadc kmem_cache named unix:0:DelegStateID_entry_cache + sadc kmem_cache named unix:0:ip_minor_1 + sadc kmem_cache named unix:0:ar_minor_1 + sadc kmem_cache named unix:0:icmp_minor_1 + sadc kmem_cache named unix:0:crypto_session_cache + sadc kmem_cache named unix:0:fcsm_job_cache + sadc kmem_cache named unix:0:sd0_cache + sadc kmem_cache named unix:0:hsfs_hsnode_cache + sadc vmem named vmem:16:kmem_oversize + sadc disk io cmdk:0:cmdk0 + sadc nfs io nfs:1:nfs1 + sadc disk io sd:0:sd0 + sadc usb_byte_count io usba:0:uhci0,bulk + sadc usb_byte_count io usba:0:uhci0,ctrl + sadc usb_byte_count io usba:0:uhci0,intr + sadc usb_byte_count io usba:0:uhci0,isoch + sadc usb_byte_count io usba:0:uhci0,total + sadc usb_byte_count io usba:1:uhci1,bulk + sadc usb_byte_count io usba:1:uhci1,ctrl + sadc usb_byte_count io usba:1:uhci1,intr + sadc usb_byte_count io usba:1:uhci1,isoch + sadc usb_byte_count io usba:1:uhci1,total + sadc misc named unix:0:system_misc + sadc kmem_cache named unix:0:file_cache + sadc vmem named vmem:16:kmem_oversize + sadc ufs named ufs:0:inode_cache + sadc misc raw unix:0:var + sadc kmem_cache named unix:0:kmem_magazine_1 + sadc kmem_cache named unix:0:kmem_magazine_3 + sadc kmem_cache named unix:0:kmem_magazine_7 + sadc kmem_cache named unix:0:kmem_magazine_15 + sadc kmem_cache named unix:0:kmem_magazine_31 + sadc kmem_cache named unix:0:kmem_magazine_47 + sadc kmem_cache named unix:0:kmem_magazine_63 + sadc kmem_cache named unix:0:kmem_magazine_95 + sadc kmem_cache named unix:0:kmem_magazine_143 + sadc kmem_cache named unix:0:kmem_slab_cache + sadc kmem_cache named unix:0:kmem_bufctl_cache + sadc kmem_cache named unix:0:kmem_bufctl_audit_cache + sadc kmem_cache named unix:0:kmem_va_4096 + sadc kmem_cache named unix:0:kmem_va_8192 + sadc kmem_cache named unix:0:kmem_va_12288 + sadc kmem_cache named unix:0:kmem_va_16384 + sadc kmem_cache named unix:0:kmem_va_20480 + sadc kmem_cache named unix:0:kmem_va_24576 + sadc kmem_cache named unix:0:kmem_va_28672 + sadc kmem_cache named unix:0:kmem_va_32768 + sadc kmem_cache named unix:0:kmem_alloc_8 + sadc kmem_cache named unix:0:kmem_alloc_16 + sadc kmem_cache named unix:0:kmem_alloc_24 + sadc kmem_cache named unix:0:kmem_alloc_32 + sadc kmem_cache named unix:0:kmem_alloc_40 + sadc kmem_cache named unix:0:kmem_alloc_48 + sadc kmem_cache named unix:0:kmem_alloc_56 + sadc kmem_cache named unix:0:kmem_alloc_64 + sadc kmem_cache named unix:0:kmem_alloc_80 + sadc kmem_cache named unix:0:kmem_alloc_96 + sadc kmem_cache named unix:0:kmem_alloc_112 + sadc kmem_cache named unix:0:kmem_alloc_128 + sadc kmem_cache named unix:0:kmem_alloc_160 + sadc kmem_cache named unix:0:kmem_alloc_192 + sadc kmem_cache named unix:0:kmem_alloc_224 + sadc kmem_cache named unix:0:kmem_alloc_256 + sadc kmem_cache named unix:0:kmem_alloc_320 + sadc kmem_cache named unix:0:kmem_alloc_384 + sadc kmem_cache named unix:0:kmem_alloc_448 + sadc kmem_cache named unix:0:kmem_alloc_512 + sadc kmem_cache named unix:0:kmem_alloc_640 + sadc kmem_cache named unix:0:kmem_alloc_768 + sadc kmem_cache named unix:0:kmem_alloc_896 + sadc kmem_cache named unix:0:kmem_alloc_1152 + sadc kmem_cache named unix:0:kmem_alloc_1344 + sadc kmem_cache named unix:0:kmem_alloc_1600 + sadc kmem_cache named unix:0:kmem_alloc_2048 + sadc kmem_cache named unix:0:kmem_alloc_2688 + sadc kmem_cache named unix:0:kmem_alloc_4096 + sadc kmem_cache named unix:0:kmem_alloc_8192 + sadc kmem_cache named unix:0:kmem_alloc_12288 + sadc kmem_cache named unix:0:kmem_alloc_16384 + sadc kmem_cache named unix:0:streams_mblk + sadc kmem_cache named unix:0:streams_dblk_64 + sadc kmem_cache named unix:0:streams_dblk_128 + sadc kmem_cache named unix:0:streams_dblk_320 + sadc kmem_cache named unix:0:streams_dblk_576 + sadc kmem_cache named unix:0:streams_dblk_1088 + sadc kmem_cache named unix:0:streams_dblk_1536 + sadc kmem_cache named unix:0:streams_dblk_1984 + sadc kmem_cache named unix:0:streams_dblk_2624 + sadc kmem_cache named unix:0:streams_dblk_3968 + sadc kmem_cache named unix:0:streams_dblk_8192 + sadc kmem_cache named unix:0:streams_dblk_12160 + sadc kmem_cache named unix:0:streams_dblk_16384 + sadc kmem_cache named unix:0:streams_dblk_20352 + sadc kmem_cache named unix:0:streams_dblk_24576 + sadc kmem_cache named unix:0:streams_dblk_28544 + sadc kmem_cache named unix:0:streams_dblk_32768 + sadc kmem_cache named unix:0:streams_dblk_36736 + sadc kmem_cache named unix:0:streams_dblk_40960 + sadc kmem_cache named unix:0:streams_dblk_44928 + sadc kmem_cache named unix:0:streams_dblk_49152 + sadc kmem_cache named unix:0:streams_dblk_53120 + sadc kmem_cache named unix:0:streams_dblk_57344 + sadc kmem_cache named unix:0:streams_dblk_61312 + sadc kmem_cache named unix:0:streams_dblk_65536 + sadc kmem_cache named unix:0:streams_dblk_69504 + sadc kmem_cache named unix:0:streams_dblk_73728 + sadc kmem_cache named unix:0:streams_dblk_esb + sadc kmem_cache named unix:0:streams_fthdr + sadc kmem_cache named unix:0:streams_ftblk + sadc kmem_cache named unix:0:multidata + sadc kmem_cache named unix:0:multidata_pdslab + sadc kmem_cache named unix:0:multidata_pattbl + sadc kmem_cache named unix:0:taskq_ent_cache + sadc kmem_cache named unix:0:taskq_cache + sadc kmem_cache named unix:0:kmem_io_512M_128 + sadc kmem_cache named unix:0:kmem_io_512M_256 + sadc kmem_cache named unix:0:kmem_io_512M_512 + sadc kmem_cache named unix:0:kmem_io_512M_1024 + sadc kmem_cache named unix:0:kmem_io_512M_2048 + sadc kmem_cache named unix:0:kmem_io_512M_4096 + sadc kmem_cache named unix:0:kmem_io_16M_128 + sadc kmem_cache named unix:0:kmem_io_16M_256 + sadc kmem_cache named unix:0:kmem_io_16M_512 + sadc kmem_cache named unix:0:kmem_io_16M_1024 + sadc kmem_cache named unix:0:kmem_io_16M_2048 + sadc kmem_cache named unix:0:kmem_io_16M_4096 + sadc kmem_cache named unix:0:id32_cache + sadc kmem_cache named unix:0:bp_map_4096 + sadc kmem_cache named unix:0:bp_map_8192 + sadc kmem_cache named unix:0:bp_map_12288 + sadc kmem_cache named unix:0:bp_map_16384 + sadc kmem_cache named unix:0:bp_map_20480 + sadc kmem_cache named unix:0:bp_map_24576 + sadc kmem_cache named unix:0:bp_map_28672 + sadc kmem_cache named unix:0:bp_map_32768 + sadc kmem_cache named unix:0:mod_hash_entries + sadc kmem_cache named unix:0:ipp_mod + sadc kmem_cache named unix:0:ipp_action + sadc kmem_cache named unix:0:ipp_packet + sadc kmem_cache named unix:0:htable_t + sadc kmem_cache named unix:0:hment_t + sadc kmem_cache named unix:0:hat_t + sadc kmem_cache named unix:0:HatHash + sadc kmem_cache named unix:0:seg_cache + sadc kmem_cache named unix:0:snode_cache + sadc kmem_cache named unix:0:dv_node_cache + sadc kmem_cache named unix:0:dev_info_node_cache + sadc kmem_cache named unix:0:segkp_4096 + sadc kmem_cache named unix:0:segkp_8192 + sadc kmem_cache named unix:0:segkp_12288 + sadc kmem_cache named unix:0:segkp_16384 + sadc kmem_cache named unix:0:segkp_20480 + sadc kmem_cache named unix:0:thread_cache + sadc kmem_cache named unix:0:lwp_cache + sadc kmem_cache named unix:0:turnstile_cache + sadc kmem_cache named unix:0:cred_cache + sadc kmem_cache named unix:0:rctl_cache + sadc kmem_cache named unix:0:rctl_val_cache + sadc kmem_cache named unix:0:task_cache + sadc kmem_cache named unix:0:cyclic_id_cache + sadc kmem_cache named unix:0:dnlc_space_cache + sadc kmem_cache named unix:0:vn_cache + sadc kmem_cache named unix:0:file_cache + sadc kmem_cache named unix:0:stream_head_cache + sadc kmem_cache named unix:0:queue_cache + sadc kmem_cache named unix:0:syncq_cache + sadc kmem_cache named unix:0:qband_cache + sadc kmem_cache named unix:0:linkinfo_cache + sadc kmem_cache named unix:0:ciputctrl_cache + sadc kmem_cache named unix:0:serializer_cache + sadc kmem_cache named unix:0:as_cache + sadc kmem_cache named unix:0:marker_cache + sadc kmem_cache named unix:0:anon_cache + sadc kmem_cache named unix:0:anonmap_cache + sadc kmem_cache named unix:0:segvn_cache + sadc kmem_cache named unix:0:flk_edges + sadc kmem_cache named unix:0:fdb_cache + sadc kmem_cache named unix:0:timer_cache + sadc kmem_cache named unix:0:physio_buf_cache + sadc kmem_cache named unix:0:ufs_inode_cache + sadc kmem_cache named unix:0:directio_buf_cache + sadc kmem_cache named unix:0:lufs_save + sadc kmem_cache named unix:0:lufs_bufs + sadc kmem_cache named unix:0:lufs_mapentry_cache + sadc misc raw cpu_stat:0:cpu_stat0 + sadc kmem_cache named unix:0:kcf_sreq_cache + sadc kmem_cache named unix:0:kcf_areq_cache + sadc kmem_cache named unix:0:kcf_context_cache + sadc kmem_cache named unix:0:ipsec_actions + sadc kmem_cache named unix:0:ipsec_selectors + sadc kmem_cache named unix:0:ipsec_policy + sadc kmem_cache named unix:0:ipsec_info + sadc kmem_cache named unix:0:ip_minor_arena_1 + sadc kmem_cache named unix:0:ipcl_conn_cache + sadc kmem_cache named unix:0:ipcl_tcpconn_cache + sadc kmem_cache named unix:0:ire_cache + sadc kmem_cache named unix:0:tcp_timercache + sadc kmem_cache named unix:0:tcp_sack_info_cache + sadc kmem_cache named unix:0:tcp_iphc_cache + sadc kmem_cache named unix:0:squeue_cache + sadc kmem_cache named unix:0:sctp_conn_cache + sadc kmem_cache named unix:0:sctp_faddr_cache + sadc kmem_cache named unix:0:sctp_set_cache + sadc kmem_cache named unix:0:sctp_ftsn_set_cache + sadc kmem_cache named unix:0:sctpsock + sadc kmem_cache named unix:0:sctp_assoc + sadc kmem_cache named unix:0:socktpi_cache + sadc kmem_cache named unix:0:socktpi_unix_cache + sadc kmem_cache named unix:0:ncafs_cache + sadc kmem_cache named unix:0:process_cache + sadc kmem_cache named unix:0:exacct_object_cache + sadc kmem_cache named unix:0:fctl_cache + sadc kmem_cache named unix:0:tl_cache + sadc kmem_cache named unix:0:keysock_1 + sadc kmem_cache named unix:0:spdsock_1 + sadc kmem_cache named unix:0:fnode_cache + sadc kmem_cache named unix:0:pipe_cache + sadc kmem_cache named unix:0:namefs_inodes_1 + sadc kmem_cache named unix:0:port_cache + sadc kmem_cache named unix:0:lnode_cache + sadc kmem_cache named unix:0:clnt_clts_endpnt_cache + sadc kmem_cache named unix:0:pty_map + sadc kmem_cache named unix:0:sppptun_map + sadc kmem_cache named unix:0:dtrace_state_cache + sadc kmem_cache named unix:0:qif_head_cache + sadc kmem_cache named unix:0:udp_minor_1 + sadc kmem_cache named unix:0:authkern_cache + sadc kmem_cache named unix:0:authloopback_cache + sadc kmem_cache named unix:0:authdes_cache_handle + sadc kmem_cache named unix:0:rnode_cache + sadc kmem_cache named unix:0:nfs_access_cache + sadc kmem_cache named unix:0:client_handle_cache + sadc kmem_cache named unix:0:rnode4_cache + sadc kmem_cache named unix:0:svnode_cache + sadc kmem_cache named unix:0:nfs4_access_cache + sadc kmem_cache named unix:0:client_handle4_cache + sadc kmem_cache named unix:0:nfs4_ace4vals_cache + sadc kmem_cache named unix:0:nfs4_ace4_list_cache + sadc kmem_cache named unix:0:NFS_idmap_cache + sadc kmem_cache named unix:0:lm_vnode + sadc kmem_cache named unix:0:lm_xprt + sadc kmem_cache named unix:0:lm_sysid + sadc kmem_cache named unix:0:lm_client + sadc kmem_cache named unix:0:lm_async + sadc kmem_cache named unix:0:lm_sleep + sadc kmem_cache named unix:0:lm_config + sadc kmem_cache named unix:0:nfslog_small_rec + sadc kmem_cache named unix:0:nfslog_medium_rec + sadc kmem_cache named unix:0:nfslog_large_rec + sadc kmem_cache named unix:0:exi_cache_handle + sadc kmem_cache named unix:0:Client_entry_cache + sadc kmem_cache named unix:0:OpenOwner_entry_cache + sadc kmem_cache named unix:0:OpenStateID_entry_cache + sadc kmem_cache named unix:0:LockStateID_entry_cache + sadc kmem_cache named unix:0:Lockowner_entry_cache + sadc kmem_cache named unix:0:File_entry_cache + sadc kmem_cache named unix:0:DelegStateID_entry_cache + sadc kmem_cache named unix:0:ip_minor_1 + sadc kmem_cache named unix:0:ar_minor_1 + sadc kmem_cache named unix:0:icmp_minor_1 + sadc kmem_cache named unix:0:crypto_session_cache + sadc kmem_cache named unix:0:fcsm_job_cache + sadc kmem_cache named unix:0:sd0_cache + sadc kmem_cache named unix:0:hsfs_hsnode_cache + sadc kmem_cache named unix:0:kmem_magazine_1 + sadc misc raw unix:0:sysinfo + sadc vm raw unix:0:vminfo + sadc misc named unix:0:system_misc + sadc kmem_cache named unix:0:file_cache + sadc ufs named ufs:0:inode_cache + sadc misc raw cpu_stat:0:cpu_stat0 + sadc kmem_cache named unix:0:kmem_magazine_1 + sadc kmem_cache named unix:0:kmem_magazine_3 + sadc kmem_cache named unix:0:kmem_magazine_7 + sadc kmem_cache named unix:0:kmem_magazine_15 + sadc kmem_cache named unix:0:kmem_magazine_31 + sadc kmem_cache named unix:0:kmem_magazine_47 + sadc kmem_cache named unix:0:kmem_magazine_63 + sadc kmem_cache named unix:0:kmem_magazine_95 + sadc kmem_cache named unix:0:kmem_magazine_143 + sadc kmem_cache named unix:0:kmem_slab_cache + sadc kmem_cache named unix:0:kmem_bufctl_cache + sadc kmem_cache named unix:0:kmem_bufctl_audit_cache + sadc kmem_cache named unix:0:kmem_va_4096 + sadc kmem_cache named unix:0:kmem_va_8192 + sadc kmem_cache named unix:0:kmem_va_12288 + sadc kmem_cache named unix:0:kmem_va_16384 + sadc kmem_cache named unix:0:kmem_va_20480 + sadc kmem_cache named unix:0:kmem_va_24576 + sadc kmem_cache named unix:0:kmem_va_28672 + sadc kmem_cache named unix:0:kmem_va_32768 + sadc kmem_cache named unix:0:kmem_alloc_8 + sadc kmem_cache named unix:0:kmem_alloc_16 + sadc kmem_cache named unix:0:kmem_alloc_24 + sadc kmem_cache named unix:0:kmem_alloc_32 + sadc kmem_cache named unix:0:kmem_alloc_40 + sadc kmem_cache named unix:0:kmem_alloc_48 + sadc kmem_cache named unix:0:kmem_alloc_56 + sadc kmem_cache named unix:0:kmem_alloc_64 + sadc kmem_cache named unix:0:kmem_alloc_80 + sadc kmem_cache named unix:0:kmem_alloc_96 + sadc kmem_cache named unix:0:kmem_alloc_112 + sadc kmem_cache named unix:0:kmem_alloc_128 + sadc kmem_cache named unix:0:kmem_alloc_160 + sadc kmem_cache named unix:0:kmem_alloc_192 + sadc kmem_cache named unix:0:kmem_alloc_224 + sadc kmem_cache named unix:0:kmem_alloc_256 + sadc kmem_cache named unix:0:kmem_alloc_320 + sadc kmem_cache named unix:0:kmem_alloc_384 + sadc kmem_cache named unix:0:kmem_alloc_448 + sadc kmem_cache named unix:0:kmem_alloc_512 + sadc kmem_cache named unix:0:kmem_alloc_640 + sadc kmem_cache named unix:0:kmem_alloc_768 + sadc kmem_cache named unix:0:kmem_alloc_896 + sadc kmem_cache named unix:0:kmem_alloc_1152 + sadc kmem_cache named unix:0:kmem_alloc_1344 + sadc kmem_cache named unix:0:kmem_alloc_1600 + sadc kmem_cache named unix:0:kmem_alloc_2048 + sadc kmem_cache named unix:0:kmem_alloc_2688 + sadc kmem_cache named unix:0:kmem_alloc_4096 + sadc kmem_cache named unix:0:kmem_alloc_8192 + sadc kmem_cache named unix:0:kmem_alloc_12288 + sadc kmem_cache named unix:0:kmem_alloc_16384 + sadc kmem_cache named unix:0:streams_mblk + sadc kmem_cache named unix:0:streams_dblk_64 + sadc kmem_cache named unix:0:streams_dblk_128 + sadc kmem_cache named unix:0:streams_dblk_320 + sadc kmem_cache named unix:0:streams_dblk_576 + sadc kmem_cache named unix:0:streams_dblk_1088 + sadc kmem_cache named unix:0:streams_dblk_1536 + sadc kmem_cache named unix:0:streams_dblk_1984 + sadc kmem_cache named unix:0:streams_dblk_2624 + sadc kmem_cache named unix:0:streams_dblk_3968 + sadc kmem_cache named unix:0:streams_dblk_8192 + sadc kmem_cache named unix:0:streams_dblk_12160 + sadc kmem_cache named unix:0:streams_dblk_16384 + sadc kmem_cache named unix:0:streams_dblk_20352 + sadc kmem_cache named unix:0:streams_dblk_24576 + sadc kmem_cache named unix:0:streams_dblk_28544 + sadc kmem_cache named unix:0:streams_dblk_32768 + sadc kmem_cache named unix:0:streams_dblk_36736 + sadc kmem_cache named unix:0:streams_dblk_40960 + sadc kmem_cache named unix:0:streams_dblk_44928 + sadc kmem_cache named unix:0:streams_dblk_49152 + sadc kmem_cache named unix:0:streams_dblk_53120 + sadc kmem_cache named unix:0:streams_dblk_57344 + sadc kmem_cache named unix:0:streams_dblk_61312 + sadc kmem_cache named unix:0:streams_dblk_65536 + sadc kmem_cache named unix:0:streams_dblk_69504 + sadc kmem_cache named unix:0:streams_dblk_73728 + sadc kmem_cache named unix:0:streams_dblk_esb + sadc kmem_cache named unix:0:streams_fthdr + sadc kmem_cache named unix:0:streams_ftblk + sadc kmem_cache named unix:0:multidata + sadc kmem_cache named unix:0:multidata_pdslab + sadc kmem_cache named unix:0:multidata_pattbl + sadc kmem_cache named unix:0:taskq_ent_cache + sadc kmem_cache named unix:0:taskq_cache + sadc kmem_cache named unix:0:kmem_io_512M_128 + sadc kmem_cache named unix:0:kmem_io_512M_256 + sadc kmem_cache named unix:0:kmem_io_512M_512 + sadc kmem_cache named unix:0:kmem_io_512M_1024 + sadc kmem_cache named unix:0:kmem_io_512M_2048 + sadc kmem_cache named unix:0:kmem_io_512M_4096 + sadc kmem_cache named unix:0:kmem_io_16M_128 + sadc kmem_cache named unix:0:kmem_io_16M_256 + sadc kmem_cache named unix:0:kmem_io_16M_512 + sadc kmem_cache named unix:0:kmem_io_16M_1024 + sadc kmem_cache named unix:0:kmem_io_16M_2048 + sadc kmem_cache named unix:0:kmem_io_16M_4096 + sadc kmem_cache named unix:0:id32_cache + sadc kmem_cache named unix:0:bp_map_4096 + sadc kmem_cache named unix:0:bp_map_8192 + sadc kmem_cache named unix:0:bp_map_12288 + sadc kmem_cache named unix:0:bp_map_16384 + sadc kmem_cache named unix:0:bp_map_20480 + sadc kmem_cache named unix:0:bp_map_24576 + sadc kmem_cache named unix:0:bp_map_28672 + sadc kmem_cache named unix:0:bp_map_32768 + sadc kmem_cache named unix:0:mod_hash_entries + sadc kmem_cache named unix:0:ipp_mod + sadc kmem_cache named unix:0:ipp_action + sadc kmem_cache named unix:0:ipp_packet + sadc kmem_cache named unix:0:htable_t + sadc kmem_cache named unix:0:hment_t + sadc kmem_cache named unix:0:hat_t + sadc kmem_cache named unix:0:HatHash + sadc kmem_cache named unix:0:seg_cache + sadc kmem_cache named unix:0:snode_cache + sadc kmem_cache named unix:0:dv_node_cache + sadc kmem_cache named unix:0:dev_info_node_cache + sadc kmem_cache named unix:0:segkp_4096 + sadc kmem_cache named unix:0:segkp_8192 + sadc kmem_cache named unix:0:segkp_12288 + sadc kmem_cache named unix:0:segkp_16384 + sadc kmem_cache named unix:0:segkp_20480 + sadc kmem_cache named unix:0:thread_cache + sadc kmem_cache named unix:0:lwp_cache + sadc kmem_cache named unix:0:turnstile_cache + sadc kmem_cache named unix:0:cred_cache + sadc kmem_cache named unix:0:rctl_cache + sadc kmem_cache named unix:0:rctl_val_cache + sadc kmem_cache named unix:0:task_cache + sadc kmem_cache named unix:0:cyclic_id_cache + sadc kmem_cache named unix:0:dnlc_space_cache + sadc kmem_cache named unix:0:vn_cache + sadc kmem_cache named unix:0:file_cache + sadc kmem_cache named unix:0:stream_head_cache + sadc kmem_cache named unix:0:queue_cache + sadc kmem_cache named unix:0:syncq_cache + sadc kmem_cache named unix:0:qband_cache + sadc kmem_cache named unix:0:linkinfo_cache + sadc kmem_cache named unix:0:ciputctrl_cache + sadc kmem_cache named unix:0:serializer_cache + sadc kmem_cache named unix:0:as_cache + sadc kmem_cache named unix:0:marker_cache + sadc kmem_cache named unix:0:anon_cache + sadc kmem_cache named unix:0:anonmap_cache + sadc kmem_cache named unix:0:segvn_cache + sadc kmem_cache named unix:0:flk_edges + sadc kmem_cache named unix:0:fdb_cache + sadc kmem_cache named unix:0:timer_cache + sadc kmem_cache named unix:0:physio_buf_cache + sadc kmem_cache named unix:0:ufs_inode_cache + sadc kmem_cache named unix:0:directio_buf_cache + sadc kmem_cache named unix:0:lufs_save + sadc kmem_cache named unix:0:lufs_bufs + sadc kmem_cache named unix:0:lufs_mapentry_cache + sadc kmem_cache named unix:0:kcf_sreq_cache + sadc kmem_cache named unix:0:kcf_areq_cache + sadc kmem_cache named unix:0:kcf_context_cache + sadc kmem_cache named unix:0:ipsec_actions + sadc kmem_cache named unix:0:ipsec_selectors + sadc kmem_cache named unix:0:ipsec_policy + sadc kmem_cache named unix:0:ipsec_info + sadc kmem_cache named unix:0:ip_minor_arena_1 + sadc kmem_cache named unix:0:ipcl_conn_cache + sadc kmem_cache named unix:0:ipcl_tcpconn_cache + sadc kmem_cache named unix:0:ire_cache + sadc kmem_cache named unix:0:tcp_timercache + sadc kmem_cache named unix:0:tcp_sack_info_cache + sadc kmem_cache named unix:0:tcp_iphc_cache + sadc kmem_cache named unix:0:squeue_cache + sadc kmem_cache named unix:0:sctp_conn_cache + sadc kmem_cache named unix:0:sctp_faddr_cache + sadc kmem_cache named unix:0:sctp_set_cache + sadc kmem_cache named unix:0:sctp_ftsn_set_cache + sadc kmem_cache named unix:0:sctpsock + sadc kmem_cache named unix:0:sctp_assoc + sadc kmem_cache named unix:0:socktpi_cache + sadc kmem_cache named unix:0:socktpi_unix_cache + sadc kmem_cache named unix:0:ncafs_cache + sadc kmem_cache named unix:0:process_cache + sadc kmem_cache named unix:0:exacct_object_cache + sadc kmem_cache named unix:0:fctl_cache + sadc kmem_cache named unix:0:tl_cache + sadc kmem_cache named unix:0:keysock_1 + sadc kmem_cache named unix:0:spdsock_1 + sadc kmem_cache named unix:0:fnode_cache + sadc kmem_cache named unix:0:pipe_cache + sadc kmem_cache named unix:0:namefs_inodes_1 + sadc kmem_cache named unix:0:port_cache + sadc kmem_cache named unix:0:lnode_cache + sadc kmem_cache named unix:0:clnt_clts_endpnt_cache + sadc kmem_cache named unix:0:pty_map + sadc kmem_cache named unix:0:sppptun_map + sadc kmem_cache named unix:0:dtrace_state_cache + sadc kmem_cache named unix:0:qif_head_cache + sadc kmem_cache named unix:0:udp_minor_1 + sadc kmem_cache named unix:0:authkern_cache + sadc kmem_cache named unix:0:authloopback_cache + sadc kmem_cache named unix:0:authdes_cache_handle + sadc kmem_cache named unix:0:rnode_cache + sadc kmem_cache named unix:0:nfs_access_cache + sadc kmem_cache named unix:0:client_handle_cache + sadc kmem_cache named unix:0:rnode4_cache + sadc kmem_cache named unix:0:svnode_cache + sadc kmem_cache named unix:0:nfs4_access_cache + sadc kmem_cache named unix:0:client_handle4_cache + sadc kmem_cache named unix:0:nfs4_ace4vals_cache + sadc kmem_cache named unix:0:nfs4_ace4_list_cache + sadc kmem_cache named unix:0:NFS_idmap_cache + sadc kmem_cache named unix:0:lm_vnode + sadc kmem_cache named unix:0:lm_xprt + sadc kmem_cache named unix:0:lm_sysid + sadc kmem_cache named unix:0:lm_client + sadc kmem_cache named unix:0:lm_async + sadc kmem_cache named unix:0:lm_sleep + sadc kmem_cache named unix:0:lm_config + sadc kmem_cache named unix:0:nfslog_small_rec + sadc kmem_cache named unix:0:nfslog_medium_rec + sadc kmem_cache named unix:0:nfslog_large_rec + sadc kmem_cache named unix:0:exi_cache_handle + sadc kmem_cache named unix:0:Client_entry_cache + sadc kmem_cache named unix:0:OpenOwner_entry_cache + sadc kmem_cache named unix:0:OpenStateID_entry_cache + sadc kmem_cache named unix:0:LockStateID_entry_cache + sadc kmem_cache named unix:0:Lockowner_entry_cache + sadc kmem_cache named unix:0:File_entry_cache + sadc kmem_cache named unix:0:DelegStateID_entry_cache + sadc kmem_cache named unix:0:ip_minor_1 + sadc kmem_cache named unix:0:ar_minor_1 + sadc kmem_cache named unix:0:icmp_minor_1 + sadc kmem_cache named unix:0:crypto_session_cache + sadc kmem_cache named unix:0:fcsm_job_cache + sadc kmem_cache named unix:0:sd0_cache + sadc kmem_cache named unix:0:hsfs_hsnode_cache + sadc vmem named vmem:16:kmem_oversize + sadc disk io cmdk:0:cmdk0 + sadc nfs io nfs:1:nfs1 + sadc disk io sd:0:sd0 + sadc usb_byte_count io usba:0:uhci0,bulk + sadc usb_byte_count io usba:0:uhci0,ctrl + sadc usb_byte_count io usba:0:uhci0,intr + sadc usb_byte_count io usba:0:uhci0,isoch + sadc usb_byte_count io usba:0:uhci0,total + sadc usb_byte_count io usba:1:uhci1,bulk + sadc usb_byte_count io usba:1:uhci1,ctrl + sadc usb_byte_count io usba:1:uhci1,intr + sadc usb_byte_count io usba:1:uhci1,isoch + sadc usb_byte_count io usba:1:uhci1,total + +Yep, to print the four fields from "sar -u 1 1", sadc read the ENTIRE +KSTAT TREE FIVE TIMES. + +Comparing the effect of this to vmstat, + + # ptime vmstat 1 6 + kthr memory page disk faults cpu + r b w swap free re mf pi po fr de sr cd s0 -- -- in sy cs us sy id + 0 0 43 907784 115324 29 124 34 1 1 0 4 2 0 0 0 277 470 210 1 2 97 + 0 0 38 750856 172304 1 40 0 0 0 0 0 0 0 0 0 230 224 130 1 1 98 + 0 0 38 750856 172304 0 0 0 0 0 0 0 0 0 0 0 219 168 111 0 1 99 + 0 0 38 750856 172304 0 0 0 0 0 0 0 0 0 0 0 226 109 113 0 0 100 + 0 0 38 750856 172304 0 0 0 0 0 0 0 0 0 0 0 225 246 137 1 1 98 + 0 0 38 750856 172304 0 0 0 0 0 0 0 0 0 0 0 222 175 119 0 1 99 + + real 5.060 + user 0.006 + sys 0.013 + +Ok, so vmstat causes a total of 13 ms of sys time - much of which would +be the fork and exec. Now lets try sar, + + # ptime sar -u 1 5 + + SunOS jupiter 5.10 Generic i86pc 04/21/2006 + + 23:42:55 %usr %sys %wio %idle + 23:42:56 0 3 0 97 + 23:42:57 1 2 0 97 + 23:42:58 0 2 0 98 + 23:42:59 1 3 0 96 + 23:43:00 0 2 0 98 + + Average 0 2 0 97 + + real 5.148 + user 0.010 + sys 0.127 + +Phwaorr - 127 ms of sys time to measure 5 samples. That is a LOT. diff --git a/cddl/contrib/dtracetoolkit/Examples/lastwords_example.txt b/cddl/contrib/dtracetoolkit/Examples/lastwords_example.txt new file mode 100644 index 000000000000..5452d2e36f25 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/lastwords_example.txt @@ -0,0 +1,81 @@ +The following is a demonstration of the lastwords command, + + +Here we run lastwords to catch syscalls from processes named "bash" as they +exit, + + # ./lastwords bash + Tracing... Waiting for bash to exit... + 1091567219163679 1861 bash sigaction 0 0 + 1091567219177487 1861 bash sigaction 0 0 + 1091567219189692 1861 bash sigaction 0 0 + 1091567219202085 1861 bash sigaction 0 0 + 1091567219214553 1861 bash sigaction 0 0 + 1091567219226690 1861 bash sigaction 0 0 + 1091567219238786 1861 bash sigaction 0 0 + 1091567219251697 1861 bash sigaction 0 0 + 1091567219265770 1861 bash sigaction 0 0 + 1091567219294110 1861 bash gtime 42a7c194 0 + 1091567219428305 1861 bash write 5 0 + 1091567219451138 1861 bash setcontext 0 0 + 1091567219473911 1861 bash sigaction 0 0 + 1091567219516487 1861 bash stat64 0 0 + 1091567219547973 1861 bash open64 4 0 + 1091567219638345 1861 bash write 5 0 + 1091567219658886 1861 bash close 0 0 + 1091567219689094 1861 bash open64 4 0 + 1091567219704301 1861 bash fstat64 0 0 + 1091567219731796 1861 bash read 2fe 0 + 1091567219745541 1861 bash close 0 0 + 1091567219768536 1861 bash lwp_sigmask ffbffeff 0 + 1091567219787494 1861 bash ioctl 0 0 + 1091567219801338 1861 bash setpgrp 6a3 0 + 1091567219814067 1861 bash ioctl 0 0 + 1091567219825791 1861 bash lwp_sigmask ffbffeff 0 + 1091567219847778 1861 bash setpgrp 0 0 + TIME PID EXEC SYSCALL RETURN ERR + +In another window, a bash shell was executed and then exited normally. The +last few system calls that the bash shell made can be seen above. + + + + +In the following example we moniter the exit of bash shells again, but this +time the bash shell sends itself a "kill -8", + + # ./lastwords bash + Tracing... Waiting for bash to exit... + 1091650185555391 1865 bash sigaction 0 0 + 1091650185567963 1865 bash sigaction 0 0 + 1091650185580316 1865 bash sigaction 0 0 + 1091650185592381 1865 bash sigaction 0 0 + 1091650185605046 1865 bash sigaction 0 0 + 1091650185618451 1865 bash sigaction 0 0 + 1091650185647663 1865 bash gtime 42a7c1e7 0 + 1091650185794626 1865 bash kill 0 0 + 1091650185836941 1865 bash lwp_sigmask ffbffeff 0 + 1091650185884145 1865 bash stat64 0 0 + 1091650185916135 1865 bash open64 4 0 + 1091650186005673 1865 bash write b 0 + 1091650186025782 1865 bash close 0 0 + 1091650186052002 1865 bash open64 4 0 + 1091650186067538 1865 bash fstat64 0 0 + 1091650186094289 1865 bash read 309 0 + 1091650186108086 1865 bash close 0 0 + 1091650186129965 1865 bash lwp_sigmask ffbffeff 0 + 1091650186149092 1865 bash ioctl 0 0 + 1091650186162614 1865 bash setpgrp 6a3 0 + 1091650186175457 1865 bash ioctl 0 0 + 1091650186187206 1865 bash lwp_sigmask ffbffeff 0 + 1091650186209514 1865 bash setpgrp 0 0 + 1091650186225307 1865 bash sigaction 0 0 + 1091650186238832 1865 bash getpid 749 0 + 1091650186260149 1865 bash kill 0 0 + 1091650186277925 1865 bash setcontext 0 0 + TIME PID EXEC SYSCALL RETURN ERR + +The last few system calls are different, we can see the kill system call +before bash exits. + + diff --git a/cddl/contrib/dtracetoolkit/Examples/loads_example.txt b/cddl/contrib/dtracetoolkit/Examples/loads_example.txt new file mode 100644 index 000000000000..f369f960ad8d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/loads_example.txt @@ -0,0 +1,19 @@ +The following is a demonstration of the loads.d script. + + +Here we run both loads.d and the uptime command for comparison, + + # uptime + 1:30am up 14 day(s), 2:27, 3 users, load average: 3.52, 3.45, 3.05 + + # ./loads.d + 2005 Jun 11 01:30:49, load average: 3.52, 3.45, 3.05 + +Both have returned the same load average, confirming that loads.d is +behaving as expected. + + +The point of loads.d is to demonstrate fetching the same data as uptime +does, in the DTrace language. It is not intended as a replacement +or substitute to the uptime(1) command. + diff --git a/cddl/contrib/dtracetoolkit/Examples/lockbydist_example.txt b/cddl/contrib/dtracetoolkit/Examples/lockbydist_example.txt new file mode 100644 index 000000000000..7310e5adde26 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/lockbydist_example.txt @@ -0,0 +1,114 @@ +The following is a demonstration of the lockbyproc.d script, + + # lockbydist.d + dtrace: description 'lockstat:::adaptive-block ' matched 1 probe + ^C + + metadata-manager + value ------------- Distribution ------------- count + 131072 | 0 + 262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 524288 | 0 + + sched + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 9 + 65536 | 0 + + oracle + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@ 9 + 65536 |@@@@@@@@@@@@@@@@@@@@@ 10 + 131072 | 0 + +In the above output, oracle can be seen to have blocked 10 times from +65 to 131 microseconds, and 9 times from 32 to 65 microseconds. sched, +the kernel, has blocked several times also. metadata-manager only +blocked once, which was at least 262 microseconds. + + + +The following is a longer sample, + + # lockbydist.d + dtrace: description 'lockstat:::adaptive-block ' matched 1 probe + ^C + + svc.startd + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32768 | 0 + + java + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 65536 | 0 + + oracle + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 65536 |@@@@@@@@@@@@@ 2 + 131072 | 0 + + mysql-test-run + value ------------- Distribution ------------- count + 65536 | 0 + 131072 |@@@@@@@@@@@@@@@@@@@@ 1 + 262144 |@@@@@@@@@@@@@@@@@@@@ 1 + 524288 | 0 + + pageout + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@ 1 + 65536 | 0 + 131072 | 0 + 262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 524288 | 0 + + mysqltest + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@ 1 + 65536 |@@@@@@@@@@@ 2 + 131072 |@@@@@@@@@@@ 2 + 262144 |@@@@@@@@@@@ 2 + 524288 | 0 + + sched + value ------------- Distribution ------------- count + 8192 | 0 + 16384 |@@@@@@@@@@@ 11 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@ 25 + 65536 | 0 + 131072 |@ 1 + 262144 |@@ 2 + 524288 | 0 + + mysqld + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@ 22 + 65536 |@@@@@@@@@ 9 + 131072 | 0 + 262144 |@@@@ 4 + 524288 | 0 + 1048576 | 0 + 2097152 | 0 + 4194304 |@@ 2 + 8388608 |@@@@ 4 + 16777216 | 0 + +The length of time threads were blocked, and the number of such blocks +can be easily observed from the above output. + +mysqld can be seen to have many short blocks: 22 from 32 -> 65 microseconds, +and a few larger blocks: 4 from 8 -> 16 ms. + + + diff --git a/cddl/contrib/dtracetoolkit/Examples/lockbyproc_example.txt b/cddl/contrib/dtracetoolkit/Examples/lockbyproc_example.txt new file mode 100644 index 000000000000..11092353fdf3 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/lockbyproc_example.txt @@ -0,0 +1,42 @@ +The following is a demonstration of the lockbyproc.d script, + + # lockbyproc.d + dtrace: description 'lockstat:::adaptive-block ' matched 1 probe + ^C + + pageout 49438 + mysql-test-run 96414 + oracle 149086 + sched 220601 + +The above output shows that threads belonging to sched, the kernel, spent +a total of 220 microseconds waiting for an adaptive mutex lock. + + + + +This example sampled for a longer interval, + + # lockbyproc.d + dtrace: description 'lockstat:::adaptive-block ' matched 1 probe + ^C + + init 136228 + java 371896 + oracle 783402 + sched 2315779 + mysqltest 9428277 + mysql-test-run 10093658 + mysqld 17412999 + fsflush 19676738 + +Here we can see threads belonging to fsflush have spent a total of 19.7 ms +waiting for an adaptive mutex. Note: it's not easy to say that it means a +19.7 ms delay in the completion of the fsflush program, as this value is +the sum of the block times across all the threads. So it is possible that +many threads were blocked at the same time, eg, it could have been 19 threads +blocked during the same 1 ms. + + + + diff --git a/cddl/contrib/dtracetoolkit/Examples/minfbypid_example.txt b/cddl/contrib/dtracetoolkit/Examples/minfbypid_example.txt new file mode 100644 index 000000000000..c2fffb4c6f26 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/minfbypid_example.txt @@ -0,0 +1,20 @@ +The following is a demonstration of the minfbypid.d script, + + +Here we run it for a few seconds then hit Ctrl-C, + + # minfbypid.d + Tracing... Hit Ctrl-C to end. + ^C + PID CMD MINFAULTS + 11021 dtrace 54 + 11023 ls 56 + 11024 df 57 + 11023 bash 75 + 11022 bash 75 + 11024 bash 76 + 11022 find 91 + +In the above output, we can see that each of the bash shells had about 75 +minor faults each. Minor faults are an indication of memory consumption. + diff --git a/cddl/contrib/dtracetoolkit/Examples/minfbyproc_example.txt b/cddl/contrib/dtracetoolkit/Examples/minfbyproc_example.txt new file mode 100644 index 000000000000..0c1ce8401c82 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/minfbyproc_example.txt @@ -0,0 +1,14 @@ +The following is an example of the minfbyproc.d script, + + # minfbyproc.d + dtrace: description 'vminfo:::as_fault ' matched 1 probe + ^C + + mozilla-bin 18 + dtrace 57 + find 64 + bash 150 + tar 501 + +In the above output, tar processes caused 501 minor faults. + diff --git a/cddl/contrib/dtracetoolkit/Examples/mmapfiles_example.txt b/cddl/contrib/dtracetoolkit/Examples/mmapfiles_example.txt new file mode 100644 index 000000000000..eca437056040 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/mmapfiles_example.txt @@ -0,0 +1,109 @@ +The following is a demonstration of the mmapfiles.d script. + +Here we run mmapfiles.d while in another window a new bash shell is started. +The files that were mapped in aren't suprising, they are the common shared +librarios, + + # mmapfiles.d + Tracing... Hit Ctrl-C to end. + ^C + MMAPS CMD PATHNAME + 1 bash /lib/libdl.so.1 + 3 bash /lib/libsocket.so.1 + 3 bash /lib/libnsl.so.1 + 3 bash /lib/libc.so.1 + 3 bash /lib/libcurses.so.1 + + + +Now we examine zsh. This time a number of extra libraries are mapped, + + # mmapfiles.d + Tracing... Hit Ctrl-C to end. + ^C + MMAPS CMD PATHNAME + 1 zsh /lib/libdl.so.1 + 3 getent /lib/libc.so.1 + 3 getent /lib/libnsl.so.1 + 3 getent /lib/libsocket.so.1 + 3 zsh /usr/sfw/lib/zsh/4.2.1/zsh/parameter.so + 3 zsh /usr/sfw/lib/zsh/4.2.1/zsh/zutil.so + 3 zsh /usr/sfw/lib/zsh/4.2.1/zsh/complete.so + 3 zsh /usr/sfw/lib/zsh/4.2.1/zsh/stat.so + 3 zsh /usr/sfw/lib/zsh/4.2.1/zsh/zle.so + 3 tset /lib/libc.so.1 + 3 tset /opt/sfw/lib/libncurses.so.5.2 + 3 zsh /lib/libc.so.1 + 3 zsh /lib/libm.so.2 + 3 zsh /lib/libcurses.so.1 + 3 zsh /lib/libnsl.so.1 + 3 zsh /usr/sfw/lib/zsh/4.2.1/zsh/complist.so + 3 zsh /lib/libsocket.so.1 + + + +Sometimes the output can be quite suprising. The following shows the mmaps +caused by the "sdtaudiocontrol" tool, a java tool to change the volume levels +on Solaris, + + # mmapfiles.d + Tracing... Hit Ctrl-C to end. + + MMAPS CMD PATHNAME + 1 java /usr/jdk/packages/jmf/lib/ext/jmplay.jar + 1 java /usr/dt/appconfig/sdtaudiocontrol/classes/SDtAudioControl.jar + 1 java /usr/dt/classes/xservices.jar + 1 java /usr/dt/classes/jhall.jar + 1 java /usr/dt/classes/jsearch.jar + 1 java /usr/jdk/packages/jmf/lib/ext/mp3plugin.jar + 1 java /usr/jdk/packages/jmf/lib/ext/jmfmp3.jar + 1 java /usr/jdk/packages/jmf/lib/ext/multiplayer.jar + 1 java /usr/jdk/packages/jmf/lib/ext/mediaplayer.jar + 1 java /usr/jdk/packages/jmf/lib/ext/jmf.jar + 1 java /usr/jdk/packages/jai-imageio/lib/ext/jai_imageio.jar + 1 java /usr/jdk/packages/jai-imageio/lib/ext/clibwrapper_jiio.jar + 1 java /usr/jdk/packages/jai/lib/ext/mlibwrapper_jai.jar + 1 java /usr/jdk/packages/jai/lib/ext/jai_core.jar + 1 java /usr/jdk/packages/jai/lib/ext/jai_codec.jar + 1 java /usr/jdk/packages/javax.help-2.0/lib/jhall.jar + 1 java /usr/jdk/instances/jdk1.5.0/jre/lib/ext/sunpkcs11.jar + 1 java /usr/jdk/instances/jdk1.5.0/jre/lib/ext/sunjce_provider.jar + 1 java /usr/jdk/instances/jdk1.5.0/jre/lib/ext/localedata.jar + 1 java /usr/jdk/instances/jdk1.5.0/jre/lib/ext/dnsns.jar + 1 java /tmp/hsperfdata_root/6464 + 1 java /tmp/hsperfdata_root/6455 + 2 java /usr/lib/libsched.so.1 + 2 java /usr/jdk/instances/jdk1.5.0/jre/lib/charsets.jar + 2 java /usr/jdk/instances/jdk1.5.0/jre/lib/jce.jar + 2 java /usr/jdk/instances/jdk1.5.0/jre/lib/jsse.jar + 2 java /usr/jdk/instances/jdk1.5.0/jre/lib/rt.jar + 3 sdtaudiocontrol /lib/libc.so.1 + 3 java /usr/jdk/instances/jdk1.5.0/jre/lib/i386/headless/libmawt.so + 3 java /usr/jdk/instances/jdk1.5.0/jre/lib/i386/libmlib_image.so + 3 ls /lib/libc.so.1 + 3 rm /lib/libc.so.1 + 3 java /usr/dt/appconfig/sdtaudiocontrol/lib/libAudioControl.so + 3 java /usr/jdk/instances/jdk1.5.0/jre/lib/i386/libawt.so + 4 java /lib/libdl.so.1 + 6 java /usr/jdk/instances/jdk1.5.0/jre/lib/i386/libzip.so + 6 java /usr/jdk/instances/jdk1.5.0/jre/lib/i386/libjava.so + 6 java /usr/jdk/instances/jdk1.5.0/jre/lib/i386/libverify.so + 6 java /lib/libscf.so.1 + 6 java /usr/lib/libCrun.so.1 + 6 java /lib/libnsl.so.1 + 6 java /lib/libm.so.1 + 6 java /usr/jdk/instances/jdk1.5.0/jre/lib/i386/client/libjvm.so + 6 java /lib/libsocket.so.1 + 6 java /lib/libuutil.so.1 + 6 java /usr/jdk/instances/jdk1.5.0/jre/lib/i386/native_threads/libhpi.so + 6 java /lib/libmp.so.2 + 6 java /lib/libmd5.so.1 + 6 java /lib/libm.so.2 + 6 java /lib/libdoor.so.1 + 8 java /usr/jdk/instances/jdk1.5.0/jre/lib/i386/client/classes.jsa + 8 java /lib/libthread.so.1 + 12 java /lib/libc.so.1 + 21 awk /lib/libm.so.2 + 21 awk /lib/libc.so.1 + 65 java /devices/pseudo/mm@0:zero + diff --git a/cddl/contrib/dtracetoolkit/Examples/modcalls_example.txt b/cddl/contrib/dtracetoolkit/Examples/modcalls_example.txt new file mode 100644 index 000000000000..f920d20581bf --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/modcalls_example.txt @@ -0,0 +1,47 @@ +The following is an example of the modcalls.d oneliner, + + +Here we run it for a few seconds then hit Ctrl-C, + + # modcalls.d + dtrace: script './modcalls.d' matched 18437 probes + ^C + + ptm 2 + mntfs 2 + pool 2 + kcf 4 + pts 5 + portfs 6 + pset 6 + ttcompat 9 + ptem 9 + devfs 13 + ipf 15 + namefs 20 + ctfs 22 + procfs 22 + ldterm 23 + ipgpc 48 + sockfs 58 + flowacct 69 + ata 70 + gld 75 + rtls 76 + specfs 83 + ip 201 + uhci 294 + TS 333 + tmpfs 694 + doorfs 897 + ufs 1329 + uppc 5617 + unix 49794 + genunix 53445 + +The output lists kernel modules, and the number of function calls for +each module. For example, "rtls" - the network driver, called 76 functions. + +This script may be useful to determine whether drivers are "thinking" when +troubleshooting driver issues. + diff --git a/cddl/contrib/dtracetoolkit/Examples/newproc_example.txt b/cddl/contrib/dtracetoolkit/Examples/newproc_example.txt new file mode 100644 index 000000000000..f392b050f88a --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/newproc_example.txt @@ -0,0 +1,19 @@ +The following is an example of the newproc.d script, + + # ./newproc.d + dtrace: description 'proc:::exec-success ' matched 1 probe + CPU ID FUNCTION:NAME + 0 3297 exec_common:exec-success man ls + 0 3297 exec_common:exec-success sh -c cd /usr/share/man; tbl /usr/share/man/man1/ls.1 |neqn /usr/share/lib/pub/ + 0 3297 exec_common:exec-success tbl /usr/share/man/man1/ls.1 + 0 3297 exec_common:exec-success neqn /usr/share/lib/pub/eqnchar - + 0 3297 exec_common:exec-success nroff -u0 -Tlp -man - + 0 3297 exec_common:exec-success col -x + 0 3297 exec_common:exec-success sh -c trap '' 1 15; /usr/bin/mv -f/tmp/mpzIaOZF /usr/share/man/cat1/ls.1 2> /d + 0 3297 exec_common:exec-success /usr/bin/mv -f /tmp/mpzIaOZF /usr/share/man/cat1/ls.1 + 0 3297 exec_common:exec-success sh -c more -s /tmp/mpzIaOZF + 0 3297 exec_common:exec-success more -s /tmp/mpzIaOZF + +The above output was caught when running "man ls". This identifies all the +commands responsible for processing the man page. + diff --git a/cddl/contrib/dtracetoolkit/Examples/nfswizard_example.txt b/cddl/contrib/dtracetoolkit/Examples/nfswizard_example.txt new file mode 100644 index 000000000000..68fb18542377 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/nfswizard_example.txt @@ -0,0 +1,67 @@ +The following is a demonstration of the NFS client wizard tool, nfswizard.d, + + + + # nfswizard.d + Tracing... Hit Ctrl-C to end. + ^C + NFS Client Wizard. 2005 Dec 2 14:59:07 -> 2005 Dec 2 14:59:14 + + Read: 4591616 bytes (4 Mb) + Write: 0 bytes (0 Mb) + + Read: 640 Kb/sec + Write: 0 Kb/sec + + NFS I/O events: 166 + Avg response time: 8 ms + Max response time: 14 ms + + Response times (us): + value ------------- Distribution ------------- count + 128 | 0 + 256 | 1 + 512 |@@@ 14 + 1024 |@ 4 + 2048 |@@@@@@@ 30 + 4096 |@@@@@ 20 + 8192 |@@@@@@@@@@@@@@@@@@@@@@@ 97 + 16384 | 0 + + Top 25 files accessed (bytes): + PATHNAME BYTES + /net/mars/var/tmp/adm/vold.log 4096 + /net/mars/var/tmp/adm/uptime 4096 + /net/mars/var/tmp/adm/mail 4096 + /net/mars/var/tmp/adm/authlog.5 4096 + /net/mars/var/tmp/adm/ftpd 12288 + /net/mars/var/tmp/adm/spellhist 16384 + /net/mars/var/tmp/adm/messages 16384 + /net/mars/var/tmp/adm/utmpx 20480 + /net/mars/var/tmp/adm/ftpd.2 20480 + /net/mars/var/tmp/adm/ftpd.3 20480 + /net/mars/var/tmp/adm/ftpd.1 24576 + /net/mars/var/tmp/adm/ftpd.0 24576 + /net/mars/var/tmp/adm/lastlog 28672 + /net/mars/var/tmp/adm/ipf 61440 + /net/mars/var/tmp/adm/loginlog 69632 + /net/mars/var/tmp/adm/ipf.4 73728 + /net/mars/var/tmp/adm/messages.20040906 81920 + /net/mars/var/tmp/adm/ipf.3 102400 + /net/mars/var/tmp/adm/ipf.1 110592 + /net/mars/var/tmp/adm/ipf.5 114688 + /net/mars/var/tmp/adm/ipf.2 114688 + /net/mars/var/tmp/adm/ipf.0 122880 + /net/mars/var/tmp/adm/route.log 266240 + /net/mars/var/tmp/adm/pppd.log 425984 + /net/mars/var/tmp/adm/wtmpx 2842624 + + + +In the above demonstration, we run nfswizard.d for several seconds then hit +Ctrl-C. The report contains useful information about NFS client activity, +including response time statistics and file access details. + +Note: this is measuring activity caused by NFS client processes (which must +be on the same server). It is not examining NFS server processes. + diff --git a/cddl/contrib/dtracetoolkit/Examples/oneliners_examples.txt b/cddl/contrib/dtracetoolkit/Examples/oneliners_examples.txt new file mode 100644 index 000000000000..9ca0fa62f671 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/oneliners_examples.txt @@ -0,0 +1,307 @@ +# +# DTrace OneLiners Examples +# + +### New processes with arguments, + +# dtrace -n 'proc:::exec-success { trace(curpsinfo->pr_psargs); }' +dtrace: description 'proc:::exec-success ' matched 1 probe +CPU ID FUNCTION:NAME + 0 3297 exec_common:exec-success man ls + 0 3297 exec_common:exec-success sh -c cd /usr/share/man; tbl /usr/share/man/man1/ls.1 |neqn /usr/share/lib/pub/ + 0 3297 exec_common:exec-success tbl /usr/share/man/man1/ls.1 + 0 3297 exec_common:exec-success neqn /usr/share/lib/pub/eqnchar - + 0 3297 exec_common:exec-success nroff -u0 -Tlp -man - + 0 3297 exec_common:exec-success col -x + 0 3297 exec_common:exec-success sh -c trap '' 1 15; /usr/bin/mv -f /tmp/mpzIaOZF /usr/share/man/cat1/ls.1 2> /d + 0 3297 exec_common:exec-success /usr/bin/mv -f /tmp/mpzIaOZF /usr/share/man/cat1/ls.1 + 0 3297 exec_common:exec-success sh -c more -s /tmp/mpzIaOZF + 0 3297 exec_common:exec-success more -s /tmp/mpzIaOZF + + +### Files opened by process, + +# dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }' +dtrace: description 'syscall::open*:entry ' matched 2 probes +CPU ID FUNCTION:NAME + 0 14 open:entry gnome-netstatus- /dev/kstat + 0 14 open:entry man /var/ld/ld.config + 0 14 open:entry man /lib/libc.so.1 + 0 14 open:entry man /usr/share/man/man.cf + 0 14 open:entry man /usr/share/man/windex + 0 14 open:entry man /usr/share/man/man1/ls.1 + 0 14 open:entry man /usr/share/man/man1/ls.1 + 0 14 open:entry man /tmp/mpqea4RF + 0 14 open:entry sh /var/ld/ld.config + 0 14 open:entry sh /lib/libc.so.1 + 0 14 open:entry neqn /var/ld/ld.config + 0 14 open:entry neqn /lib/libc.so.1 + 0 14 open:entry neqn /usr/share/lib/pub/eqnchar + 0 14 open:entry tbl /var/ld/ld.config + 0 14 open:entry tbl /lib/libc.so.1 + 0 14 open:entry tbl /usr/share/man/man1/ls.1 + 0 14 open:entry nroff /var/ld/ld.config +[...] + + +### Syscall count by program, + +# dtrace -n 'syscall:::entry { @num[execname] = count(); }' +dtrace: description 'syscall:::entry ' matched 228 probes +^C + snmpd 1 + utmpd 2 + inetd 2 + nscd 7 + svc.startd 11 + sendmail 31 + poold 133 + dtrace 1720 + + +### Syscall count by syscall, + +# dtrace -n 'syscall:::entry { @num[probefunc] = count(); }' +dtrace: description 'syscall:::entry ' matched 228 probes +^C + fstat 1 + setcontext 1 + lwp_park 1 + schedctl 1 + mmap 1 + sigaction 2 + pset 2 + lwp_sigmask 2 + gtime 3 + sysconfig 3 + write 4 + brk 6 + pollsys 7 + p_online 558 + ioctl 579 + + +### Syscall count by process, + +# dtrace -n 'syscall:::entry { @num[pid,execname] = count(); }' +dtrace: description 'syscall:::entry ' matched 228 probes +^C + 1109 svc.startd 1 + 4588 svc.startd 2 + 7 svc.startd 2 + 3950 svc.startd 2 + 1626 nscd 2 + 870 svc.startd 2 + 82 nscd 6 + 5011 sendmail 10 + 6010 poold 74 + 8707 dtrace 1720 + + +### Read bytes by process, + +# dtrace -n 'sysinfo:::readch { @bytes[execname] = sum(arg0); }' +dtrace: description 'sysinfo:::readch ' matched 4 probes +^C + + mozilla-bin 16 + gnome-smproxy 64 + metacity 64 + dsdm 64 + wnck-applet 64 + xscreensaver 96 + gnome-terminal 900 + ttymon 5952 + Xorg 17544 + + +### Write bytes by process, + +# dtrace -n 'sysinfo:::writech { @bytes[execname] = sum(arg0); }' +dtrace: description 'sysinfo:::writech ' matched 4 probes +^C + + dtrace 1 + gnome-settings-d 8 + xscreensaver 8 + gnome-panel 8 + nautilus 8 + date 29 + wnck-applet 120 + bash 210 + mozilla-bin 1497 + ls 1947 + metacity 3172 + Xorg 7424 + gnome-terminal 51955 + + +### Read size distribution by process, + +# dtrace -n 'sysinfo:::readch { @dist[execname] = quantize(arg0); }' +dtrace: description 'sysinfo:::readch ' matched 4 probes +^C +[...] + gnome-terminal + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 15 + 64 |@@@ 1 + 128 | 0 + + Xorg + value ------------- Distribution ------------- count + -1 | 0 + 0 |@@@@@@@@@@@@@@@@@@@ 26 + 1 | 0 + 2 | 0 + 4 | 0 + 8 |@@@@ 6 + 16 |@ 2 + 32 |@ 2 + 64 | 0 + 128 |@@@@@@@@ 11 + 256 |@@@ 4 + 512 | 0 + + +### Write size distribution by process, + +# dtrace -n 'sysinfo:::writech { @dist[execname] = quantize(arg0); }' +dtrace: description 'sysinfo:::writech ' matched 4 probes +^C +[...] + Xorg + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 169 + 64 |@@@ 16 + 128 |@@ 10 + 256 | 0 + + gnome-terminal + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@ 6 + 2 | 0 + 4 | 0 + 8 | 1 + 16 |@ 2 + 32 |@@@ 7 + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@ 63 + 256 |@@@@ 10 + 512 | 1 + 1024 |@@@@@ 13 + 2048 |@ 2 + 4096 |@@@ 7 + + +### Disk size by process, + +# dtrace -n 'io:::start { printf("%d %s %d",pid,execname,args[0]->b_bcount); }' + 0 3271 bdev_strategy:start 16459 tar 1024 + 0 3271 bdev_strategy:start 16459 tar 1024 + 0 3271 bdev_strategy:start 16459 tar 2048 + 0 3271 bdev_strategy:start 16459 tar 1024 + 0 3271 bdev_strategy:start 16459 tar 1024 + 0 3271 bdev_strategy:start 16459 tar 1024 + 0 3271 bdev_strategy:start 16459 tar 8192 + 0 3271 bdev_strategy:start 16459 tar 8192 + 0 3271 bdev_strategy:start 16459 tar 16384 + 0 3271 bdev_strategy:start 16459 tar 2048 + 0 3271 bdev_strategy:start 16459 tar 1024 + 0 3271 bdev_strategy:start 16459 tar 1024 + + +### Pages paged in by process, + +# dtrace -n 'vminfo:::pgpgin { @pg[execname] = sum(arg0); }' +dtrace: description 'vminfo:::pgpgin ' matched 1 probe +^C + + ttymon 1 + bash 1 + mozilla-bin 36 + tar 6661 + + +### Minor faults by process, + +# dtrace -n 'vminfo:::as_fault { @mem[execname] = sum(arg0); }' +dtrace: description 'vminfo:::as_fault ' matched 1 probe +^C + + mozilla-bin 18 + dtrace 57 + find 64 + bash 150 + tar 501 + + +### Interrupts by CPU, + +# dtrace -n 'sdt:::interrupt-start { @num[cpu] = count(); }' +dtrace: description 'sdt:::interrupt-start ' matched 1 probe +^C + + 513 2 + 515 4 + 3 39 + 2 39 + + +### New processes with arguments and time, + +# dtrace -qn 'syscall::exec*:return { printf("%Y %s\n",walltimestamp,curpsinfo->pr_psargs); }' +2005 Apr 25 19:15:09 man ls +2005 Apr 25 19:15:09 sh -c cd /usr/share/man; tbl /usr/share/man/man1/ls.1 |... +2005 Apr 25 19:15:09 neqn /usr/share/lib/pub/eqnchar - +2005 Apr 25 19:15:09 tbl /usr/share/man/man1/ls.1 +2005 Apr 25 19:15:09 nroff -u0 -Tlp -man - +2005 Apr 25 19:15:09 col -x +2005 Apr 25 19:15:10 sh -c trap '' 1 15; /usr/bin/mv -f /tmp/mpRZaqTF /usr/s... +2005 Apr 25 19:15:10 /usr/bin/mv -f /tmp/mpRZaqTF /usr/share/man/cat1/ls.1 +2005 Apr 25 19:15:10 sh -c more -s /tmp/mpRZaqTF +2005 Apr 25 19:15:10 more -s /tmp/mpRZaqTF +[...] + + +### Successful signal details, + +# dtrace -n 'proc:::signal-send /pid/ { printf("%s -%d %d",execname,args[2],args[1]->pr_pid); }' +dtrace: description 'proc:::signal-send ' matched 1 probe +CPU ID FUNCTION:NAME + 0 3303 sigtoproc:signal-send bash -15 16442 + 0 3303 sigtoproc:signal-send bash -9 16443 +^C + + +### Kernel function calls by module, + +# dtrace -n 'fbt:::entry { @calls[probemod] = count(); }' +dtrace: description 'fbt:::entry ' matched 18437 probes +^C + + devfs 2 + ptm 2 + ipf 5 + pts 5 + ttcompat 9 + ptem 9 + ldterm 23 + ipgpc 24 + ufs 24 + ata 25 + sockfs 27 + gld 32 + rtls 34 + flowacct 38 + specfs 50 + ip 84 + TS 92 + uhci 101 + uppc 1758 + unix 6347 + genunix 10023 + diff --git a/cddl/contrib/dtracetoolkit/Examples/opensnoop_example.txt b/cddl/contrib/dtracetoolkit/Examples/opensnoop_example.txt new file mode 100644 index 000000000000..329d09b50340 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/opensnoop_example.txt @@ -0,0 +1,110 @@ +The following are examples of opensnoop. File open events are traced +along with some process details. + + +This first example is of the default output. The commands "cat", "cal", +"ls" and "uname" were run. The returned file descriptor (or -1 for error) are +shown, along with the filenames. + + # ./opensnoop + UID PID COMM FD PATH + 100 3504 cat -1 /var/ld/ld.config + 100 3504 cat 3 /usr/lib/libc.so.1 + 100 3504 cat 3 /etc/passwd + 100 3505 cal -1 /var/ld/ld.config + 100 3505 cal 3 /usr/lib/libc.so.1 + 100 3505 cal 3 /usr/share/lib/zoneinfo/Australia/NSW + 100 3506 ls -1 /var/ld/ld.config + 100 3506 ls 3 /usr/lib/libc.so.1 + 100 3507 uname -1 /var/ld/ld.config + 100 3507 uname 3 /usr/lib/libc.so.1 + [...] + + +Full command arguments can be fetched using -g, + + # ./opensnoop -g + UID PID PATH FD ARGS + 100 3528 /var/ld/ld.config -1 cat /etc/passwd + 100 3528 /usr/lib/libc.so.1 3 cat /etc/passwd + 100 3528 /etc/passwd 3 cat /etc/passwd + 100 3529 /var/ld/ld.config -1 cal + 100 3529 /usr/lib/libc.so.1 3 cal + 100 3529 /usr/share/lib/zoneinfo/Australia/NSW 3 cal + 100 3530 /var/ld/ld.config -1 ls -l + 100 3530 /usr/lib/libc.so.1 3 ls -l + 100 3530 /var/run/name_service_door 3 ls -l + 100 3530 /usr/share/lib/zoneinfo/Australia/NSW 4 ls -l + 100 3531 /var/ld/ld.config -1 uname -a + 100 3531 /usr/lib/libc.so.1 3 uname -a + [...] + + + +The verbose option prints human readable timestamps, + + # ./opensnoop -v + STRTIME UID PID COMM FD PATH + 2005 Jan 22 01:22:50 0 23212 df -1 /var/ld/ld.config + 2005 Jan 22 01:22:50 0 23212 df 3 /lib/libcmd.so.1 + 2005 Jan 22 01:22:50 0 23212 df 3 /lib/libc.so.1 + 2005 Jan 22 01:22:50 0 23212 df 3 /platform/SUNW,Sun-Fire-V210/lib/libc_psr.so.1 + 2005 Jan 22 01:22:50 0 23212 df 3 /etc/mnttab + 2005 Jan 22 01:22:50 0 23211 dtrace 4 /usr/share/lib/zoneinfo/Australia/NSW + 2005 Jan 22 01:22:51 0 23213 uname -1 /var/ld/ld.config + 2005 Jan 22 01:22:51 0 23213 uname 3 /lib/libc.so.1 + 2005 Jan 22 01:22:51 0 23213 uname 3 /platform/SUNW,Sun-Fire-V210/lib/libc_psr.so.1 + [...] + + + +Particular files can be monitored using -f. For example, + + # ./opensnoop -vgf /etc/passwd + STRTIME UID PID PATH FD ARGS + 2005 Jan 22 01:28:50 0 23242 /etc/passwd 3 cat /etc/passwd + 2005 Jan 22 01:28:54 0 23243 /etc/passwd 4 vi /etc/passwd + 2005 Jan 22 01:29:06 0 23244 /etc/passwd 3 passwd brendan + [...] + + + +This example is of opensnoop running on a quiet system. We can see as +various daemons are opening files, + + # ./opensnoop + UID PID COMM FD PATH + 0 253 nscd 5 /etc/user_attr + 0 253 nscd 5 /etc/hosts + 0 419 mibiisa 2 /dev/kstat + 0 419 mibiisa 2 /dev/rtls + 0 419 mibiisa 2 /dev/kstat + 0 419 mibiisa 2 /dev/kstat + 0 419 mibiisa 2 /dev/rtls + 0 419 mibiisa 2 /dev/kstat + 0 253 nscd 5 /etc/user_attr + 0 419 mibiisa 2 /dev/kstat + 0 419 mibiisa 2 /dev/rtls + 0 419 mibiisa 2 /dev/kstat + 0 174 in.routed 8 /dev/kstat + 0 174 in.routed 8 /dev/kstat + 0 174 in.routed 6 /dev/ip + 0 419 mibiisa 2 /dev/kstat + 0 419 mibiisa 2 /dev/rtls + 0 419 mibiisa 2 /dev/kstat + 0 293 utmpd 4 /var/adm/utmpx + 0 293 utmpd 5 /var/adm/utmpx + 0 293 utmpd 6 /proc/442/psinfo + 0 293 utmpd 6 /proc/567/psinfo + 0 293 utmpd 6 /proc/567/psinfo + 0 293 utmpd 6 /proc/567/psinfo + 0 293 utmpd 6 /proc/567/psinfo + 0 293 utmpd 6 /proc/567/psinfo + 0 293 utmpd 6 /proc/567/psinfo + 0 293 utmpd 6 /proc/567/psinfo + 0 293 utmpd 6 /proc/567/psinfo + 0 293 utmpd 6 /proc/3013/psinfo + 0 419 mibiisa 2 /dev/kstat + 0 419 mibiisa 2 /dev/rtls + 0 419 mibiisa 2 /dev/kstat + [...] diff --git a/cddl/contrib/dtracetoolkit/Examples/pathopens_example.txt b/cddl/contrib/dtracetoolkit/Examples/pathopens_example.txt new file mode 100644 index 000000000000..b5004dd3fc93 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pathopens_example.txt @@ -0,0 +1,32 @@ +The following is a demonstration of the pathopens.d script, + + +Here we run it for a few seconds then hit Ctrl-C, + + # pathopens.d + Tracing... Hit Ctrl-C to end. + ^C + COUNT PATHNAME + 1 /lib/libcmd.so.1 + 1 /export/home/root/DTrace/Dexplorer/dexplorer + 1 /lib/libmd5.so.1 + 1 /lib/libaio.so.1 + 1 /lib/librt.so.1 + 1 /etc/security/prof_attr + 1 /etc/mnttab + 2 /devices/pseudo/devinfo@0:devinfo + 2 /dev/kstat + 2 /lib/libnvpair.so.1 + 2 /lib/libkstat.so.1 + 2 /lib/libdevinfo.so.1 + 2 /lib/libnsl.so.1 + 4 /lib/libc.so.1 + 4 /var/ld/ld.config + 8 /export/home/brendan/Utils_solx86/setiathome-3.08.i386-pc-solaris2.6/outfile.sah + +In the above output, many of the files would have been opened using +absolute pathnames. However the "dexplorer" file was opened using a relative +pathname - and the pathopens.d script has correctly printed the full path. + +The above shows that the outfile.sah file was opened successfully 8 times. + diff --git a/cddl/contrib/dtracetoolkit/Examples/pfilestat_example.txt b/cddl/contrib/dtracetoolkit/Examples/pfilestat_example.txt new file mode 100644 index 000000000000..b2c54a031f0c --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pfilestat_example.txt @@ -0,0 +1,200 @@ +The following are sample outputs of the pfilestat tool for various scenarios. + + + +Starting with something simple, + +Running: dd if=/dev/rdsk/c0d0s0 of=/dev/null bs=56k # x86, 32-bit + + # ./pfilestat `pgrep -x dd` + + STATE FDNUM Time Filename + read 3 2% /devices/pci@0,0/pci-ide@1f,1/ide@0/cmdk@0,0 + write 4 3% /devices/pseudo/mm@0:null + waitcpu 0 7% + running 0 16% + sleep-r 0 69% + + STATE FDNUM KB/s Filename + write 4 53479 /devices/pseudo/mm@0:null + read 3 53479 /devices/pci@0,0/pci-ide@1f,1/ide@0/cmdk@0,0 + + Total event time (ms): 4999 Total Mbytes/sec: 104 + +Most of the time we are sleeping on read, which is to be expected as dd on +the raw device is simple -> read:entry, strategy, biodone, read:return. +CPU time in read() itself is small. + + + +Now for the dsk device, + +Running: dd if=/dev/dsk/c0d0s0 of=/dev/null bs=56k # x86, 32-bit + + # ./pfilestat `pgrep -x dd` + + STATE FDNUM Time Filename + write 4 5% /devices/pseudo/mm@0:null + waitcpu 0 8% + running 0 15% + sleep-r 0 18% + read 3 53% /devices/pci@0,0/pci-ide@1f,1/ide@0/cmdk@0,0 + + STATE FDNUM KB/s Filename + read 3 53492 /devices/pci@0,0/pci-ide@1f,1/ide@0/cmdk@0,0 + write 4 53492 /devices/pseudo/mm@0:null + + Total event time (ms): 4914 Total Mbytes/sec: 102 + +Woah, we are now spending much more time in read()! I imagine segmap is +a busy bee. The "running" and "write" times are hardly different. + + + +Now for a SPARC demo of the same, + +Running: dd if=/dev/dsk/c0d0s0 of=/dev/null bs=56k # SPARC, 64-bit + + # ./pfilestat `pgrep -x dd` + + STATE FDNUM Time Filename + write 4 3% /devices/pseudo/mm@0:zero + waitcpu 0 7% + running 0 17% + read 3 24% /devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:a + sleep-r 0 54% + + STATE FDNUM KB/s Filename + read 3 13594 /devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:a + write 4 13606 /devices/pseudo/mm@0:zero + + Total event time (ms): 4741 Total Mbytes/sec: 25 + +I did prime the cache by running this a few times first. There is less +read() time than with the x86 32-bit demo, as I would guess that the +process is more often exhausting the (faster) segmap cache and getting +to the point where it must sleep. (However, do take this comparison with +a grain of salt - my development servers aren't ideal for comparing +statistics: one is a 867 MHz Pentium, and the other a 360 MHz Ultra 5). + +The file system cache is faster on 64-bit systems due to the segkpm +enhancement in Solaris 10. For details see, +http://blogs.sun.com/roller/page/rmc?entry=solaris_10_fast_filesystem_cache + + + +Now, back to x86. + +Running: tar cf /dev/null / + + # ./pfilestat `pgrep -x tar` + + STATE FDNUM Time Filename + read 11 0% /extra1/test/amd64/libCstd.so.1 + read 11 0% /extra1/test/amd64/libXm.so + read 11 0% /extra1/test/amd64/libXm.so.4 + read 11 1% /extra1/test/amd64/libgtk-x11-2.0.so + read 11 2% /extra1/test/amd64/libgtk-x11-2.0.so.0 + waitcpu 0 2% + read 9 4% /extra1/5000 + write 3 7% /devices/pseudo/mm@0:null + running 0 19% + sleep-r 0 46% + + STATE FDNUM KB/s Filename + read 11 293 /extra1/test/amd64/libgdk-x11-2.0.so + read 11 295 /extra1/test/amd64/libgdk-x11-2.0.so.0 + read 9 476 /extra1/1000 + read 11 526 /extra1/test/amd64/libCstd.so.1 + read 11 594 /extra1/test/amd64/libXm.so.4 + read 11 594 /extra1/test/amd64/libXm.so + read 11 1603 /extra1/test/amd64/libgtk-x11-2.0.so.0 + read 11 1606 /extra1/test/amd64/libgtk-x11-2.0.so + read 9 4078 /extra1/5000 + write 3 21254 /devices/pseudo/mm@0:null + + Total event time (ms): 4903 Total Mbytes/sec: 41 + +Fair enough. tar is crusing along at 21 Mbytes/sec (writes to fd 3!). + + + +More interesting is to do the following, + +Running: tar cf - / | gzip > /dev/null + + # ./pfilestat `pgrep -x tar` + + STATE FDNUM Time Filename + read 11 0% /extra1/test/amd64/libm.so + read 11 0% /extra1/test/amd64/libm.so.2 + read 11 0% /extra1/test/amd64/libnsl.so + read 11 0% /extra1/test/amd64/libnsl.so.1 + read 11 0% /extra1/test/amd64/libc.so.1 + write 3 2% <none> + waitcpu 0 4% + sleep-r 0 4% + running 0 6% + sleep-w 0 78% + + STATE FDNUM KB/s Filename + read 11 74 /extra1/test/amd64/libldap.so + read 11 75 /extra1/test/amd64/libldap.so.5 + read 11 75 /extra1/test/amd64/libresolv.so.2 + read 11 76 /extra1/test/amd64/libresolv.so + read 11 97 /extra1/test/amd64/libm.so.2 + read 11 98 /extra1/test/amd64/libm.so + read 11 174 /extra1/test/amd64/libnsl.so + read 11 176 /extra1/test/amd64/libnsl.so.1 + read 11 216 /extra1/test/amd64/libc.so.1 + write 3 3022 <none> + + Total event time (ms): 4911 Total Mbytes/sec: 6 + +Woah now, tar is writing 3 Mbytes/sec - AND spending 78% of it's time on +sleep-w, sleeping on writes! Of course, this is because we are piping the +output to gzip, which is spending a while compressing the data. 78% +matches the time gzip was on the CPU (using either "prstat -m" or dtrace +to measure; procfs's pr_pctcpu would take too long to catch up). + + + + +Also interesting is, + +Running: perl -e 'while (1) {;}' & +Running: perl -e 'while (1) {;}' & +Running: perl -e 'while (1) {;}' & +Running: perl -e 'while (1) {;}' & +Running: tar cf /dev/null / + + # ./pfilestat `pgrep -x tar` + + STATE FDNUM Time Filename + read 11 0% /extra1/test/amd64/libxml2.so.2 + read 11 0% /extra1/test/amd64/libgdk-x11-2.0.so.0 + read 11 0% /extra1/test/amd64/libgdk-x11-2.0.so + read 11 0% /extra1/test/amd64/libCstd.so.1 + read 11 0% /extra1/test/amd64/libgtk-x11-2.0.so.0 + read 11 2% /extra1/test/amd64/libgtk-x11-2.0.so + write 3 2% /devices/pseudo/mm@0:null + running 0 8% + sleep-r 0 22% + waitcpu 0 65% + + STATE FDNUM KB/s Filename + read 11 182 /extra1/test/amd64/libsun_fc.so + read 11 264 /extra1/test/amd64/libglib-2.0.so + read 11 266 /extra1/test/amd64/libglib-2.0.so.0 + read 11 280 /extra1/test/amd64/libxml2.so.2 + read 11 293 /extra1/test/amd64/libgdk-x11-2.0.so + read 11 295 /extra1/test/amd64/libgdk-x11-2.0.so.0 + read 11 526 /extra1/test/amd64/libCstd.so.1 + read 11 761 /extra1/test/amd64/libgtk-x11-2.0.so.0 + read 11 1606 /extra1/test/amd64/libgtk-x11-2.0.so + write 3 7881 /devices/pseudo/mm@0:null + + Total event time (ms): 4596 Total Mbytes/sec: 13 + +Now we have "waitcpu" as tar competes for CPU cycles along with the greedy +infinite perl processes. diff --git a/cddl/contrib/dtracetoolkit/Examples/pgpginbypid_example.txt b/cddl/contrib/dtracetoolkit/Examples/pgpginbypid_example.txt new file mode 100644 index 000000000000..8326b904d94c --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pgpginbypid_example.txt @@ -0,0 +1,14 @@ +The following is a demonstration of the pgpginbypid.d script, + + +Here we run it for a few seconds then hit Ctrl-C, + + # pgpginbypid.d + Tracing... Hit Ctrl-C to end. + ^C + PID CMD PAGES + 10692 find 128 + 10693 tar 11928 + +In the output above, we can see which processes are responsible for page ins, +as well as the number of pages paged in. diff --git a/cddl/contrib/dtracetoolkit/Examples/pgpginbyproc_example.txt b/cddl/contrib/dtracetoolkit/Examples/pgpginbyproc_example.txt new file mode 100644 index 000000000000..e8bb8217a138 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pgpginbyproc_example.txt @@ -0,0 +1,13 @@ +The following is a demonstration of the pgpginbyproc.d script, + + # pgpginbyproc.d + dtrace: description 'vminfo:::pgpgin ' matched 1 probe + ^C + + ttymon 1 + bash 1 + mozilla-bin 36 + tar 6661 + +In the above output, tar processes have paged in 6661 pages from the filesystem. + diff --git a/cddl/contrib/dtracetoolkit/Examples/php_calldist_example.txt b/cddl/contrib/dtracetoolkit/Examples/php_calldist_example.txt new file mode 100644 index 000000000000..db3b0af9d542 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/php_calldist_example.txt @@ -0,0 +1,84 @@ +The following are examples of php_calldist.d. + +This script traces the elapsed time of PHP functions and prints a report +containing distribution plots per subroutine. Here it traces the example program +Code/Php/func_abc.php. + +# php_calldist.d +Tracing... Hit Ctrl-C to end. +^C + +Exclusive function elapsed times (us), + func_abc.php, func, func_a + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + func_abc.php, func, func_b + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + func_abc.php, func, func_c + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + func_abc.php, func, sleep + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 1048576 | 0 + + +Inclusive function elapsed times (us), + func_abc.php, func, func_c + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + func_abc.php, func, func_b + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + func_abc.php, func, sleep + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 1048576 | 0 + + func_abc.php, func, func_a + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + +In total, 3 subroutines were called, one each of func_a(), func_b() and +func_c(), and sleep was called 3 times. You can see this reflected in the +"count" column on the right. + +The exclusive subroutine elapsed times show that each subroutine spent +between 256 and 512 microseconds. This time excludes the time spent in +other subroutines. + +The inclusive subroutine elapsed times show that func_c() took between 0.5 +seconds and 1 second, func_b() took between 1 second and 2.1 seconds, and +func_a() took between 2.1 seconds and 4.2 seconds to execute. This time +includes the time spent in other subroutines called, and since func_a() called +func_b() which called func_c(), these times make sense. + +These elapsed times are the absolute time from when the subroutine began to +when it completed - which includes off-CPU time due to other system events +such as I/O, scheduling, interrupts, etc. + +Elapsed times are useful for identifying where latencies are. +See Notes/ALLelapsed_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive subroutine time. + diff --git a/cddl/contrib/dtracetoolkit/Examples/php_calltime_example.txt b/cddl/contrib/dtracetoolkit/Examples/php_calltime_example.txt new file mode 100644 index 000000000000..d76cb6e02581 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/php_calltime_example.txt @@ -0,0 +1,51 @@ +The following is an example of running php_calltime.d and tracing the elapsed +times for functions. + +We run php_calltime.d while running the program Code/Php/func_abc.php. We can +see that there are three sections in the DTrace output + +# php_calltime.d +Tracing... Hit Ctrl-C to end. +^C + +Count, + FILE TYPE NAME COUNT + func_abc.php func func_a 1 + func_abc.php func func_b 1 + func_abc.php func func_c 1 + func_abc.php func sleep 3 + - total - 6 + +Exclusive function elapsed times (us), + FILE TYPE NAME TOTAL + func_abc.php func func_c 330 + func_abc.php func func_b 367 + func_abc.php func func_a 418 + func_abc.php func sleep 3025644 + - total - 3026761 + +Inclusive function elapsed times (us), + FILE TYPE NAME TOTAL + func_abc.php func func_c 1010119 + func_abc.php func func_b 2020118 + func_abc.php func sleep 3025644 + func_abc.php func func_a 3026761 + +Section 1 - Count shows us how many times each function was called in the +Code/Php/func_abc.php program, with the last line giving us a total number of +functions called (in this case, six). + +Section 2 - These elapsed times shows us how many microseconds the program +spends in each function. This does not include the time spent in any +sub-functions called by that particular function. Again the last line gives +us the total time in microseconds. + +Section 3 - These elapsed times are the absolute time from when the function began to +when it completed - which includes off-CPU time due to other system events +such as I/O, scheduling, interrupts, etc. In particular, for this case it has +included the time waiting for the sleep commands. + +Elapsed times are useful for identifying where latencies are. +See Notes/ALLelapsed_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive function time. diff --git a/cddl/contrib/dtracetoolkit/Examples/php_cpudist_example.txt b/cddl/contrib/dtracetoolkit/Examples/php_cpudist_example.txt new file mode 100644 index 000000000000..6da7d29d8f4d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/php_cpudist_example.txt @@ -0,0 +1,84 @@ +The following are examples of php_cpudist.d. + +This script traces the on-CPU time of PHP functions and prints a report +containing distribution plots per subroutine. Here it traces the example +program Code/Php/func_abc.php. + +# php_cpudist.d +Tracing... Hit Ctrl-C to end. +^C + +Exclusive function on-CPU times (us), + func_abc.php, func, func_a + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + func_abc.php, func, func_b + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + func_abc.php, func, func_c + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + func_abc.php, func, sleep + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 32 | 0 + + +Inclusive function on-CPU times (us), + func_abc.php, func, func_c + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + func_abc.php, func, sleep + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 32 | 0 + + func_abc.php, func, func_b + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + func_abc.php, func, func_a + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + +In total, 3 subroutines were called, one each of func_a(), func_b() and +func_c(), and sleep was called 3 times. You can see this reflected in the +"count" column on the right. + +The exclusive subroutine elapsed times show that each subroutine spent +between 16 and 31 microseconds on CPU. This time excludes the time spent in +other subroutines. + +The inclusive subroutine elapsed times show that func_c() took between 32 +microseconds and 63 microseconds on CPU; sleep ran three times and each time +took between 16 and 31 microseconds on CPU; func_b() took between 64 and 127 +microseconds on CPU; and func_a() took between 128 and 255 microseconds on +CPU. This time includes the time spent in other subroutines called, and since +func_a() called func_b() which called func_c(), these times make sense. + +These elapsed times are the on CPU time from when the subroutine began to +when it completed. + +On-CPU times are useful for showing who is causing the CPUs to be busy. +See Notes/ALLelapsed_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive subroutine time. + diff --git a/cddl/contrib/dtracetoolkit/Examples/php_cputime_example.txt b/cddl/contrib/dtracetoolkit/Examples/php_cputime_example.txt new file mode 100644 index 000000000000..db218e1d1f53 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/php_cputime_example.txt @@ -0,0 +1,58 @@ +The following are examples of php_cputime.d. + +This script traces the on-CPU time of PHP functions and prints a report. +Here it traces the example program, Code/Php/func_abc.php. + +# php_cputime.d +Tracing... Hit Ctrl-C to end. +^C + +Count, + FILE TYPE NAME COUNT + func_abc.php func func_a 1 + func_abc.php func func_b 1 + func_abc.php func func_c 1 + func_abc.php func sleep 3 + - total - 6 + +Exclusive function on-CPU times (us), + FILE TYPE NAME TOTAL + func_abc.php func func_c 17 + func_abc.php func func_b 25 + func_abc.php func func_a 74 + func_abc.php func sleep 93 + - total - 210 + +Inclusive function on-CPU times (us), + FILE TYPE NAME TOTAL + func_abc.php func func_c 39 + func_abc.php func func_b 87 + func_abc.php func sleep 93 + func_abc.php func func_a 210 + +In total, six functions were called; sleep was called three times and there +was one call each of func_a(), func_b() and func_c(). + +The exclusive subroutine on-CPU times show that func_a() spent around 74 +microseconds on-CPU, func_b() spent 25 microseconds on-CPU, and func_c() spent +17 microseconds on-CPU. This exclusive times excludes time spent in other +subroutines. + +The inclusive subroutine on-CPU times show that func_c() spent around 39 +microseconds on-CPU, func_b() spent around 87 microseconds on-CPU and +func_a() spent around 210 microseconds. This inclusive time includes the time +spent in other functions called (including sleep), and since func_a() called +func_b() which called func_c(), these times make perfect sense. + +These on-CPU times are the time the program spent running on a CPU, from when +the function began to when it completed. This does not include time +spent off-CPU time such as sleeping for I/O or waiting for scheduling. + +On-CPU times are useful for showing who is causing the CPUs to be busy. +See Notes/ALLoncpu_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive subroutine time. + +If you study the func_abc.php program alongside the above output, the numbers +should make sense. + diff --git a/cddl/contrib/dtracetoolkit/Examples/php_flow_example.txt b/cddl/contrib/dtracetoolkit/Examples/php_flow_example.txt new file mode 100644 index 000000000000..6470daf087b3 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/php_flow_example.txt @@ -0,0 +1,36 @@ +The following are examples of php_flow.d. + +This is a simple script to trace the flow of PHP functions. +Here it traces the example program, Code/Php/func_abc.php + +# php_flow.d + C TIME(us) FILE -- FUNC + 0 3645535409575 func_abc.php -> func_a + 0 3645535409653 func_abc.php -> sleep + 0 3645536410511 func_abc.php <- sleep + 0 3645536410536 func_abc.php -> func_b + 0 3645536410557 func_abc.php -> sleep + 0 3645537420627 func_abc.php <- sleep + 0 3645537420652 func_abc.php -> func_c + 0 3645537420673 func_abc.php -> sleep + 0 3645538430106 func_abc.php <- sleep + 0 3645538430125 func_abc.php <- func_c + 0 3645538430134 func_abc.php <- func_b + 0 3645538430143 func_abc.php <- func_a +^C + +The fourth column is indented by 2 spaces to show when a new function begins. +This shows which function is calling which - the output above begins by +showing that func_a() began; slept, and returned from sleep; and then called +func_b(). + +The TIME(us) column shows time from boot in microseconds. + +The FILE column shows the file that was being executed. + +If the output looks strange, check the CPU "C" column - if it changes, +then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for +details and suggested workarounds. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/php_flowinfo_example.txt b/cddl/contrib/dtracetoolkit/Examples/php_flowinfo_example.txt new file mode 100644 index 000000000000..3b2e3c1f314c --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/php_flowinfo_example.txt @@ -0,0 +1,40 @@ +The following are examples of php_flowinfo.d. + +This is a simple script to trace the flow of PHP functions. +Here it traces the example program, Code/Php/func_abc.php + +# php_flowinfo.d +C PID/TID DELTA(us) FILE:LINE TYPE -- FUNC +0 18422/1 9 func_abc.php:22 func -> func_a +0 18422/1 35 func_abc.php:18 func -> sleep +0 18422/1 1009146 func_abc.php:18 func <- sleep +0 18422/1 35 func_abc.php:19 func -> func_b +0 18422/1 24 func_abc.php:11 func -> sleep +0 18422/1 1009803 func_abc.php:11 func <- sleep +0 18422/1 34 func_abc.php:12 func -> func_c +0 18422/1 24 func_abc.php:5 func -> sleep +0 18422/1 1009953 func_abc.php:5 func <- sleep +0 18422/1 28 func_abc.php:6 func <- func_c +0 18422/1 11 func_abc.php:13 func <- func_b +0 18422/1 10 func_abc.php:20 func <- func_a +^C + +The third column is indented by 2 spaces to show when a new function begins. +This shows which function is calling which - the output above begins by +showing that func_a() began; slept, and returned from sleep; and then called +func_b(). + +The DELTA(us) column shows time from that line to the previous line, and +so can be a bit tricky to read. For example, the second line of data output +(skipping the header) reads as "the time from func_a() beginning to +calling the sleep function beginning was 35 microseconds". + +The LINE column shows the line in the file what was being executed. Refer +to the source program to see what this line refers to. + +If the output looks shuffled, check the CPU "C" column - if it changes, +then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for +details and suggested workarounds. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/php_flowtime_example.txt b/cddl/contrib/dtracetoolkit/Examples/php_flowtime_example.txt new file mode 100644 index 000000000000..57eb69c6dc64 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/php_flowtime_example.txt @@ -0,0 +1,41 @@ +The following are examples of php_flowtime.d. + +This is a simple script to trace the flow of PHP functions. +Here it traces the example program, Code/Php/func_abc.php + +# php_flowtime.d + C TIME(us) FILE DELTA(us) -- FUNC + 0 3646108339057 func_abc.php 9 -> func_a + 0 3646108339090 func_abc.php 32 -> sleep + 0 3646109341043 func_abc.php 1001953 <- sleep + 0 3646109341074 func_abc.php 31 -> func_b + 0 3646109341098 func_abc.php 23 -> sleep + 0 3646110350712 func_abc.php 1009614 <- sleep + 0 3646110350745 func_abc.php 32 -> func_c + 0 3646110350768 func_abc.php 23 -> sleep + 0 3646111362323 func_abc.php 1011554 <- sleep + 0 3646111362351 func_abc.php 27 <- func_c + 0 3646111362361 func_abc.php 10 <- func_b + 0 3646111362370 func_abc.php 9 <- func_a +^C + +The fifth column is indented by 2 spaces to show when a new function begins. +This shows which function is calling which - the output above begins by +showing that func_a() began; slept, and returned from sleep; and then called +func_b(). + +The TIME(us) column shows time since boot. + +The DELTA(us) column shows time from that line to the previous line, and +so can be a bit tricky to read. For example, the second line of data output +(skipping the header) reads as "the time from func_a() beginning to +calling the sleep function beginning was 32 microseconds". + +The FILE column shows file that was being executed. + +If the output looks shuffled, check the CPU "C" and "TIME" columns, and +post sort based on TIME if necessary. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + + diff --git a/cddl/contrib/dtracetoolkit/Examples/php_funccalls_example.txt b/cddl/contrib/dtracetoolkit/Examples/php_funccalls_example.txt new file mode 100644 index 000000000000..7155a7139b92 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/php_funccalls_example.txt @@ -0,0 +1,17 @@ +The following are examples of php_funccalls.d. + +This is a simple script to count executed PHP functions. Here it traces +an example program, Code/Php/func_abc.php + +# php_funccalls.d +Tracing... Hit Ctrl-C to end. +^C + FILE FUNC CALLS + func_abc.php func_a 1 + func_abc.php func_b 1 + func_abc.php func_c 1 + func_abc.php sleep 3 + +While tracing, func_a() from the program "func_abc.php" was executed once, +as were func_b() and func_c(). sleep was executed three times. + diff --git a/cddl/contrib/dtracetoolkit/Examples/php_malloc_example.txt b/cddl/contrib/dtracetoolkit/Examples/php_malloc_example.txt new file mode 100644 index 000000000000..853d08299314 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/php_malloc_example.txt @@ -0,0 +1,23 @@ +Following are examples of running php_malloc.d. + +Here it is running on Code/Php/func_abc.php + + # php_malloc.d -p 18523 + Tracing... Hit Ctrl-C to end. + ^C + + PHP malloc byte distributions by engine caller, + + + PHP malloc byte distributions by PHP file and function, + + +Theoretically this should show you mallocs. However there weren't any in this +example. The rest of these example files would have been so much easier to +write if they were all like this. I would have been finished by now and would +have been flicking through the TV channels with a nice, cold beer in hand. + + +... Fixing this example is on my todo list. Check for newer versions of the +toolkit. + diff --git a/cddl/contrib/dtracetoolkit/Examples/php_syscalls_example.txt b/cddl/contrib/dtracetoolkit/Examples/php_syscalls_example.txt new file mode 100644 index 000000000000..c783420fc0fb --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/php_syscalls_example.txt @@ -0,0 +1,22 @@ +The following are examples of php_syscalls.d. + +This is a simple script to count executed PHP functions and system calls. +Here it traces an example program, Code/Php/func_abc.php + +# php_syscalls.d +Tracing... Hit Ctrl-C to end. +^C + PID FILE TYPE NAME COUNT + 18419 func_abc.php func func_a 1 + 18419 func_abc.php func func_b 1 + 18419 func_abc.php func func_c 1 + 18419 func_abc.php func sleep 3 + 18419 httpd syscall nanosleep 3 + +While tracing, four functions were called - func_a(), func_b(), func_c(), and +sleep. There were also three instances of the system call nanosleep(). + +This script can provide an insight to how a PHP application is interacting +with the system, by providing both application function calls and system calls +in the same output. + diff --git a/cddl/contrib/dtracetoolkit/Examples/php_syscolors_example.txt b/cddl/contrib/dtracetoolkit/Examples/php_syscolors_example.txt new file mode 100644 index 000000000000..96b26a8877df --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/php_syscolors_example.txt @@ -0,0 +1,63 @@ +The following are examples of php_syscolors.d. + +This is a simple script to trace the flow of PHP functions and system +calls made, and renders the output in color ("colour") using terminal +escape sequences (which you can tweak by modifying the script). + +Here it traces the example program, Code/Php/func_abc.php. + +WARNING: This output is full of terminal escape sequences, so if you are +trying to view this through an editor or web browser - it may look awful. +Try viewing this using "more" (although, depending on your terminal, it +still may look awful). + +# php_syscolors.d +C PID/TID DELTA(us) FILE:LINE TYPE -- NAME +[2;35m0 18426/1 8 func_abc.php:22 func -> func_a[0m +[2;35m0 18426/1 41 func_abc.php:18 func -> sleep[0m +[2;32m0 18426/1 15 ":- syscall -> nanosleep[0m +[2;32m0 18426/1 1008700 ":- syscall <- nanosleep[0m +[2;35m0 18426/1 30 func_abc.php:18 func <- sleep[0m +[2;35m0 18426/1 42 func_abc.php:19 func -> func_b[0m +[2;35m0 18426/1 28 func_abc.php:11 func -> sleep[0m +[2;32m0 18426/1 14 ":- syscall -> nanosleep[0m +[2;32m0 18426/1 1010083 ":- syscall <- nanosleep[0m +[2;35m0 18426/1 29 func_abc.php:11 func <- sleep[0m +[2;35m0 18426/1 43 func_abc.php:12 func -> func_c[0m +[2;35m0 18426/1 28 func_abc.php:5 func -> sleep[0m +[2;32m0 18426/1 14 ":- syscall -> nanosleep[0m +[2;32m0 18426/1 1009794 ":- syscall <- nanosleep[0m +[2;35m0 18426/1 28 func_abc.php:5 func <- sleep[0m +[2;35m0 18426/1 34 func_abc.php:6 func <- func_c[0m +[2;35m0 18426/1 18 func_abc.php:13 func <- func_b[0m +[2;35m0 18426/1 17 func_abc.php:20 func <- func_a[0m +[2;32m0 18426/1 21 ":- syscall -> fchdir[0m +[2;32m0 18426/1 19 ":- syscall <- fchdir[0m +[2;32m0 18426/1 9 ":- syscall -> close[0m +[2;32m0 18426/1 13 ":- syscall <- close[0m +[2;32m0 18426/1 35 ":- syscall -> semsys[0m +[2;32m0 18426/1 12 ":- syscall <- semsys[0m +[2;32m0 18426/1 7 ":- syscall -> semsys[0m +[2;32m0 18426/1 7 ":- syscall <- semsys[0m +[2;32m0 18426/1 66 ":- syscall -> setitimer[0m +[2;32m0 18426/1 8 ":- syscall <- setitimer[0m +[2;32m0 18426/1 39 ":- syscall -> read[0m +[2;32m0 18426/1 14 ":- syscall <- read[0m +[2;32m0 18426/1 11 ":- syscall -> writev[0m +[2;32m0 18426/1 22 ":- syscall <- writev[0m +[2;32m0 18426/1 23 ":- syscall -> write[0m +[2;32m0 18426/1 110 ":- syscall <- write[0m +[2;32m0 18426/1 61 ":- syscall -> pollsys[0m + +In this excerpt: +[2;35m0 18426/1 43 func_abc.php:12 func -> func_c[0m +[2;35m0 18426/1 28 func_abc.php:5 func -> sleep[0m +[2;32m0 18426/1 14 ":- syscall -> nanosleep[0m +[2;32m0 18426/1 1009794 ":- syscall <- nanosleep[0m +[2;35m0 18426/1 28 func_abc.php:5 func <- sleep[0m +[2;35m0 18426/1 34 func_abc.php:6 func <- func_c[0m + +we can see that we are at Line 12 of the program which invokes func_c. func_c +then invokes sleep, which uses the syscall nanosleep. Approximately one +second later nanosleep returns, then sleep finishes, then func_c finishes. + diff --git a/cddl/contrib/dtracetoolkit/Examples/php_who_example.txt b/cddl/contrib/dtracetoolkit/Examples/php_who_example.txt new file mode 100644 index 000000000000..cee32b2f8494 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/php_who_example.txt @@ -0,0 +1,10 @@ +The following are examples of the results of running php_who.d. + +# php_who.d +Tracing... Hit Ctrl-C to end. +^C + PID UID FUNCS FILE + 158525 80 7 /opt/coolstack/apache2/htdocs/php/func_abc.php + +Running the php_who.d while the func_abc.php program runs, we can see that +while func_abc.php was running, it called seven functions. diff --git a/cddl/contrib/dtracetoolkit/Examples/pidpersec_example.txt b/cddl/contrib/dtracetoolkit/Examples/pidpersec_example.txt new file mode 100644 index 000000000000..11f6bd7c1fc9 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pidpersec_example.txt @@ -0,0 +1,33 @@ +The following is a demonstration of the pidpersec.d script. + + +Here the program is run on an idle system, + + # ./pidpersec.d + TIME LASTPID PID/s + 2005 Jun 9 22:15:09 3010 0 + 2005 Jun 9 22:15:10 3010 0 + 2005 Jun 9 22:15:11 3010 0 + 2005 Jun 9 22:15:12 3010 0 + 2005 Jun 9 22:15:13 3010 0 + ^C + +This shows that there are now new processes being created. + + + +Now the script is run on a busy system, that is creating many processes +(which happen to be short-lived), + + # ./pidpersec.d + TIME LASTPID PID/s + 2005 Jun 9 22:16:30 3051 13 + 2005 Jun 9 22:16:31 3063 12 + 2005 Jun 9 22:16:32 3073 10 + 2005 Jun 9 22:16:33 3084 11 + 2005 Jun 9 22:16:34 3096 12 + ^C + +Now we can see that there are over 10 new processes created each second. +The value for lastpid confirms the rates printed. + diff --git a/cddl/contrib/dtracetoolkit/Examples/pl_calldist_example.txt b/cddl/contrib/dtracetoolkit/Examples/pl_calldist_example.txt new file mode 100644 index 000000000000..f53b7f54777d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pl_calldist_example.txt @@ -0,0 +1,456 @@ +The following are examples of pl_calldist.d. + +This script traces the elapsed time of Perl subroutines (functions) and +prints a report containing distribution plots per subroutine. Here it +traces the example program, Code/Perl/func_abc.pl. + + # pl_calldist.d + Tracing... Hit Ctrl-C to end. + ^C + + Exclusive subroutine elapsed times (us), + func_abc.pl, sub, func_a + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + func_abc.pl, sub, func_b + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + func_abc.pl, sub, func_c + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + + Inclusive subroutine elapsed times (us), + func_abc.pl, sub, func_c + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + func_abc.pl, sub, func_b + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + func_abc.pl, sub, func_a + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + +In total, 3 subroutines were called - func_a(), func_b(), and func_c(). + +The exclusive subroutine elapsed times show that each subroutine spent +between 524 and 1048 ms. This exclusive time excludes the time spent in +other subroutines. + +The inclusive subroutine elapsed times show that func_c() took between 0.5 and +1.0 seconds, func_b() took between 1.0 and 2.1 seconds, and func_a() took +between 2.1 and 4.2 seconds to execute. This inclusive time includes the +time spent in other subroutines called, and since func_a() called func_b() +which called func_c(), these times make sense. + +These elapsed times are the absolute time from when the subroutine began to +when it completed - which includes off-CPU time due to other system events +such as I/O, scheduling, interrupts, etc. + +Elapsed times are useful for identifying where latencies are. +See Notes/ALLelapsed_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive subroutine time. + + + +The following traces a Perl network interface statistics tool, "nicstat" +version 0.99, + +# pl_calldist.d +Tracing... Hit Ctrl-C to end. +^C + +Exclusive subroutine elapsed times (us), + DynaLoader.pm, sub, dl_load_flags + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + Config.pm, sub, TIEHASH + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + Config.pm, sub, DESTROY + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + Config.pm, sub, import + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + register.pm, sub, mkMask + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 8 | 0 + + Config.pm, sub, FETCH + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 2 + 4 |@@@@@@@@@@@@@@@@@@@@ 2 + 8 | 0 + + Config.pm, sub, BEGIN + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@ 1 + 16 |@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + strict.pm, sub, import + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@ 1 + 4 |@@@@@@@@@@@@@@@@ 2 + 8 |@@@@@@@@ 1 + 16 |@@@@@@@@ 1 + 32 | 0 + + strict.pm, sub, bits + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 8 |@@@@@@@ 1 + 16 |@@@@@@@ 1 + 32 | 0 + + strict.pm, sub, unimport + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 16 |@@@@@@@@@@ 1 + 32 | 0 + + AutoLoader.pm, sub, BEGIN + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@ 1 + 4 |@@@@@@@ 1 + 8 |@@@@@@@@@@@@@@@@@@@@ 3 + 16 |@@@@@@@ 1 + 32 | 0 + + Std.pm, sub, getopts + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + register.pm, sub, import + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + vars.pm, sub, import + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + Exporter.pm, sub, import + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@ 1 + 64 |@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + DynaLoader.pm, sub, bootstrap + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + warnings.pm, sub, BEGIN + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + DynaLoader.pm, sub, BEGIN + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + nicstat, sub, print_neat + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@ 10 + 128 |@@@@@@@@@@@@@@@@@@ 8 + 256 | 0 + + vars.pm, sub, BEGIN + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@ 1 + 4 | 0 + 8 |@@@@@@@@@@@@@ 1 + 16 | 0 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 |@@@@@@@@@@@@@ 1 + 4096 | 0 + + Kstat.pm, sub, BEGIN + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 16 | 0 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 |@@@@@@@@@@@@@ 1 + 4096 | 0 + + nicstat, sub, BEGIN + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@ 1 + 512 |@@@@@@@@@@@@@ 1 + 1024 | 0 + 2048 |@@@@@@@@@@@@@ 1 + 4096 | 0 + + nicstat, sub, fetch_net_data + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 65536 | 0 + + nicstat, sub, find_nets + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 65536 | 0 + + +Inclusive subroutine elapsed times (us), + DynaLoader.pm, sub, dl_load_flags + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + Config.pm, sub, TIEHASH + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + Config.pm, sub, DESTROY + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + Config.pm, sub, import + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + register.pm, sub, mkMask + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 8 | 0 + + Config.pm, sub, FETCH + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 2 + 4 |@@@@@@@@@@@@@@@@@@@@ 2 + 8 | 0 + + strict.pm, sub, bits + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 8 |@@@@@@@ 1 + 16 |@@@@@@@ 1 + 32 | 0 + + strict.pm, sub, import + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@ 1 + 4 |@@@@@@@@@@@@@@@@ 2 + 8 | 0 + 16 |@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + Config.pm, sub, BEGIN + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@ 1 + 32 |@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + Std.pm, sub, getopts + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + register.pm, sub, import + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + strict.pm, sub, unimport + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 32 | 0 + + vars.pm, sub, import + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + AutoLoader.pm, sub, BEGIN + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@ 1 + 4 |@@@@@@@ 1 + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@ 3 + 32 |@@@@@@@ 1 + 64 | 0 + + Exporter.pm, sub, import + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@ 1 + 64 |@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + DynaLoader.pm, sub, bootstrap + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + warnings.pm, sub, BEGIN + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + nicstat, sub, print_neat + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@ 10 + 128 |@@@@@@@@@@@@@@@@@@ 8 + 256 | 0 + + vars.pm, sub, BEGIN + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@ 1 + 4 | 0 + 8 | 0 + 16 | 0 + 32 |@@@@@@@@@@@@@ 1 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 |@@@@@@@@@@@@@ 1 + 4096 | 0 + + DynaLoader.pm, sub, BEGIN + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@ 1 + 2048 |@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + Kstat.pm, sub, BEGIN + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@ 1 + 32 |@@@@@@@@@@@@@ 1 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 |@@@@@@@@@@@@@ 1 + 16384 | 0 + + nicstat, sub, BEGIN + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@ 1 + 1024 | 0 + 2048 |@@@@@@@@@@@@@ 1 + 4096 | 0 + 8192 |@@@@@@@@@@@@@ 1 + 16384 | 0 + + nicstat, sub, fetch_net_data + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 65536 | 0 + + nicstat, sub, find_nets + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 65536 | 0 + +As an example of interpreting the output: the inclusive elapsed time for +the "print_neat" subroutine in "nicstat", + + nicstat, sub, print_neat + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@ 10 + 128 |@@@@@@@@@@@@@@@@@@ 8 + 256 | 0 + +shows that "print_neat" was called 18 times, 10 of which took between 64 +and 127 microseconds, and 8 of which took between 128 and 255 microseconds. + diff --git a/cddl/contrib/dtracetoolkit/Examples/pl_calltime_example.txt b/cddl/contrib/dtracetoolkit/Examples/pl_calltime_example.txt new file mode 100644 index 000000000000..3cc5480fdc2d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pl_calltime_example.txt @@ -0,0 +1,150 @@ +The following are examples of pl_calltime.d. + +This script traces the elapsed time of Perl subroutines (functions) and +prints a report. Here it traces the example program, Code/Perl/func_abc.pl. + + # pl_calltime.d + Tracing... Hit Ctrl-C to end. + ^C + + Count, + FILE TYPE NAME COUNT + func_abc.pl sub func_a 1 + func_abc.pl sub func_b 1 + func_abc.pl sub func_c 1 + - total - 3 + + Exclusive subroutine elapsed times (us), + FILE TYPE NAME TOTAL + func_abc.pl sub func_a 1006119 + func_abc.pl sub func_c 1009978 + func_abc.pl sub func_b 1010273 + - total - 3026371 + + Inclusive subroutine elapsed times (us), + FILE TYPE NAME TOTAL + func_abc.pl sub func_c 1009978 + func_abc.pl sub func_b 2020252 + func_abc.pl sub func_a 3026371 + +In total, 3 subroutines were called, one of each. + +The exclusive subroutine elapsed times show that each subroutine spent around +1.0 seconds of time (~1000000 us) processing code - while not in other +subroutines. + +The inclusive subroutine elapsed times show that func_a() took around 3.0 +seconds to execute, followed by func_b() at 2.0 seconds, and func_c() at 1.0. +The inclusive time includes the time spent in other subroutines called, and +since func_a() called func_b() which called func_c(), these times make +perfect sense. + +These elapsed times are the absolute time from when the subroutine began to +when it completed - which includes off-CPU time due to other system events +such as I/O, scheduling, interrupts, etc. + +Elapsed times are useful for identifying where latencies are. +See Notes/ALLelapsed_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive subroutine time. + +If you study the func_abc.pl program alongside the above output, the numbers +should make sense. + + + +The following traces a Perl network interface statistics tool, "nicstat" +version 0.99, + +# pl_calltime.d +Tracing... Hit Ctrl-C to end. +^C + +Count, + FILE TYPE NAME COUNT + Config.pm sub DESTROY 1 + Config.pm sub TIEHASH 1 + Config.pm sub import 1 + DynaLoader.pm sub bootstrap 1 + DynaLoader.pm sub dl_load_flags 1 + Std.pm sub getopts 1 + nicstat sub fetch_net_data 1 + nicstat sub find_nets 1 + register.pm sub import 1 + warnings.pm sub BEGIN 1 + Config.pm sub BEGIN 2 + DynaLoader.pm sub BEGIN 2 + Exporter.pm sub import 2 + register.pm sub mkMask 2 + vars.pm sub import 2 + Kstat.pm sub BEGIN 3 + nicstat sub BEGIN 3 + vars.pm sub BEGIN 3 + Config.pm sub FETCH 4 + strict.pm sub unimport 4 + strict.pm sub import 5 + AutoLoader.pm sub BEGIN 6 + strict.pm sub bits 6 + nicstat sub print_neat 18 + - total - 72 + +Exclusive subroutine elapsed times (us), + FILE TYPE NAME TOTAL + DynaLoader.pm sub dl_load_flags 2 + Config.pm sub TIEHASH 3 + Config.pm sub DESTROY 9 + register.pm sub mkMask 11 + Config.pm sub import 12 + Config.pm sub FETCH 17 + strict.pm sub import 38 + Config.pm sub BEGIN 38 + strict.pm sub bits 49 + vars.pm sub import 59 + strict.pm sub unimport 65 + AutoLoader.pm sub BEGIN 70 + Std.pm sub getopts 78 + register.pm sub import 86 + Exporter.pm sub import 112 + warnings.pm sub BEGIN 680 + DynaLoader.pm sub BEGIN 1131 + DynaLoader.pm sub bootstrap 1221 + nicstat sub print_neat 2450 + vars.pm sub BEGIN 2608 + Kstat.pm sub BEGIN 3171 + nicstat sub BEGIN 3963 + nicstat sub fetch_net_data 45424 + nicstat sub find_nets 55737 + - total - 117047 + +Inclusive subroutine elapsed times (us), + FILE TYPE NAME TOTAL + DynaLoader.pm sub dl_load_flags 2 + Config.pm sub TIEHASH 3 + Config.pm sub DESTROY 9 + register.pm sub mkMask 11 + Config.pm sub import 12 + Config.pm sub FETCH 17 + strict.pm sub import 46 + strict.pm sub bits 49 + vars.pm sub import 59 + Config.pm sub BEGIN 64 + strict.pm sub unimport 87 + register.pm sub import 97 + Std.pm sub getopts 112 + Exporter.pm sub import 112 + AutoLoader.pm sub BEGIN 140 + warnings.pm sub BEGIN 680 + DynaLoader.pm sub bootstrap 1224 + nicstat sub print_neat 2450 + vars.pm sub BEGIN 3412 + DynaLoader.pm sub BEGIN 4656 + Kstat.pm sub BEGIN 8020 + nicstat sub BEGIN 13313 + nicstat sub fetch_net_data 45424 + nicstat sub find_nets 55737 + +The output showed that the most time was spent in the subroutine find_nets(), +with a total exclusive elapsed time of 55.7 ms. This also matches the +total inclusive time, suggesting that find_nets() didn't call other +subroutines. + diff --git a/cddl/contrib/dtracetoolkit/Examples/pl_cpudist_example.txt b/cddl/contrib/dtracetoolkit/Examples/pl_cpudist_example.txt new file mode 100644 index 000000000000..a2ccff83f4ed --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pl_cpudist_example.txt @@ -0,0 +1,470 @@ +The following are examples of pl_cpudist.d. + +This script traces the on-CPU time of Perl subroutines (functions) and +prints a report containing distribution plots per subroutine. Here it +traces the example program, Code/Perl/func_slow.pl. + + # pl_cpudist.d + Tracing... Hit Ctrl-C to end. + ^C + + Exclusive subroutine on-CPU times (us), + func_slow.pl, sub, func_a + value ------------- Distribution ------------- count + 131072 | 0 + 262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 524288 | 0 + + func_slow.pl, sub, func_b + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + func_slow.pl, sub, func_c + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + + Inclusive subroutine on-CPU times (us), + func_slow.pl, sub, func_c + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + func_slow.pl, sub, func_a + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + func_slow.pl, sub, func_b + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + +The exclusive subroutine on-CPU times show that func_a() spent between +262 ms and 524 ms on-CPU, while func_b() and func_c() both spent between +524 ms and 1048 ms on-CPU. + +The inclusive subroutine on-CPU times show that func_c() spent between 0.5 and +1.0 seconds, and both func_b() and func_a() spent between 1.0 and 2.1 seconds +of CPU time. This inclusive time includes the time spent in other subroutines +called, and since func_a() called func_b() which called func_c(), these times +make sense. + +These on-CPU times are the time the thread spent running on a CPU, from when +the subroutine began to when it completed. This does not include time +spent off-CPU time such as sleeping for I/O or waiting for scheduling. + +On-CPU times are useful for showing who is causing the CPUs to be busy. +See Notes/ALLoncpu_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive subroutine time. + + +The following traces a Perl network interface statistics tool, "nicstat" +version 0.99, + +# pl_cpudist.pl +Tracing... Hit Ctrl-C to end. +^C + +Exclusive subroutine on-CPU times (us), + Config.pm, sub, TIEHASH + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + DynaLoader.pm, sub, dl_load_flags + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + Config.pm, sub, BEGIN + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 4 | 0 + + Config.pm, sub, DESTROY + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + register.pm, sub, mkMask + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 1 + 4 |@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + Config.pm, sub, import + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + Config.pm, sub, FETCH + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 4 |@@@@@@@@@@ 1 + 8 | 0 + + strict.pm, sub, unimport + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 8 |@@@@@@@@@@ 1 + 16 | 0 + + Std.pm, sub, getopts + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + register.pm, sub, import + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + strict.pm, sub, import + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@ 2 + 4 |@@@@@@@@ 1 + 8 |@@@@@@@@ 1 + 16 |@@@@@@@@ 1 + 32 | 0 + + strict.pm, sub, bits + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 8 |@@@@@@@ 1 + 16 |@@@@@@@ 1 + 32 | 0 + + AutoLoader.pm, sub, BEGIN + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@ 1 + 2 |@@@@@@@@@@@@@ 2 + 4 |@@@@@@@@@@@@@ 2 + 8 | 0 + 16 | 0 + 32 |@@@@@@@ 1 + 64 | 0 + + vars.pm, sub, import + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + Exporter.pm, sub, import + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + nicstat, sub, print_neat + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 16 + 32 |@@ 1 + 64 |@@ 1 + 128 | 0 + + DynaLoader.pm, sub, bootstrap + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + warnings.pm, sub, BEGIN + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + DynaLoader.pm, sub, BEGIN + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@ 1 + 512 |@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + vars.pm, sub, BEGIN + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@ 1 + 2 |@@@@@@@@@@@@@ 1 + 4 | 0 + 8 | 0 + 16 | 0 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 |@@@@@@@@@@@@@ 1 + 4096 | 0 + + Kstat.pm, sub, BEGIN + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 4 | 0 + 8 | 0 + 16 | 0 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 |@@@@@@@@@@@@@ 1 + 4096 | 0 + + nicstat, sub, BEGIN + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 512 | 0 + 1024 | 0 + 2048 |@@@@@@@@@@@@@ 1 + 4096 | 0 + + nicstat, sub, fetch_net_data + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 65536 | 0 + + nicstat, sub, find_nets + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 65536 | 0 + + +Inclusive subroutine on-CPU times (us), + Config.pm, sub, TIEHASH + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + DynaLoader.pm, sub, dl_load_flags + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + Config.pm, sub, DESTROY + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + register.pm, sub, mkMask + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 1 + 4 |@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + Config.pm, sub, import + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + Config.pm, sub, FETCH + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 4 |@@@@@@@@@@ 1 + 8 | 0 + + Config.pm, sub, BEGIN + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + strict.pm, sub, unimport + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 16 | 0 + + strict.pm, sub, import + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@ 2 + 4 | 0 + 8 |@@@@@@@@@@@@@@@@ 2 + 16 |@@@@@@@@ 1 + 32 | 0 + + strict.pm, sub, bits + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 8 |@@@@@@@ 1 + 16 |@@@@@@@ 1 + 32 | 0 + + Std.pm, sub, getopts + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + register.pm, sub, import + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + vars.pm, sub, import + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + AutoLoader.pm, sub, BEGIN + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@ 1 + 2 | 0 + 4 |@@@@@@@ 1 + 8 |@@@@@@@@@@@@@ 2 + 16 |@@@@@@@ 1 + 32 |@@@@@@@ 1 + 64 | 0 + + Exporter.pm, sub, import + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + nicstat, sub, print_neat + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 16 + 32 |@@ 1 + 64 |@@ 1 + 128 | 0 + + DynaLoader.pm, sub, bootstrap + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + warnings.pm, sub, BEGIN + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + vars.pm, sub, BEGIN + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@ 1 + 2 | 0 + 4 | 0 + 8 | 0 + 16 |@@@@@@@@@@@@@ 1 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 |@@@@@@@@@@@@@ 1 + 4096 | 0 + + DynaLoader.pm, sub, BEGIN + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + Kstat.pm, sub, BEGIN + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@ 1 + 8 | 0 + 16 | 0 + 32 |@@@@@@@@@@@@@ 1 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 |@@@@@@@@@@@@@ 1 + 8192 | 0 + + nicstat, sub, BEGIN + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@ 1 + 512 | 0 + 1024 | 0 + 2048 |@@@@@@@@@@@@@ 1 + 4096 | 0 + 8192 |@@@@@@@@@@@@@ 1 + 16384 | 0 + + nicstat, sub, fetch_net_data + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 65536 | 0 + + nicstat, sub, find_nets + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 65536 | 0 + +As an example of interpreting the output: the inclusive on-CPU time for +the "print_neat" subroutine in "nicstat", + + nicstat, sub, print_neat + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 16 + 32 |@@ 1 + 64 |@@ 1 + 128 | 0 + +shows that "print_neat" was called 18 times, 16 of which spent between 16 +and 31 microseconds on-CPU, once between 32 and 63 microseconds, and once +between 64 and 127 microseconds. + diff --git a/cddl/contrib/dtracetoolkit/Examples/pl_cputime_example.txt b/cddl/contrib/dtracetoolkit/Examples/pl_cputime_example.txt new file mode 100644 index 000000000000..5dc56eead288 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pl_cputime_example.txt @@ -0,0 +1,151 @@ +The following are examples of pl_cputime.d. + +This script traces the on-CPU time of Perl subroutines (functions) and +prints a report. Here it traces the example program, Code/Perl/func_slow.pl. + + # pl_cputime.d + Tracing... Hit Ctrl-C to end. + ^C + + Count, + FILE TYPE NAME COUNT + func_slow.pl sub func_a 1 + func_slow.pl sub func_b 1 + func_slow.pl sub func_c 1 + - total - 3 + + Exclusive subroutine on-CPU times (us), + FILE TYPE NAME TOTAL + func_slow.pl sub func_a 264193 + func_slow.pl sub func_b 538498 + func_slow.pl sub func_c 798961 + - total - 1601653 + + Inclusive subroutine on-CPU times (us), + FILE TYPE NAME TOTAL + func_slow.pl sub func_c 798961 + func_slow.pl sub func_b 1337459 + func_slow.pl sub func_a 1601653 + +In total, 3 subroutines were called, one each of func_a(), func_b() and +func_c(). + +The exclusive subroutine on-CPU times show that func_a() spent around 264.2 ms +on-CPU, func_b() spent 538.5 ms, and func_c() spent 799.0 ms. This exclusive +times excludes time spent in other subroutines. + +The inclusive subroutine on-CPU times show that func_c() spent around 799.0 ms +on-CPU, func_b() spent around 1.3 seconds, and func_a() spent around 1.6 +seconds. This inclusive time includes the time spent in other subroutines +called, and since func_a() called func_b() which called func_c(), these +times make perfect sense. + +These on-CPU times are the time the thread spent running on a CPU, from when +the subroutine began to when it completed. This does not include time +spent off-CPU time such as sleeping for I/O or waiting for scheduling. + +On-CPU times are useful for showing who is causing the CPUs to be busy. +See Notes/ALLoncpu_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive subroutine time. + +If you study the func_slow.pl program alongside the above output, the numbers +should make sense. + + + +The following traces a Perl network interface statistics tool, "nicstat" +version 0.99, + +# pl_cputime.pl +Tracing... Hit Ctrl-C to end. +^C + +Count, + FILE TYPE NAME COUNT + Config.pm sub DESTROY 1 + Config.pm sub TIEHASH 1 + Config.pm sub import 1 + DynaLoader.pm sub bootstrap 1 + DynaLoader.pm sub dl_load_flags 1 + Std.pm sub getopts 1 + nicstat sub fetch_net_data 1 + nicstat sub find_nets 1 + register.pm sub import 1 + warnings.pm sub BEGIN 1 + Config.pm sub BEGIN 2 + DynaLoader.pm sub BEGIN 2 + Exporter.pm sub import 2 + register.pm sub mkMask 2 + vars.pm sub import 2 + Kstat.pm sub BEGIN 3 + nicstat sub BEGIN 3 + vars.pm sub BEGIN 3 + Config.pm sub FETCH 4 + strict.pm sub unimport 4 + strict.pm sub import 5 + AutoLoader.pm sub BEGIN 6 + strict.pm sub bits 6 + nicstat sub print_neat 18 + - total - 72 + +Exclusive subroutine on-CPU times (us), + FILE TYPE NAME TOTAL + DynaLoader.pm sub dl_load_flags 2 + Config.pm sub TIEHASH 2 + Config.pm sub DESTROY 6 + Config.pm sub BEGIN 7 + register.pm sub mkMask 8 + Config.pm sub import 11 + Config.pm sub FETCH 12 + strict.pm sub unimport 17 + strict.pm sub import 21 + AutoLoader.pm sub BEGIN 22 + Std.pm sub getopts 33 + strict.pm sub bits 40 + register.pm sub import 51 + vars.pm sub import 65 + Exporter.pm sub import 88 + nicstat sub print_neat 426 + warnings.pm sub BEGIN 598 + DynaLoader.pm sub bootstrap 677 + DynaLoader.pm sub BEGIN 1015 + Kstat.pm sub BEGIN 2627 + vars.pm sub BEGIN 2642 + nicstat sub BEGIN 3033 + nicstat sub fetch_net_data 42018 + nicstat sub find_nets 52094 + - total - 105526 + +Inclusive subroutine on-CPU times (us), + FILE TYPE NAME TOTAL + DynaLoader.pm sub dl_load_flags 2 + Config.pm sub TIEHASH 2 + Config.pm sub DESTROY 6 + register.pm sub mkMask 8 + Config.pm sub import 11 + Config.pm sub FETCH 12 + Config.pm sub BEGIN 19 + strict.pm sub import 28 + strict.pm sub unimport 35 + strict.pm sub bits 40 + AutoLoader.pm sub BEGIN 51 + register.pm sub import 59 + Std.pm sub getopts 63 + vars.pm sub import 65 + Exporter.pm sub import 88 + nicstat sub print_neat 426 + warnings.pm sub BEGIN 598 + DynaLoader.pm sub bootstrap 680 + vars.pm sub BEGIN 3313 + DynaLoader.pm sub BEGIN 4401 + Kstat.pm sub BEGIN 7124 + nicstat sub BEGIN 10916 + nicstat sub fetch_net_data 42018 + nicstat sub find_nets 52094 + +The output showed that the most CPU time was spent in the subroutine +find_nets(), with a total exclusive on-CPU time of 52.1 ms. This also matches +the total inclusive time, suggesting that find_nets() didn't call other +subroutines. + diff --git a/cddl/contrib/dtracetoolkit/Examples/pl_flow_example.txt b/cddl/contrib/dtracetoolkit/Examples/pl_flow_example.txt new file mode 100644 index 000000000000..dcce6e04de03 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pl_flow_example.txt @@ -0,0 +1,179 @@ +The following are examples of pl_flow.d. + +This is a simple script to trace the flow of Perl subroutines (functions). +Here it traces the example program, Code/Perl/func_abc.pl. + + # pl_flow.d + C TIME(us) FILE -- SUB + 0 2979519183757 func_abc.pl -> func_a + 0 2979520190159 func_abc.pl -> func_b + 0 2979521200166 func_abc.pl -> func_c + 0 2979522210184 func_abc.pl <- func_c + 0 2979522210199 func_abc.pl <- func_b + 0 2979522210207 func_abc.pl <- func_a + ^C + +As each subroutine is entered, the third column is indented by 2 spaces. This +shows which subroutine is calling who - the output abovebegins by showing that +func_a() began, and then called func_b(). + +If the output looks shuffled, check the CPU "C" and "TIME" columns, and +post sort based on TIME if necessary. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + + + +The following traces a Perl network interface statistics tool, "nicstat" +version 0.99, + +# pl_flow.d + C TIME(us) FILE -- SUB + 0 4181899422549 nicstat -> BEGIN + 0 4181899423048 strict.pm -> bits + 0 4181899423081 strict.pm <- bits + 0 4181899423105 strict.pm -> import + 0 4181899423126 strict.pm <- import + 0 4181899423133 nicstat <- BEGIN + 0 4181899423157 nicstat -> BEGIN + 0 4181899445634 Exporter.pm -> import + 0 4181899445730 Exporter.pm <- import + 0 4181899445743 nicstat <- BEGIN + 0 4181899445770 nicstat -> BEGIN + 0 4181899446066 Kstat.pm -> BEGIN + 0 4181899446076 strict.pm -> import + 0 4181899446087 strict.pm <- import + 0 4181899446094 Kstat.pm <- BEGIN + 0 4181899446116 Kstat.pm -> BEGIN + 0 4181899453669 DynaLoader.pm -> BEGIN + 0 4181899453810 vars.pm -> BEGIN + 0 4181899453821 vars.pm <- BEGIN + 0 4181899453921 vars.pm -> BEGIN + 0 4181899454494 warnings.pm -> BEGIN + 0 4181899455149 warnings.pm <- BEGIN + 0 4181899457183 register.pm -> import + 0 4181899457202 register.pm -> mkMask + 0 4181899457214 register.pm <- mkMask + 0 4181899457264 register.pm -> mkMask + 0 4181899457274 register.pm <- mkMask + 0 4181899457283 register.pm <- import + 0 4181899457290 vars.pm <- BEGIN + 0 4181899457316 vars.pm -> BEGIN + 0 4181899457324 strict.pm -> import + 0 4181899457332 strict.pm -> bits + 0 4181899457345 strict.pm <- bits + 0 4181899457353 strict.pm <- import + 0 4181899457359 vars.pm <- BEGIN + 0 4181899457652 vars.pm -> import + 0 4181899457703 vars.pm <- import + 0 4181899457710 DynaLoader.pm <- BEGIN + 0 4181899457758 DynaLoader.pm -> BEGIN + 0 4181899457883 Config.pm -> BEGIN + 0 4181899457890 strict.pm -> import + 0 4181899457899 strict.pm <- import + 0 4181899457906 Config.pm <- BEGIN + 0 4181899458038 Config.pm -> BEGIN + 0 4181899458045 strict.pm -> unimport + 0 4181899458053 strict.pm -> bits + 0 4181899458063 strict.pm <- bits + 0 4181899458077 strict.pm <- unimport + 0 4181899458084 Config.pm <- BEGIN + 0 4181899458426 Config.pm -> TIEHASH + 0 4181899458435 Config.pm <- TIEHASH + 0 4181899458476 Config.pm -> import + 0 4181899458493 Config.pm <- import + 0 4181899458500 DynaLoader.pm <- BEGIN + 0 4181899459978 AutoLoader.pm -> BEGIN + 0 4181899459990 strict.pm -> import + 0 4181899460033 strict.pm <- import + 0 4181899460064 AutoLoader.pm <- BEGIN + 0 4181899460088 AutoLoader.pm -> BEGIN + 0 4181899460096 AutoLoader.pm <- BEGIN + 0 4181899460187 AutoLoader.pm -> BEGIN + 0 4181899460199 AutoLoader.pm <- BEGIN + 0 4181899460582 AutoLoader.pm -> BEGIN + 0 4181899460590 strict.pm -> unimport + 0 4181899460598 strict.pm -> bits + 0 4181899460611 strict.pm <- bits + 0 4181899460619 strict.pm <- unimport + 0 4181899460625 AutoLoader.pm <- BEGIN + 0 4181899460830 AutoLoader.pm -> BEGIN + 0 4181899460838 strict.pm -> unimport + 0 4181899460845 strict.pm -> bits + 0 4181899460855 strict.pm <- bits + 0 4181899460862 strict.pm <- unimport + 0 4181899460869 AutoLoader.pm <- BEGIN + 0 4181899461092 AutoLoader.pm -> BEGIN + 0 4181899461100 strict.pm -> unimport + 0 4181899461107 strict.pm -> bits + 0 4181899461116 strict.pm <- bits + 0 4181899461124 strict.pm <- unimport + 0 4181899461130 AutoLoader.pm <- BEGIN + 0 4181899461238 Config.pm -> FETCH + 0 4181899461250 Config.pm <- FETCH + 0 4181899461264 Config.pm -> FETCH + 0 4181899461272 Config.pm <- FETCH + 0 4181899461282 Config.pm -> FETCH + 0 4181899461290 Config.pm <- FETCH + 0 4181899461299 Config.pm -> FETCH + 0 4181899461307 Config.pm <- FETCH + 0 4181899461403 Kstat.pm <- BEGIN + 0 4181899461432 Kstat.pm -> BEGIN + 0 4181899461440 vars.pm -> import + 0 4181899461476 vars.pm <- import + 0 4181899461483 Kstat.pm <- BEGIN + 0 4181899461539 DynaLoader.pm -> bootstrap + 0 4181899461769 DynaLoader.pm -> dl_load_flags + 0 4181899461777 DynaLoader.pm <- dl_load_flags + 0 4181899462208 DynaLoader.pm <- bootstrap + 0 4181899462231 nicstat <- BEGIN + 0 4181899468306 Std.pm -> getopts + 0 4181899468351 Exporter.pm -> import + 0 4181899468390 Exporter.pm <- import + 0 4181899468405 Std.pm <- getopts + 0 4181899468426 nicstat -> find_nets + 0 4181899521011 nicstat <- find_nets + 0 4181899521415 nicstat -> fetch_net_data + 0 4181899564973 nicstat <- fetch_net_data + 0 4181899565526 nicstat -> print_neat + 0 4181899565672 nicstat <- print_neat + 0 4181899565680 nicstat -> print_neat + 0 4181899565902 nicstat <- print_neat + 0 4181899565909 nicstat -> print_neat + 0 4181899566033 nicstat <- print_neat + 0 4181899566039 nicstat -> print_neat + 0 4181899566165 nicstat <- print_neat + 0 4181899566172 nicstat -> print_neat + 0 4181899566331 nicstat <- print_neat + 0 4181899566338 nicstat -> print_neat + 0 4181899566494 nicstat <- print_neat + 0 4181899566791 nicstat -> print_neat + 0 4181899566953 nicstat <- print_neat + 0 4181899566961 nicstat -> print_neat + 0 4181899567085 nicstat <- print_neat + 0 4181899567091 nicstat -> print_neat + 0 4181899567247 nicstat <- print_neat + 0 4181899567254 nicstat -> print_neat + 0 4181899567377 nicstat <- print_neat + 0 4181899567383 nicstat -> print_neat + 0 4181899567538 nicstat <- print_neat + 0 4181899567544 nicstat -> print_neat + 0 4181899567666 nicstat <- print_neat + 0 4181899567977 nicstat -> print_neat + 0 4181899568232 nicstat <- print_neat + 0 4181899568240 nicstat -> print_neat + 0 4181899568397 nicstat <- print_neat + 0 4181899568404 nicstat -> print_neat + 0 4181899568528 nicstat <- print_neat + 0 4181899568535 nicstat -> print_neat + 0 4181899568656 nicstat <- print_neat + 0 4181899568663 nicstat -> print_neat + 0 4181899568819 nicstat <- print_neat + 0 4181899568826 nicstat -> print_neat + 0 4181899568947 nicstat <- print_neat + 0 4181899572708 Config.pm -> DESTROY + 0 4181899572735 Config.pm <- DESTROY + +After initialising Perl libraries and modules, the "nicstat" program ran, +the output matching what was expected from the source. + diff --git a/cddl/contrib/dtracetoolkit/Examples/pl_flowinfo_example.txt b/cddl/contrib/dtracetoolkit/Examples/pl_flowinfo_example.txt new file mode 100644 index 000000000000..e4b406f14c49 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pl_flowinfo_example.txt @@ -0,0 +1,188 @@ +The following are examples of pl_flowinfo.d. + +This is a simple script to trace the flow of Perl subroutines (functions). +Here it traces the example program, Code/Perl/func_abc.pl. + + # pl_flowinfo.d + C PID DELTA(us) FILE:LINE TYPE -- SUB + 0 305127 2 func_abc.pl:15 sub -> func_a + 0 305127 1008776 func_abc.pl:9 sub -> func_b + 0 305127 1010019 func_abc.pl:4 sub -> func_c + 0 305127 1009979 func_abc.pl:4 sub <- func_c + 0 305127 26 func_abc.pl:9 sub <- func_b + 0 305127 9 func_abc.pl:15 sub <- func_a + ^C + +As each subroutine is entered, the third column is indented by 2 spaces. This +shows which subroutine is calling who - the output abovebegins by showing that +func_a() began, and then called func_b(). + +The DELTA(us) column shows time from that line to the previous line, and +so can be a bit tricky to read. For example, the second line of data output +(skipping the header) reads as "the time from func_a() beginning to +func_b() beginning was 1008776 us, or 1.01 seconds". + +The LINE column shows the line in the file what was being executed. Refer +to the source program to see what this line refers to. + +If the output looks shuffled, check the CPU "C" column - if it changes, +then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for +details and suggested workarounds. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + + + +The following traces a Perl network interface statistics tool, "nicstat" +version 0.99, + +# pl_flowinfo.d +C PID DELTA(us) FILE:LINE TYPE -- SUB +0 305132 2 nicstat:83 sub -> BEGIN +0 305132 444 strict.pm:12 sub -> bits +0 305132 34 strict.pm:12 sub <- bits +0 305132 32 strict.pm:28 sub -> import +0 305132 22 strict.pm:28 sub <- import +0 305132 8 nicstat:83 sub <- BEGIN +0 305132 26 nicstat:84 sub -> BEGIN +0 305132 2339 Exporter.pm:30 sub -> import +0 305132 83 Exporter.pm:30 sub <- import +0 305132 14 nicstat:84 sub <- BEGIN +0 305132 27 nicstat:85 sub -> BEGIN +0 305132 205 Kstat.pm:34 sub -> BEGIN +0 305132 11 strict.pm:28 sub -> import +0 305132 11 strict.pm:28 sub <- import +0 305132 8 Kstat.pm:34 sub <- BEGIN +0 305132 23 Kstat.pm:35 sub -> BEGIN +0 305132 187 DynaLoader.pm:18 sub -> BEGIN +0 305132 73 vars.pm:3 sub -> BEGIN +0 305132 9 vars.pm:3 sub <- BEGIN +0 305132 34 vars.pm:7 sub -> BEGIN +0 305132 470 warnings.pm:134 sub -> BEGIN +0 305132 598 warnings.pm:134 sub <- BEGIN +0 305132 2151 register.pm:37 sub -> import +0 305132 23 register.pm:28 sub -> mkMask +0 305132 13 register.pm:28 sub <- mkMask +0 305132 53 register.pm:28 sub -> mkMask +0 305132 11 register.pm:28 sub <- mkMask +0 305132 11 register.pm:37 sub <- import +0 305132 8 vars.pm:7 sub <- BEGIN +0 305132 28 vars.pm:8 sub -> BEGIN +0 305132 9 strict.pm:28 sub -> import +0 305132 8 strict.pm:12 sub -> bits +0 305132 13 strict.pm:12 sub <- bits +0 305132 9 strict.pm:28 sub <- import +0 305132 8 vars.pm:8 sub <- BEGIN +0 305132 294 vars.pm:11 sub -> import +0 305132 52 vars.pm:11 sub <- import +0 305132 8 DynaLoader.pm:18 sub <- BEGIN +0 305132 48 DynaLoader.pm:25 sub -> BEGIN +0 305132 97 Config.pm:5 sub -> BEGIN +0 305132 9 strict.pm:28 sub -> import +0 305132 9 strict.pm:28 sub <- import +0 305132 8 Config.pm:5 sub <- BEGIN +0 305132 134 Config.pm:31 sub -> BEGIN +0 305132 9 strict.pm:33 sub -> unimport +0 305132 8 strict.pm:12 sub -> bits +0 305132 11 strict.pm:12 sub <- bits +0 305132 16 strict.pm:33 sub <- unimport +0 305132 8 Config.pm:31 sub <- BEGIN +0 305132 343 Config.pm:60 sub -> TIEHASH +0 305132 10 Config.pm:60 sub <- TIEHASH +0 305132 44 Config.pm:25 sub -> import +0 305132 18 Config.pm:25 sub <- import +0 305132 9 DynaLoader.pm:25 sub <- BEGIN +0 305132 1301 AutoLoader.pm:3 sub -> BEGIN +0 305132 11 strict.pm:28 sub -> import +0 305132 10 strict.pm:28 sub <- import +0 305132 9 AutoLoader.pm:3 sub <- BEGIN +0 305132 22 AutoLoader.pm:4 sub -> BEGIN +0 305132 9 AutoLoader.pm:4 sub <- BEGIN +0 305132 89 AutoLoader.pm:14 sub -> BEGIN +0 305132 13 AutoLoader.pm:14 sub <- BEGIN +0 305132 375 AutoLoader.pm:95 sub -> BEGIN +0 305132 9 strict.pm:33 sub -> unimport +0 305132 8 strict.pm:12 sub -> bits +0 305132 11 strict.pm:12 sub <- bits +0 305132 9 strict.pm:33 sub <- unimport +0 305132 8 AutoLoader.pm:95 sub <- BEGIN +0 305132 203 AutoLoader.pm:128 sub -> BEGIN +0 305132 9 strict.pm:33 sub -> unimport +0 305132 8 strict.pm:12 sub -> bits +0 305132 11 strict.pm:12 sub <- bits +0 305132 9 strict.pm:33 sub <- unimport +0 305132 8 AutoLoader.pm:128 sub <- BEGIN +0 305132 220 AutoLoader.pm:173 sub -> BEGIN +0 305132 9 strict.pm:33 sub -> unimport +0 305132 8 strict.pm:12 sub -> bits +0 305132 10 strict.pm:12 sub <- bits +0 305132 9 strict.pm:33 sub <- unimport +0 305132 8 AutoLoader.pm:173 sub <- BEGIN +0 305132 103 Config.pm:52 sub -> FETCH +0 305132 12 Config.pm:52 sub <- FETCH +0 305132 16 Config.pm:52 sub -> FETCH +0 305132 9 Config.pm:52 sub <- FETCH +0 305132 11 Config.pm:52 sub -> FETCH +0 305132 9 Config.pm:52 sub <- FETCH +0 305132 11 Config.pm:52 sub -> FETCH +0 305132 9 Config.pm:52 sub <- FETCH +0 305132 95 Kstat.pm:35 sub <- BEGIN +0 305132 29 Kstat.pm:36 sub -> BEGIN +0 305132 10 vars.pm:11 sub -> import +0 305132 33 vars.pm:11 sub <- import +0 305132 8 Kstat.pm:36 sub <- BEGIN +0 305132 56 DynaLoader.pm:133 sub -> bootstrap +0 305132 314 DynaLoader.pm:48 sub -> dl_load_flags +0 305132 11 DynaLoader.pm:48 sub <- dl_load_flags +0 305132 1113 DynaLoader.pm:133 sub <- bootstrap +0 305132 41 nicstat:85 sub <- BEGIN +0 305132 6102 Std.pm:219 sub -> getopts +0 305132 52 Exporter.pm:30 sub -> import +0 305132 40 Exporter.pm:30 sub <- import +0 305132 22 Std.pm:219 sub <- getopts +0 305132 24 nicstat:264 sub -> find_nets +0 305132 79662 nicstat:264 sub <- find_nets +0 305132 420 nicstat:304 sub -> fetch_net_data +0 305132 43871 nicstat:304 sub <- fetch_net_data +0 305132 479 nicstat:372 sub -> print_neat +0 305132 150 nicstat:372 sub <- print_neat +0 305132 10 nicstat:372 sub -> print_neat +0 305132 220 nicstat:372 sub <- print_neat +0 305132 10 nicstat:372 sub -> print_neat +0 305132 126 nicstat:372 sub <- print_neat +0 305132 10 nicstat:372 sub -> print_neat +0 305132 125 nicstat:372 sub <- print_neat +0 305132 10 nicstat:372 sub -> print_neat +0 305132 157 nicstat:372 sub <- print_neat +0 305132 10 nicstat:372 sub -> print_neat +0 305132 171 nicstat:372 sub <- print_neat +0 305132 343 nicstat:372 sub -> print_neat +0 305132 128 nicstat:372 sub <- print_neat +0 305132 10 nicstat:372 sub -> print_neat +0 305132 157 nicstat:372 sub <- print_neat +0 305132 9 nicstat:372 sub -> print_neat +0 305132 125 nicstat:372 sub <- print_neat +0 305132 9 nicstat:372 sub -> print_neat +0 305132 123 nicstat:372 sub <- print_neat +0 305132 9 nicstat:372 sub -> print_neat +0 305132 160 nicstat:372 sub <- print_neat +0 305132 10 nicstat:372 sub -> print_neat +0 305132 124 nicstat:372 sub <- print_neat +0 305132 342 nicstat:372 sub -> print_neat +0 305132 126 nicstat:372 sub <- print_neat +0 305132 10 nicstat:372 sub -> print_neat +0 305132 123 nicstat:372 sub <- print_neat +0 305132 10 nicstat:372 sub -> print_neat +0 305132 156 nicstat:372 sub <- print_neat +0 305132 10 nicstat:372 sub -> print_neat +0 305132 153 nicstat:372 sub <- print_neat +0 305132 10 nicstat:372 sub -> print_neat +0 305132 123 nicstat:372 sub <- print_neat +0 305132 9 nicstat:372 sub -> print_neat +0 305132 123 nicstat:372 sub <- print_neat +0 305132 3736 Config.pm:63 sub -> DESTROY +0 305132 32 Config.pm:63 sub <- DESTROY + +After initialising Perl libraries and modules, the "nicstat" program ran, +the output matching what was expected from the source. + diff --git a/cddl/contrib/dtracetoolkit/Examples/pl_flowtime_example.txt b/cddl/contrib/dtracetoolkit/Examples/pl_flowtime_example.txt new file mode 100644 index 000000000000..24c53838a9e6 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pl_flowtime_example.txt @@ -0,0 +1,199 @@ +The following are examples of pl_flowtime.d. + +This is a simple script to trace the flow of Perl subroutines (functions). +Here it traces the example program, Code/Perl/func_abc.pl. + + # pl_flowtime.d + C TIME(us) FILE DELTA(us) -- SUB + 0 4201460363351 func_abc.pl 2 -> func_a + 0 4201461370041 func_abc.pl 1006689 -> func_b + 0 4201462380038 func_abc.pl 1009997 -> func_c + 0 4201463390094 func_abc.pl 1010055 <- func_c + 0 4201463390117 func_abc.pl 23 <- func_b + 0 4201463390126 func_abc.pl 8 <- func_a + ^C + +As each subroutine is entered, the third column is indented by 2 spaces. This +shows which subroutine is calling who - the output above begins by showing that +func_a() began, and then called func_b(). + +The DELTA(us) column shows time from that line to the previous line, and +so can be a bit tricky to read. For example, the second line of data output +(skipping the header) reads as "the time from func_a() beginning to +func_b() beginning was 1006689 us, or 1.01 seconds". + +If the output looks shuffled, check the CPU "C" and "TIME" columns, and +post sort based on TIME if necessary. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + + + +The following traces a Perl network interface statistics tool, "nicstat" +version 0.99, + +# pl_flowtime.d + C TIME(us) FILE DELTA(us) -- SUB + 0 4201691465151 nicstat 2 -> BEGIN + 0 4201691465593 strict.pm 441 -> bits + 0 4201691465625 strict.pm 32 <- bits + 0 4201691465655 strict.pm 29 -> import + 0 4201691465676 strict.pm 21 <- import + 0 4201691465684 nicstat 7 <- BEGIN + 0 4201691465710 nicstat 25 -> BEGIN + 0 4201691468038 Exporter.pm 2328 -> import + 0 4201691468121 Exporter.pm 82 <- import + 0 4201691468133 nicstat 12 <- BEGIN + 0 4201691468160 nicstat 26 -> BEGIN + 0 4201691468367 Kstat.pm 207 -> BEGIN + 0 4201691468378 strict.pm 10 -> import + 0 4201691468388 strict.pm 10 <- import + 0 4201691468396 Kstat.pm 8 <- BEGIN + 0 4201691468419 Kstat.pm 23 -> BEGIN + 0 4201691468612 DynaLoader.pm 192 -> BEGIN + 0 4201691468685 vars.pm 73 -> BEGIN + 0 4201691468694 vars.pm 8 <- BEGIN + 0 4201691468727 vars.pm 33 -> BEGIN + 0 4201691469199 warnings.pm 471 -> BEGIN + 0 4201691469863 warnings.pm 663 <- BEGIN + 0 4201691471965 register.pm 2102 -> import + 0 4201691471986 register.pm 21 -> mkMask + 0 4201691472000 register.pm 13 <- mkMask + 0 4201691472052 register.pm 52 -> mkMask + 0 4201691472063 register.pm 10 <- mkMask + 0 4201691472074 register.pm 10 <- import + 0 4201691472081 vars.pm 7 <- BEGIN + 0 4201691472109 vars.pm 28 -> BEGIN + 0 4201691472118 strict.pm 8 -> import + 0 4201691472126 strict.pm 8 -> bits + 0 4201691472139 strict.pm 12 <- bits + 0 4201691472148 strict.pm 9 <- import + 0 4201691472155 vars.pm 7 <- BEGIN + 0 4201691472450 vars.pm 294 -> import + 0 4201691472501 vars.pm 51 <- import + 0 4201691472509 DynaLoader.pm 7 <- BEGIN + 0 4201691472557 DynaLoader.pm 48 -> BEGIN + 0 4201691472650 Config.pm 92 -> BEGIN + 0 4201691472658 strict.pm 8 -> import + 0 4201691472667 strict.pm 8 <- import + 0 4201691472675 Config.pm 7 <- BEGIN + 0 4201691472809 Config.pm 133 -> BEGIN + 0 4201691472817 strict.pm 8 -> unimport + 0 4201691472825 strict.pm 8 -> bits + 0 4201691472852 strict.pm 26 <- bits + 0 4201691472868 strict.pm 16 <- unimport + 0 4201691472876 Config.pm 7 <- BEGIN + 0 4201691473222 Config.pm 345 -> TIEHASH + 0 4201691473231 Config.pm 9 <- TIEHASH + 0 4201691473275 Config.pm 43 -> import + 0 4201691473292 Config.pm 17 <- import + 0 4201691473301 DynaLoader.pm 8 <- BEGIN + 0 4201691474650 AutoLoader.pm 1349 -> BEGIN + 0 4201691474661 strict.pm 10 -> import + 0 4201691474670 strict.pm 9 <- import + 0 4201691474679 AutoLoader.pm 8 <- BEGIN + 0 4201691474701 AutoLoader.pm 21 -> BEGIN + 0 4201691474709 AutoLoader.pm 8 <- BEGIN + 0 4201691474797 AutoLoader.pm 88 -> BEGIN + 0 4201691474810 AutoLoader.pm 12 <- BEGIN + 0 4201691475186 AutoLoader.pm 376 -> BEGIN + 0 4201691475195 strict.pm 9 -> unimport + 0 4201691475203 strict.pm 7 -> bits + 0 4201691475214 strict.pm 10 <- bits + 0 4201691475223 strict.pm 8 <- unimport + 0 4201691475230 AutoLoader.pm 7 <- BEGIN + 0 4201691475435 AutoLoader.pm 204 -> BEGIN + 0 4201691475444 strict.pm 8 -> unimport + 0 4201691475451 strict.pm 7 -> bits + 0 4201691475462 strict.pm 10 <- bits + 0 4201691475470 strict.pm 8 <- unimport + 0 4201691475478 AutoLoader.pm 7 <- BEGIN + 0 4201691475697 AutoLoader.pm 219 -> BEGIN + 0 4201691475706 strict.pm 8 -> unimport + 0 4201691475714 strict.pm 7 -> bits + 0 4201691475724 strict.pm 10 <- bits + 0 4201691475732 strict.pm 8 <- unimport + 0 4201691475739 AutoLoader.pm 7 <- BEGIN + 0 4201691475842 Config.pm 102 -> FETCH + 0 4201691475854 Config.pm 11 <- FETCH + 0 4201691475870 Config.pm 15 -> FETCH + 0 4201691475879 Config.pm 9 <- FETCH + 0 4201691475890 Config.pm 10 -> FETCH + 0 4201691475898 Config.pm 8 <- FETCH + 0 4201691475909 Config.pm 10 -> FETCH + 0 4201691475917 Config.pm 8 <- FETCH + 0 4201691476012 Kstat.pm 94 <- BEGIN + 0 4201691476041 Kstat.pm 29 -> BEGIN + 0 4201691476051 vars.pm 9 -> import + 0 4201691476084 vars.pm 32 <- import + 0 4201691476091 Kstat.pm 7 <- BEGIN + 0 4201691476147 DynaLoader.pm 56 -> bootstrap + 0 4201691476373 DynaLoader.pm 225 -> dl_load_flags + 0 4201691476383 DynaLoader.pm 9 <- dl_load_flags + 0 4201691476813 DynaLoader.pm 430 <- bootstrap + 0 4201691476837 nicstat 23 <- BEGIN + 0 4201691483648 Std.pm 6811 -> getopts + 0 4201691483697 Exporter.pm 49 -> import + 0 4201691483737 Exporter.pm 39 <- import + 0 4201691483756 Std.pm 19 <- getopts + 0 4201691483780 nicstat 24 -> find_nets + 0 4201691539198 nicstat 55418 <- find_nets + 0 4201691539610 nicstat 411 -> fetch_net_data + 0 4201691583290 nicstat 43679 <- fetch_net_data + 0 4201691583781 nicstat 491 -> print_neat + 0 4201691583930 nicstat 149 <- print_neat + 0 4201691583996 nicstat 65 -> print_neat + 0 4201691584165 nicstat 169 <- print_neat + 0 4201691584174 nicstat 9 -> print_neat + 0 4201691584298 nicstat 124 <- print_neat + 0 4201691584308 nicstat 9 -> print_neat + 0 4201691584432 nicstat 124 <- print_neat + 0 4201691584473 nicstat 41 -> print_neat + 0 4201691584597 nicstat 123 <- print_neat + 0 4201691584607 nicstat 9 -> print_neat + 0 4201691584730 nicstat 123 <- print_neat + 0 4201691585091 nicstat 361 -> print_neat + 0 4201691585217 nicstat 125 <- print_neat + 0 4201691585226 nicstat 9 -> print_neat + 0 4201691585379 nicstat 152 <- print_neat + 0 4201691585389 nicstat 9 -> print_neat + 0 4201691585512 nicstat 123 <- print_neat + 0 4201691585521 nicstat 9 -> print_neat + 0 4201691585644 nicstat 123 <- print_neat + 0 4201691585653 nicstat 9 -> print_neat + 0 4201691585825 nicstat 171 <- print_neat + 0 4201691585834 nicstat 9 -> print_neat + 0 4201691585988 nicstat 154 <- print_neat + 0 4201691586274 nicstat 285 -> print_neat + 0 4201691586434 nicstat 160 <- print_neat + 0 4201691586443 nicstat 9 -> print_neat + 0 4201691586567 nicstat 123 <- print_neat + 0 4201691586576 nicstat 9 -> print_neat + 0 4201691586731 nicstat 154 <- print_neat + 0 4201691586740 nicstat 8 -> print_neat + 0 4201691586892 nicstat 151 <- print_neat + 0 4201691586901 nicstat 9 -> print_neat + 0 4201691587025 nicstat 123 <- print_neat + 0 4201691587034 nicstat 9 -> print_neat + 0 4201691587157 nicstat 123 <- print_neat + 0 4201691590909 Config.pm 3751 -> DESTROY + 0 4201691590938 Config.pm 29 <- DESTROY + +After initialising Perl libraries and modules, the "nicstat" program ran, +the output matching what was expected from the source. + +The DELTA column shows that most time is spent in the find_nets() and +fetch_nets_data() subroutines, with 55.4 ms and 44.7 ms of elapsed +function time respectively. Those particular times were easy to interpret, +since there were no child subroutines called, and the delta spanned +the subroutine entry to its return. + +Some times get trickier to comprehend. The 2nd last line with a DELTA time +of 3751 us, means "the time from the print_neat() subroutine completing +to the DESTROY() subroutine starting, took 3751 us.". What is happening +during this time? It is hard to say based on this output - since it isn't +time within a function, rather it is time that Perl spent processing the +main program. Since we have the last function called, we may guess where +the program was at; or we could enhance this script to trace Perl engine +internals as well (and/or syscalls). + diff --git a/cddl/contrib/dtracetoolkit/Examples/pl_malloc_example.txt b/cddl/contrib/dtracetoolkit/Examples/pl_malloc_example.txt new file mode 100644 index 000000000000..a22a0082309d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pl_malloc_example.txt @@ -0,0 +1,79 @@ +The following are examples of pl_malloc.d. + +This is an expiremental script that attepmts to identify who is calling +malloc() from Perl, and to print byte distribution plots. + +Here it traces the example program, Code/Perl/func_malloc.pl. + +# pl_malloc.d -c ./func_malloc.pl +Function A +Function B +Function C +Tracing... Hit Ctrl-C to end. + +Perl malloc byte distributions by engine caller, + + perl`perl_alloc, total bytes = 1 + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + libc.so.1`_findbuf, total bytes = 520 + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + perl`Perl_safesysmalloc, total bytes = 72106 + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@ 26 + 4 |@@@@@ 72 + 8 |@@@@@@ 101 + 16 |@@@@@@@@@@@@@@ 216 + 32 |@@@@@@@@@@@ 178 + 64 |@ 21 + 128 | 6 + 256 | 2 + 512 | 4 + 1024 | 1 + 2048 |@ 11 + 4096 | 1 + 8192 | 0 + + +Perl malloc byte distributions by Perl file and subroutine, + + func_malloc.pl, func_a, bytes total = 42504 + value ------------- Distribution ------------- count + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 65536 | 0 + + func_malloc.pl, func_b, bytes total = 100008 + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + 16 | 0 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 | 0 + 16384 | 0 + 32768 | 0 + 65536 |@@@@@@@@@@@@@@@@@@@@ 1 + 131072 | 0 + +The func_malloc.pl program allocated around 100 Kbytes by creating a +variable ($b) and populating it with 100,000 "b" characters. This has been +identified in the last distribution plot printed, with one malloc event +of between 64 Kbytes and 128 Kbytes in size. There was also a malloc event +of between 4 and 7 bytes in size. + diff --git a/cddl/contrib/dtracetoolkit/Examples/pl_subcalls_example.txt b/cddl/contrib/dtracetoolkit/Examples/pl_subcalls_example.txt new file mode 100644 index 000000000000..1ea0369f4ed2 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pl_subcalls_example.txt @@ -0,0 +1,53 @@ +The following are examples of pl_subcalls.d. + +This is a simple script to count executed Perl subroutines. Here it traces +an example program, Code/Perl/func_abc.pl. + + # pl_subcalls.d + Tracing... Hit Ctrl-C to end. + ^C + FILE SUB CALLS + func_abc.pl func_a 1 + func_abc.pl func_b 1 + func_abc.pl func_c 1 + +While tracing, func_a() from the program "func_abc.pl" was executed once, +along with func_b() and func_c(). + + + +The following traces a Perl network interface statistics tool, "nicstat" +version 0.99, + + # pl_subcalls.d + Tracing... Hit Ctrl-C to end. + ^C + FILE SUB CALLS + Config.pm DESTROY 1 + Config.pm TIEHASH 1 + Config.pm import 1 + DynaLoader.pm bootstrap 1 + DynaLoader.pm dl_load_flags 1 + Std.pm getopts 1 + nicstat fetch_net_data 1 + nicstat find_nets 1 + register.pm import 1 + warnings.pm BEGIN 1 + Config.pm BEGIN 2 + DynaLoader.pm BEGIN 2 + Exporter.pm import 2 + register.pm mkMask 2 + vars.pm import 2 + Kstat.pm BEGIN 3 + nicstat BEGIN 3 + vars.pm BEGIN 3 + Config.pm FETCH 4 + strict.pm unimport 4 + strict.pm import 5 + AutoLoader.pm BEGIN 6 + strict.pm bits 6 + nicstat print_neat 18 + +The number of subroutines called by nicstat can be seen above, which includes +subroutines from libraries and modules that the program used. + diff --git a/cddl/contrib/dtracetoolkit/Examples/pl_syscalls_example.txt b/cddl/contrib/dtracetoolkit/Examples/pl_syscalls_example.txt new file mode 100644 index 000000000000..8cd509401708 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pl_syscalls_example.txt @@ -0,0 +1,50 @@ +The following are examples of pl_syscalls.d. + +This is a simple script to count executed Perl subroutines and system calls. +Here it traces an example program, Code/Perl/func_abc.pl. + + # pl_syscalls.d -c ./func_abc.pl + Function A + Tracing... Hit Ctrl-C to end. + Function B + Function C + + Calls for PID 305173, + + FILE TYPE NAME COUNT + func_abc.pl sub func_a 1 + func_abc.pl sub func_b 1 + func_abc.pl sub func_c 1 + func_abc.pl syscall fcntl 1 + func_abc.pl syscall getrlimit 1 + func_abc.pl syscall mmap 1 + func_abc.pl syscall munmap 1 + func_abc.pl syscall rexit 1 + func_abc.pl syscall schedctl 1 + func_abc.pl syscall sigpending 1 + func_abc.pl syscall sysi86 1 + func_abc.pl syscall getgid 2 + func_abc.pl syscall getpid 2 + func_abc.pl syscall getuid 2 + func_abc.pl syscall sigaction 2 + func_abc.pl syscall sysconfig 2 + func_abc.pl syscall fstat64 3 + func_abc.pl syscall nanosleep 3 + func_abc.pl syscall read 3 + func_abc.pl syscall setcontext 3 + func_abc.pl syscall write 3 + func_abc.pl syscall close 4 + func_abc.pl syscall ioctl 4 + func_abc.pl syscall open64 4 + func_abc.pl syscall llseek 5 + func_abc.pl syscall gtime 7 + func_abc.pl syscall brk 20 + +While tracing, three subroutines were called - func_a(), func_b() and func_c(). +There were numerous system calls made, including 20 brk()'s, 7 gtime()'s +and 5 llseek()'s. + +This script can provide an insight to how an application is interacting +with the system, by providing both application subroutine calls and +system calls in the same output. + diff --git a/cddl/contrib/dtracetoolkit/Examples/pl_syscolors_example.txt b/cddl/contrib/dtracetoolkit/Examples/pl_syscolors_example.txt new file mode 100644 index 000000000000..3a5f249c9175 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pl_syscolors_example.txt @@ -0,0 +1,183 @@ +The following are examples of pl_syscolors.d. + +This is a simple script to trace the flow of Perl subroutines and system +calls made, and renders the output in color ("colour") using terminal +escape sequences (which you can tweak by modifying the script). + +Here it traces the example program, Code/Perl/func_abc.pl. + +WARNING: This output is full of terminal escape sequences, so if you are +trying to view this through an editor or web browser - it may look awful. +Try viewing this using "more" (although, depending on your terminal, it +still may look awful). + +# pl_syscolors.d +C PID DELTA(us) FILE:LINE TYPE -- NAME +[2;32m0 305181 2 ":- syscall -> munmap[0m +[2;32m0 305181 33 ":- syscall <- munmap[0m +[2;32m0 305181 59 ":- syscall -> mmap[0m +[2;32m0 305181 18 ":- syscall <- mmap[0m +[2;32m0 305181 35 ":- syscall -> setcontext[0m +[2;32m0 305181 8 ":- syscall <- setcontext[0m +[2;32m0 305181 8 ":- syscall -> getrlimit[0m +[2;32m0 305181 9 ":- syscall <- getrlimit[0m +[2;32m0 305181 8 ":- syscall -> getpid[0m +[2;32m0 305181 7 ":- syscall <- getpid[0m +[2;32m0 305181 64 ":- syscall -> setcontext[0m +[2;32m0 305181 6 ":- syscall <- setcontext[0m +[2;32m0 305181 137 ":- syscall -> sigpending[0m +[2;32m0 305181 8 ":- syscall <- sigpending[0m +[2;32m0 305181 1148 ":- syscall -> sysi86[0m +[2;32m0 305181 11 ":- syscall <- sysi86[0m +[2;32m0 305181 105 ":- syscall -> open64[0m +[2;32m0 305181 96 ":- syscall <- open64[0m +[2;32m0 305181 13 ":- syscall -> ioctl[0m +[2;32m0 305181 18 ":- syscall <- ioctl[0m +[2;32m0 305181 14 ":- syscall -> close[0m +[2;32m0 305181 14 ":- syscall <- close[0m +[2;32m0 305181 123 ":- syscall -> sigaction[0m +[2;32m0 305181 9 ":- syscall <- sigaction[0m +[2;32m0 305181 49 ":- syscall -> brk[0m +[2;32m0 305181 9 ":- syscall <- brk[0m +[2;32m0 305181 8 ":- syscall -> brk[0m +[2;32m0 305181 16 ":- syscall <- brk[0m +[2;32m0 305181 63 ":- syscall -> brk[0m +[2;32m0 305181 7 ":- syscall <- brk[0m +[2;32m0 305181 7 ":- syscall -> brk[0m +[2;32m0 305181 8 ":- syscall <- brk[0m +[2;32m0 305181 43 ":- syscall -> brk[0m +[2;32m0 305181 7 ":- syscall <- brk[0m +[2;32m0 305181 7 ":- syscall -> brk[0m +[2;32m0 305181 8 ":- syscall <- brk[0m +[2;32m0 305181 141 ":- syscall -> brk[0m +[2;32m0 305181 7 ":- syscall <- brk[0m +[2;32m0 305181 8 ":- syscall -> brk[0m +[2;32m0 305181 9 ":- syscall <- brk[0m +[2;32m0 305181 24 ":- syscall -> brk[0m +[2;32m0 305181 7 ":- syscall <- brk[0m +[2;32m0 305181 7 ":- syscall -> brk[0m +[2;32m0 305181 8 ":- syscall <- brk[0m +[2;32m0 305181 30 ":- syscall -> getuid[0m +[2;32m0 305181 7 ":- syscall <- getuid[0m +[2;32m0 305181 10 ":- syscall -> getuid[0m +[2;32m0 305181 6 ":- syscall <- getuid[0m +[2;32m0 305181 10 ":- syscall -> getgid[0m +[2;32m0 305181 7 ":- syscall <- getgid[0m +[2;32m0 305181 9 ":- syscall -> getgid[0m +[2;32m0 305181 6 ":- syscall <- getgid[0m +[2;32m0 305181 117 ":- syscall -> sysconfig[0m +[2;32m0 305181 9 ":- syscall <- sysconfig[0m +[2;32m0 305181 19 ":- syscall -> open64[0m +[2;32m0 305181 59 ":- syscall <- open64[0m +[2;32m0 305181 15 ":- syscall -> read[0m +[2;32m0 305181 11 ":- syscall <- read[0m +[2;32m0 305181 8 ":- syscall -> close[0m +[2;32m0 305181 8 ":- syscall <- close[0m +[2;32m0 305181 34 ":- syscall -> gtime[0m +[2;32m0 305181 7 ":- syscall <- gtime[0m +[2;32m0 305181 34 ":- syscall -> brk[0m +[2;32m0 305181 7 ":- syscall <- brk[0m +[2;32m0 305181 7 ":- syscall -> brk[0m +[2;32m0 305181 9 ":- syscall <- brk[0m +[2;32m0 305181 44 ":- syscall -> sysconfig[0m +[2;32m0 305181 7 ":- syscall <- sysconfig[0m +[2;32m0 305181 9 ":- syscall -> brk[0m +[2;32m0 305181 6 ":- syscall <- brk[0m +[2;32m0 305181 7 ":- syscall -> brk[0m +[2;32m0 305181 8 ":- syscall <- brk[0m +[2;32m0 305181 145 ":- syscall -> open64[0m +[2;32m0 305181 16 ":- syscall <- open64[0m +[2;32m0 305181 16 ":- syscall -> fcntl[0m +[2;32m0 305181 7 ":- syscall <- fcntl[0m +[2;32m0 305181 10 ":- syscall -> sigaction[0m +[2;32m0 305181 7 ":- syscall <- sigaction[0m +[2;32m0 305181 8 ":- syscall -> brk[0m +[2;32m0 305181 7 ":- syscall <- brk[0m +[2;32m0 305181 7 ":- syscall -> brk[0m +[2;32m0 305181 9 ":- syscall <- brk[0m +[2;32m0 305181 104 ":- syscall -> brk[0m +[2;32m0 305181 7 ":- syscall <- brk[0m +[2;32m0 305181 7 ":- syscall -> brk[0m +[2;32m0 305181 8 ":- syscall <- brk[0m +[2;32m0 305181 88 ":- syscall -> getpid[0m +[2;32m0 305181 7 ":- syscall <- getpid[0m +[2;32m0 305181 8 ":- syscall -> brk[0m +[2;32m0 305181 6 ":- syscall <- brk[0m +[2;32m0 305181 7 ":- syscall -> brk[0m +[2;32m0 305181 8 ":- syscall <- brk[0m +[2;32m0 305181 105 ":- syscall -> fstat64[0m +[2;32m0 305181 10 ":- syscall <- fstat64[0m +[2;32m0 305181 16 ":- syscall -> fstat64[0m +[2;32m0 305181 7 ":- syscall <- fstat64[0m +[2;32m0 305181 25 ":- syscall -> ioctl[0m +[2;32m0 305181 8 ":- syscall <- ioctl[0m +[2;32m0 305181 7 ":- syscall -> read[0m +[2;32m0 305181 23 ":- syscall <- read[0m +[2;32m0 305181 18 ":- syscall -> llseek[0m +[2;32m0 305181 8 ":- syscall <- llseek[0m +[2;32m0 305181 126 ":- syscall -> llseek[0m +[2;32m0 305181 7 ":- syscall <- llseek[0m +[2;32m0 305181 34 ":- syscall -> llseek[0m +[2;32m0 305181 7 ":- syscall <- llseek[0m +[2;32m0 305181 30 ":- syscall -> llseek[0m +[2;32m0 305181 7 ":- syscall <- llseek[0m +[2;32m0 305181 12 ":- syscall -> read[0m +[2;32m0 305181 8 ":- syscall <- read[0m +[2;32m0 305181 11 ":- syscall -> llseek[0m +[2;32m0 305181 6 ":- syscall <- llseek[0m +[2;32m0 305181 7 ":- syscall -> close[0m +[2;32m0 305181 8 ":- syscall <- close[0m +[2;35m0 305181 27 func_a:15 sub -> ./func_abc.pl[0m +[2;32m0 305181 36 ":- syscall -> ioctl[0m +[2;32m0 305181 7 ":- syscall <- ioctl[0m +[2;32m0 305181 8 ":- syscall -> fstat64[0m +[2;32m0 305181 8 ":- syscall <- fstat64[0m +[2;32m0 305181 8 ":- syscall -> brk[0m +[2;32m0 305181 7 ":- syscall <- brk[0m +[2;32m0 305181 7 ":- syscall -> brk[0m +[2;32m0 305181 9 ":- syscall <- brk[0m +[2;32m0 305181 23 ":- syscall -> fstat64[0m +[2;32m0 305181 7 ":- syscall <- fstat64[0m +[2;32m0 305181 13 ":- syscall -> gtime[0m +[2;32m0 305181 7 ":- syscall <- gtime[0m +[2;32m0 305181 11 ":- syscall -> nanosleep[0m +[2;32m0 305181 1007250 ":- syscall <- nanosleep[0m +[2;32m0 305181 24 ":- syscall -> gtime[0m +[2;32m0 305181 15 ":- syscall <- gtime[0m +[2;35m0 305181 21 func_b:9 sub -> ./func_abc.pl[0m +[2;32m0 305181 27 ":- syscall -> gtime[0m +[2;32m0 305181 6 ":- syscall <- gtime[0m +[2;32m0 305181 8 ":- syscall -> nanosleep[0m +[2;32m0 305181 1009847 ":- syscall <- nanosleep[0m +[2;32m0 305181 24 ":- syscall -> gtime[0m +[2;32m0 305181 15 ":- syscall <- gtime[0m +[2;35m0 305181 21 func_c:4 sub -> ./func_abc.pl[0m +[2;32m0 305181 27 ":- syscall -> gtime[0m +[2;32m0 305181 6 ":- syscall <- gtime[0m +[2;32m0 305181 8 ":- syscall -> nanosleep[0m +Function A +Function B +Function C +[2;32m0 305181 1009916 ":- syscall <- nanosleep[0m +[2;32m0 305181 24 ":- syscall -> gtime[0m +[2;32m0 305181 15 ":- syscall <- gtime[0m +[2;35m0 305181 20 func_c:4 sub <- ./func_abc.pl[0m +[2;35m0 305181 29 func_b:9 sub <- ./func_abc.pl[0m +[2;35m0 305181 12 func_a:15 sub <- ./func_abc.pl[0m +[2;32m0 305181 51 ":- syscall -> schedctl[0m +[2;32m0 305181 53 ":- syscall <- schedctl[0m +[2;32m0 305181 16 ":- syscall -> setcontext[0m +[2;32m0 305181 8 ":- syscall <- setcontext[0m +[2;32m0 305181 21 ":- syscall -> write[0m +[2;32m0 305181 97 ":- syscall <- write[0m +[2;32m0 305181 28 ":- syscall -> open64[0m +[2;32m0 305181 101 ":- syscall <- open64[0m +[2;32m0 305181 9 ":- syscall -> ioctl[0m +[2;32m0 305181 10 ":- syscall <- ioctl[0m +[2;32m0 305181 10 ":- syscall -> close[0m +[2;32m0 305181 15 ":- syscall <- close[0m +[2;32m0 305181 35 ":- syscall -> rexit[0m + +If the colors don't suit you (or you'd rather HTML colored output), it +should be trivial to modify the script to do so. + diff --git a/cddl/contrib/dtracetoolkit/Examples/pl_who_example.txt b/cddl/contrib/dtracetoolkit/Examples/pl_who_example.txt new file mode 100644 index 000000000000..4ef361d69d01 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pl_who_example.txt @@ -0,0 +1,41 @@ +The following are examples of pl_who.d. + +This is a simple script to see who is executing Perl subroutines. Here it +traces as a few examples programs are executed (from Code/Perl/*.pl). + + # pl_who.d + Tracing... Hit Ctrl-C to end. + ^C + PID UID SUBS FILE + 30817 100 3 ./func_abc.pl + 30818 100 3 ./func_slow.pl + 30819 100 3 ./func_slow.pl + +While tracing, the user with UID 100 executed three Perl programs; +"func_abc.pl" once getting PID 130817, and "func_slow.pl" twice. All +programs called three subroutines. + + + +The following traces a Perl network interface statistics tool, "nicstat" +version 0.99, + + # pl_who.d + Tracing... Hit Ctrl-C to end. + ^C + PID UID SUBS FILE + 14977 100 1 lib/Getopt/Std.pm + 14977 100 1 lib/warnings.pm + 14977 100 2 lib/Exporter.pm + 14977 100 3 /usr/perl5/5.8.4/lib/Sun/Solaris/Kstat.pm + 14977 100 3 lib/warnings/register.pm + 14977 100 4 lib/DynaLoader.pm + 14977 100 5 lib/vars.pm + 14977 100 6 lib/AutoLoader.pm + 14977 100 9 lib/Config.pm + 14977 100 15 lib/strict.pm + 14977 100 23 /tmp/nicstat + +This shows the location of libraries and modules from where subroutines were +called. + diff --git a/cddl/contrib/dtracetoolkit/Examples/priclass_example.txt b/cddl/contrib/dtracetoolkit/Examples/priclass_example.txt new file mode 100644 index 000000000000..bf63e098e62e --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/priclass_example.txt @@ -0,0 +1,82 @@ +The following is a demonstration of the priclass.d script. + + +The script was run for several seconds then Ctrl-C was hit. During +this time, other processes in different scheduling classes were +running. + + # ./priclass.d + Sampling... Hit Ctrl-C to end. + ^C + + IA + value ------------- Distribution ------------- count + 40 | 0 + 50 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 30 + 60 | 0 + + SYS + value ------------- Distribution ------------- count + < 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4959 + 0 | 0 + 10 | 0 + 20 | 0 + 30 | 0 + 40 | 0 + 50 | 0 + 60 | 30 + 70 | 0 + 80 | 0 + 90 | 0 + 100 | 0 + 110 | 0 + 120 | 0 + 130 | 0 + 140 | 0 + 150 | 0 + 160 | 50 + >= 170 | 0 + + RT + value ------------- Distribution ------------- count + 90 | 0 + 100 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 110 + 110 | 0 + + TS + value ------------- Distribution ------------- count + < 0 | 0 + 0 |@@@@@@@@@@@@@@@ 2880 + 10 |@@@@@@@ 1280 + 20 |@@@@@ 990 + 30 |@@@@@ 920 + 40 |@@@@ 670 + 50 |@@@@ 730 + 60 | 0 + +The output is quite interesting, and illustrates neatly the behaviour +of different scheduling classes. + +The IA interactive class had 30 samples of a 50 to 59 priority, a fairly +high priority. This class is used for interactive processes, such as +the windowing system. I had clicked on a few windows to create this +activity. + +The SYS system class has had 4959 samples at a < 0 priority - the lowest, +which was for the idle thread. There are a few samples at higher +priorities, including some in the 160 to 169 range (the highest), which +are for interrupt threads. The system class is used by the kernel. + +The RT real time class had 110 samples in the 100 to 109 priority range. +This class is designed for real-time applications, those that must have +a consistant response time regardless of other process activity. For that +reason, the RT class trumps both TS and IA. I created these events by +running "prstat -R" as root, which runs prstat in the real time class. + +The TS time sharing class is the default scheduling class for the processes +on a Solaris system. I ran an infinite shell loop to create heavy activity, +"while :; do :; done", which shows a profile that leans towards lower +priorities. This is deliberate behaivour from the time sharing class, which +reduces the priority of CPU bound processes so that they interefere less +with I/O bound processes. The result is more samples in the lower priority +ranges. diff --git a/cddl/contrib/dtracetoolkit/Examples/pridist_example.txt b/cddl/contrib/dtracetoolkit/Examples/pridist_example.txt new file mode 100644 index 000000000000..1f930ab03ce5 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/pridist_example.txt @@ -0,0 +1,238 @@ +The following are demonstrations of the pridist.d script. + + +Here we run pridist.d for a few seconds then hit Ctrl-C, + + # pridist.d + Sampling... Hit Ctrl-C to end. + ^C + CMD: setiathome PID: 2190 + + value ------------- Distribution ------------- count + -5 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6629 + 5 | 0 + + CMD: sshd PID: 9172 + + value ------------- Distribution ------------- count + 50 | 0 + 55 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 10 + 60 | 0 + + CMD: mozilla-bin PID: 3164 + + value ------------- Distribution ------------- count + 40 | 0 + 45 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 20 + 50 | 0 + + CMD: perl PID: 11544 + + value ------------- Distribution ------------- count + 10 | 0 + 15 |@@@@@@@@ 60 + 20 | 0 + 25 |@@@@@@@@@@@@@@@ 120 + 30 | 0 + 35 |@@@@@@@@@@ 80 + 40 | 0 + 45 |@@@@@ 40 + 50 | 0 + 55 |@@@ 20 + 60 | 0 + +During this sample there was a CPU bound process called "setiathome" +running, and a new CPU bound "perl" process was executed. + +perl, executing an infinite loop, begins with a high priority of 55 to 59 +where it is sampled 20 times. pridist.d samples 1000 times per second, +so this equates to 20 ms. The perl process has also been sampled for 40 ms +at priority 45 to 49, for 80 ms at priority 35 to 39, down to 60 ms at a +priority 15 to 19 - at which point I had hit Ctrl-C to end sampling. + +The output is spectacular as it matches the behaviour of the dispatcher +table for the time sharing class perfectly! + +setiathome is running with the lowest priority, in the 0 to 4 range. + +... ok, so when I say 20 samples equates 20 ms, we know that's only an +estimate. It really means that for 20 samples that process was the one on +the CPU. In between the samples anything may have occured (I/O bound +processes will context switch off the CPU). DTrace can certainly be used +to measure this based on schedular events not samples (eg, cpudist), +however DTrace can then sometimes consume a noticable portion of the CPUs +(for example, 2%). + + + + +The following is a longer sample. Again, I start a new CPU bound perl +process, + + # pridist.d + Sampling... Hit Ctrl-C to end. + ^C + CMD: setiathome PID: 2190 + + value ------------- Distribution ------------- count + -5 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1820 + 5 | 0 + + CMD: mozilla-bin PID: 3164 + + value ------------- Distribution ------------- count + 40 | 0 + 45 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 10 + 50 | 0 + + CMD: bash PID: 9185 + + value ------------- Distribution ------------- count + 50 | 0 + 55 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 10 + 60 | 0 + + CMD: perl PID: 11547 + + value ------------- Distribution ------------- count + -5 | 0 + 0 |@@@@@@@@@@@@@@@ 2020 + 5 |@@ 200 + 10 |@@@@@@@ 960 + 15 |@ 160 + 20 |@@@@@ 720 + 25 |@ 120 + 30 |@@@@ 480 + 35 |@ 80 + 40 |@@ 240 + 45 | 40 + 50 |@@ 240 + 55 | 10 + 60 | 0 + +Now other behaviour can be observed as the perl process runs. The effect +here is due to ts_maxwait triggering a priority boot to avoid CPU starvation; +the priority is boosted to the 50 to 54 range, then decreases by 10 until +it reaches 0 and another ts_maxwait is triggered. The process spends +more time at lower priorities, as that is exactly how the TS dispatch table +has been configured. + + + + +Now we run prdist.d for a considerable time, + + # pridist.d + Sampling... Hit Ctrl-C to end. + ^C + CMD: setiathome PID: 2190 + + value ------------- Distribution ------------- count + -5 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3060 + 5 | 0 + + CMD: mozilla-bin PID: 3164 + + value ------------- Distribution ------------- count + 40 | 0 + 45 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 20 + 50 | 0 + + CMD: perl PID: 11549 + + value ------------- Distribution ------------- count + -5 | 0 + 0 |@@@@@@@@@@@@@@@@@@@ 7680 + 5 | 0 + 10 |@@@@@@@ 3040 + 15 | 70 + 20 |@@@@@@ 2280 + 25 | 120 + 30 |@@@@ 1580 + 35 | 80 + 40 |@@ 800 + 45 | 40 + 50 |@@ 800 + 55 | 20 + 60 | 0 + +The process has settled to a pattern of 0 priority, ts_maxwait boot to 50, +drop back to 0. + +Run "dispadmin -c TS -g" for a printout of the time sharing dispatcher table. + + + + + +The following shows running pridist.d on a completely idle system, + + # pridist.d + Sampling... Hit Ctrl-C to end. + ^C + CMD: sched PID: 0 + + value ------------- Distribution ------------- count + -10 | 0 + -5 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1190 + 0 | 0 + +Only the kernel "sched" was sampled. It would have been running the idle +thread. + + + + +The following is an unusual output that is worth mentioning, + + # pridist.d + Sampling... Hit Ctrl-C to end. + ^C + CMD: sched PID: 0 + + value ------------- Distribution ------------- count + -10 | 0 + -5 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 940 + 0 | 0 + 5 | 0 + 10 | 0 + 15 | 0 + 20 | 0 + 25 | 0 + 30 | 0 + 35 | 0 + 40 | 0 + 45 | 0 + 50 | 0 + 55 | 0 + 60 | 0 + 65 | 0 + 70 | 0 + 75 | 0 + 80 | 0 + 85 | 0 + 90 | 0 + 95 | 0 + 100 | 0 + 105 | 0 + 110 | 0 + 115 | 0 + 120 | 0 + 125 | 0 + 130 | 0 + 135 | 0 + 140 | 0 + 145 | 0 + 150 | 0 + 155 | 0 + 160 | 0 + 165 | 10 + >= 170 | 0 + +Here we have sampled the kernel running at a priority of 165 to 169. This +is the interrupt priority range, and would be an interrupt servicing thread. +Eg, a network interrupt. + diff --git a/cddl/contrib/dtracetoolkit/Examples/procsystime_example.txt b/cddl/contrib/dtracetoolkit/Examples/procsystime_example.txt new file mode 100644 index 000000000000..89f98bbca7dc --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/procsystime_example.txt @@ -0,0 +1,149 @@ +This is a demonstration of the procsystime tool, which can give details +on how processes make use of system calls. + +Here we run procsystime on processes which have the name "bash", + + # procsystime -n bash + Tracing... Hit Ctrl-C to end... + ^C + + Elapsed Times for process bash, + + SYSCALL TIME (ns) + setpgrp 27768 + gtime 28692 + lwp_sigmask 148074 + write 235814 + sigaction 553556 + ioctl 776691 + read 857401243 + +By default procsystime prints elapsed times, the time from when the syscall +was issued to it's completion. In the above output, we can see the read() +syscall took the most time for this process - 8.57 seconds for all the +reads combined. This is because the read syscall is waiting for keystrokes. + + + +Here we try the "-o" option to print CPU overhead times on "bash", + + # procsystime -o -n bash + Tracing... Hit Ctrl-C to end... + ^C + + CPU Times for process bash, + + SYSCALL TIME (ns) + setpgrp 6994 + gtime 8054 + lwp_sigmask 33865 + read 154895 + sigaction 259899 + write 343825 + ioctl 932280 + +This identifies which syscall type from bash is consuming the most CPU time. +This is ioctl, at 932 microseconds. Compare this output to the default in +the first example - both are useful for different reasons, this CPU overhead +output helps us see why processes are consuming a lot of sys time. + + + +This demonstrates using the "-a" for all details, this time with "ssh", + + # procsystime -a -n ssh + Tracing... Hit Ctrl-C to end... + ^C + + Elapsed Times for processes ssh, + + SYSCALL TIME (ns) + read 115833 + write 302419 + pollsys 114616076 + TOTAL: 115034328 + + CPU Times for processes ssh, + + SYSCALL TIME (ns) + read 82381 + pollsys 201818 + write 280390 + TOTAL: 564589 + + Syscall Counts for processes ssh, + + SYSCALL COUNT + read 4 + write 4 + pollsys 8 + TOTAL: 16 + +Now we can see elapsed times, overhead times, and syscall counts in one +report. Very handy. We can also see totals printed as "TOTAL:". + + + +procsystime also lets us just examine one PID. For example, + + # procsystime -p 1304 + Tracing... Hit Ctrl-C to end... + ^C + + Elapsed Times for PID 1304, + + SYSCALL TIME (ns) + fcntl 7323 + fstat64 21349 + ioctl 190683 + read 238197 + write 1276169 + pollsys 1005360640 + + + +Here is a longer example of running procsystime on mozilla, + + # procsystime -a -n mozilla-bin + Tracing... Hit Ctrl-C to end... + ^C + + Elapsed Times for processes mozilla-bin, + + SYSCALL TIME (ns) + readv 677958 + writev 1159088 + yield 1298742 + read 18019194 + write 35679619 + ioctl 108845685 + lwp_park 38090969432 + pollsys 65955258781 + TOTAL: 104211908499 + + CPU Times for processes mozilla-bin, + + SYSCALL TIME (ns) + yield 120345 + readv 398046 + writev 1117178 + lwp_park 8591428 + read 9752315 + write 29043460 + ioctl 37089349 + pollsys 189933470 + TOTAL: 276045591 + + Syscall Counts for processes mozilla-bin, + + SYSCALL COUNT + writev 3 + yield 9 + readv 58 + lwp_park 280 + write 1317 + read 1744 + pollsys 8268 + ioctl 16434 + TOTAL: 28113 + diff --git a/cddl/contrib/dtracetoolkit/Examples/putnexts_example.txt b/cddl/contrib/dtracetoolkit/Examples/putnexts_example.txt new file mode 100644 index 000000000000..fd7fc3db40df --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/putnexts_example.txt @@ -0,0 +1,520 @@ +The following is an example of the putnexts.d script. + + +When investigating the operation of kernel streams, it can be extreamly +useful to trace who (which stack trace) is calling putnext to who (the +kernel modele). This script does that, + +# putnexts.d +dtrace: script './putnexts.d' matched 1 probe +^C + + bufmod + bufmod`sbrput+0xb9 + unix`putnext+0x1b7 + pts`ptswput+0x1e1 + unix`putnext+0x1b7 + ptem`ptemwput+0x22f + 1 + ip + ip`ip_fanout_proto+0x4d2 + ip`ip_proto_input+0x616 + ip`ip_fanout_proto_again+0x160 + ip`ip_proto_input+0x530 + ip`ip_rput+0x50d + 1 + ip + ip`ip_wput_ipsec_out+0x60a + ip`ipsec_out_process+0x322 + ip`ip_wput_ire+0x18d0 + ip`ip_output+0x70a + ip`ip_wput+0x14 + 1 + ip + ip`ip_wput_ire+0x17d1 + ip`ip_output+0x70a + ip`tcp_send_data+0x68c + ip`tcp_ack_timer+0xb0 + ip`tcp_timer_handler+0x1d + 1 + ip + ip`ip_udp_input+0x4e4 + ip`ip_rput+0x540 + unix`putnext+0x1b7 + gld`gld_recv_tagged+0xed + gld`gld_recv+0x10 + 1 + ldterm + genunix`putnextctl1+0x52 + ldterm`ldterm_dosig+0x7b + ldterm`ldtermrput+0x6fe + unix`putnext+0x1b7 + ptem`ptemrput+0xff + 1 + ldterm + ldterm`ldterm_ioctl_reply+0x93 + ldterm`ldtermrput+0x186 + genunix`qdrain_syncq+0x68 + genunix`drain_syncq+0x1a4 + genunix`putnext_tail+0x88 + 1 + ldterm + ldterm`ldtermrput+0x12a + unix`putnext+0x1b7 + ptem`ptemrput+0xff + genunix`qdrain_syncq+0x68 + genunix`drain_syncq+0x1a4 + 1 + ldterm + ldterm`ldterm_dosig+0x16f + ldterm`ldtermrput+0x6fe + unix`putnext+0x1b7 + ptem`ptemrput+0xff + unix`putnext+0x1b7 + 1 + ldterm + genunix`putnextctl1+0x52 + ldterm`ldterm_dosig+0x124 + ldterm`ldtermrput+0x6fe + unix`putnext+0x1b7 + ptem`ptemrput+0xff + 1 + ldterm + ldterm`ldterm_do_ioctl+0xd8b + ldterm`ldtermwmsg+0x41 + ldterm`ldtermwput+0x8e + unix`putnext+0x1b7 + ttcompat`ttcompat_do_ioctl+0x425 + 1 + ldterm + genunix`putnextctl1+0x52 + ldterm`ldterm_dosig+0xe3 + ldterm`ldtermrput+0x6fe + unix`putnext+0x1b7 + ptem`ptemrput+0xff + 1 + ptem + genunix`qreply+0x23 + ptem`ptemwmsg+0x2b9 + ptem`ptemwput+0xe1 + unix`putnext+0x1b7 + ldterm`ldterm_do_ioctl+0xd8b + 1 + ptem + ptem`ptemwput+0x22f + genunix`qdrain_syncq+0x68 + genunix`drain_syncq+0x1a4 + genunix`putnext_tail+0x88 + unix`putnext+0x38e + 1 + ptem + ptem`ptemrput+0xff + genunix`qdrain_syncq+0x68 + genunix`drain_syncq+0x1a4 + genunix`putnext_tail+0x88 + unix`putnext+0x38e + 1 + ptem + ptem`ptemwmsg+0x44d + ptem`ptemwput+0xe1 + genunix`qdrain_syncq+0x68 + genunix`drain_syncq+0x1a4 + genunix`putnext_tail+0x88 + 1 + ptm + pts`ptswsrv+0x7c + genunix`runservice+0x2a + genunix`queue_service+0x30 + genunix`stream_service+0x69 + genunix`taskq_d_thread+0x8a + 1 + ptm + pts`ptswput+0x1e1 + unix`putnext+0x1b7 + ptem`ptemwput+0x22f + genunix`qdrain_syncq+0x68 + genunix`drain_syncq+0x1a4 + 1 + pts + genunix`qreply+0x23 + pts`ptswput+0x201 + unix`putnext+0x1b7 + ptem`ptemwput+0x22f + genunix`qdrain_syncq+0x68 + 1 + strwhead + genunix`qreply+0x23 + genunix`strrput_nondata+0x22d + genunix`strrput+0x256 + unix`putnext+0x1b7 + ttcompat`ttcompatrput+0x1d + 1 + strwhead + genunix`strdoioctl+0x30d + genunix`strioctl+0x6ae + specfs`spec_ioctl+0x48 + genunix`fop_ioctl+0x1e + genunix`ioctl+0x199 + 1 + tcp + ip`tcp_rput_data+0x2221 + ip`tcp_input+0x39 + ip`squeue_enter+0x1bf + ip`ip_tcp_input+0x9f8 + ip`ip_rput+0x583 + 1 + ttcompat + ttcompat`ttcompat_ioctl_ack+0x398 + ttcompat`ttcompatrput+0x39 + genunix`qdrain_syncq+0x68 + genunix`drain_syncq+0x1a4 + genunix`putnext_tail+0x88 + 1 + ttcompat + ttcompat`ttcompatrput+0x1d + unix`putnext+0x1b7 + ldterm`ldtermrput+0x12a + unix`putnext+0x1b7 + ptem`ptemrput+0xff + 1 + ttcompat + ttcompat`ttcompatrput+0x1d + unix`putnext+0x1b7 + genunix`putnextctl1+0x52 + ldterm`ldterm_dosig+0x124 + ldterm`ldtermrput+0x6fe + 1 + ttcompat + ttcompat`ttcompatwput+0x32 + genunix`qdrain_syncq+0x68 + genunix`drain_syncq+0x1a4 + genunix`putnext_tail+0x88 + unix`putnext+0x38e + 1 + ttcompat + ttcompat`ttcompat_do_ioctl+0x425 + ttcompat`ttcompatwput+0x152 + unix`putnext+0x1b7 + genunix`strdoioctl+0x30d + genunix`strioctl+0x6ae + 1 + ttcompat + ttcompat`ttcompatrput+0x1d + unix`putnext+0x1b7 + genunix`putnextctl1+0x52 + ldterm`ldterm_dosig+0xe3 + ldterm`ldtermrput+0x6fe + 1 + tun + tun`tun_rdata_v4+0x58c + tun`tun_rproc+0x256 + tun`tun_rput+0x23 + unix`putnext+0x1b7 + ip`ip_fanout_proto+0x4d2 + 1 + tun + tun`tun_wputnext_v4+0x1f8 + tun`tun_wproc_mdata+0x71 + tun`tun_wproc+0xdf + tun`tun_wput+0x23 + unix`putnext+0x1b7 + 1 + udp + udp`udp_rput+0x975 + unix`putnext+0x1b7 + ip`ip_udp_input+0x4e4 + ip`ip_rput+0x540 + unix`putnext+0x1b7 + 1 + conskbd + genunix`qreply+0x23 + conskbd`conskbd_mux_upstream_msg+0x24f + conskbd`conskbd_lqs_ack_complete+0x65 + conskbd`conskbdlrput+0x9d + unix`putnext+0x1b7 + 2 + conskbd + conskbd`conskbdlwserv+0x2d + genunix`runservice+0x2a + genunix`queue_service+0x30 + genunix`stream_service+0x69 + genunix`taskq_d_thread+0x8a + 2 + kb8042 + genunix`qreply+0x23 + genunix`miocack+0x2a + kb8042`kb8042_ioctlmsg+0x281 + kb8042`kb8042_wsrv+0xcb + genunix`runservice+0x2a + 2 + strwhead + genunix`strdoioctl+0x30d + genunix`strioctl+0x587 + specfs`spec_ioctl+0x48 + genunix`fop_ioctl+0x1e + genunix`ioctl+0x199 + 2 + consms + consms`consmslrput+0x15a + unix`putnext+0x1b7 + vuid3ps2`vuid3ps2_putnext+0x94 + vuid3ps2`sendButtonEvent+0x58 + vuid3ps2`vuid3ps2+0x8ee + 4 + vuid3ps2 + vuid3ps2`vuid3ps2_putnext+0x94 + vuid3ps2`sendButtonEvent+0x58 + vuid3ps2`vuid3ps2+0x8ee + vuid3ps2`vuidmice_rsrv+0x69 + genunix`runservice+0x2a + 4 + ip + ip`tcp_send_data+0x55d + ip`tcp_ack_timer+0xb0 + ip`tcp_timer_handler+0x1d + ip`squeue_drain+0xbb + ip`squeue_worker+0xeb + 10 + ip + ip`tcp_send_data+0x55d + ip`tcp_rput_data+0x259e + ip`squeue_enter+0x1bf + ip`ip_tcp_input+0xcfb + ip`ip_rput+0x583 + 11 + ip + ip`ip_fanout_udp_conn+0x14b + ip`ip_fanout_udp+0x373 + ip`ip_wput_local+0x16f + ip`ip_wput_ire+0x1436 + ip`ip_output+0x70a + 14 + strwhead + genunix`strput+0x168 + genunix`strputmsg+0x1d5 + genunix`msgio+0x142 + genunix`putmsg+0x6e + unix`sys_sysenter+0xdc + 14 + timod + timod`timodwput+0xea + unix`putnext+0x1b7 + genunix`strput+0x168 + genunix`strputmsg+0x1d5 + genunix`msgio+0x142 + 14 + timod + timod`timodrput+0xa9 + unix`putnext+0x1b7 + udp`udp_rput+0x975 + unix`putnext+0x1b7 + ip`ip_fanout_udp_conn+0x14b + 14 + udp + udp`udp_rput+0x975 + unix`putnext+0x1b7 + ip`ip_fanout_udp_conn+0x14b + ip`ip_fanout_udp+0x373 + ip`ip_wput_local+0x16f + 14 + udp + udp`udp_wput+0x378 + unix`putnext+0x1b7 + timod`timodwput+0xea + unix`putnext+0x1b7 + genunix`strput+0x168 + 14 + bufmod + bufmod`sbsendit+0x5a + bufmod`sbclosechunk+0x2e + bufmod`sbrput+0xee + genunix`qdrain_syncq+0x68 + genunix`drain_syncq+0x1a4 + 21 + conskbd + kbtrans`kbtrans_queueevent+0x5c + kbtrans`kbtrans_keyreleased+0x3d + kbtrans`kbtrans_untrans_keyreleased_raw+0x10 + kbtrans`kbtrans_processkey+0x20 + kbtrans`kbtrans_streams_key+0x95 + 22 + kb8042 + kbtrans`kbtrans_queueevent+0x5c + kbtrans`kbtrans_keyreleased+0x3d + kbtrans`kbtrans_untrans_keyreleased_raw+0x10 + kbtrans`kbtrans_processkey+0x20 + kbtrans`kbtrans_streams_key+0x95 + 22 + ldterm + ldterm`ldterm_msg_upstream+0x2c + ldterm`vmin_satisfied+0x5e + ldterm`ldterm_dononcanon+0x230 + ldterm`ldtermrmsg+0x252 + ldterm`ldtermrput+0x7e9 + 22 + ttcompat + ttcompat`ttcompatrput+0x1d + unix`putnext+0x1b7 + ldterm`ldterm_msg_upstream+0x2c + ldterm`vmin_satisfied+0x5e + ldterm`ldterm_dononcanon+0x230 + 22 + bufmod + bufmod`sbwput+0x33 + unix`putnext+0x1b7 + genunix`strput+0x168 + genunix`strwrite+0x151 + specfs`spec_write+0x4e + 23 + ptem + ptem`ptemrput+0xff + unix`putnext+0x1b7 + ptm`ptmwsrv+0x90 + genunix`runservice+0x2a + genunix`queue_service+0x30 + 23 + pts + ptm`ptmwsrv+0x90 + genunix`runservice+0x2a + genunix`queue_service+0x30 + genunix`stream_runservice+0x96 + genunix`strput+0x171 + 23 + conskbd + kbtrans`kbtrans_queueevent+0x5c + kbtrans`kbtrans_queuepress+0x5f + kbtrans`kbtrans_untrans_keypressed_raw+0x36 + kbtrans`kbtrans_processkey+0x30 + kbtrans`kbtrans_streams_key+0x95 + 24 + kb8042 + kbtrans`kbtrans_queueevent+0x5c + kbtrans`kbtrans_queuepress+0x5f + kbtrans`kbtrans_untrans_keypressed_raw+0x36 + kbtrans`kbtrans_processkey+0x30 + kbtrans`kbtrans_streams_key+0x95 + 24 + ip + ip`tcp_send_data+0x55d + ip`tcp_output+0x562 + ip`squeue_enter+0x1bf + ip`tcp_wput+0x234 + unix`putnext+0x1b7 + 32 + ldterm + ldterm`ldtermwmsg+0x100 + ldterm`ldtermwput+0x8e + unix`putnext+0x1b7 + ttcompat`ttcompatwput+0x32 + unix`putnext+0x1b7 + 36 + ptem + ptem`ptemwmsg+0x44d + ptem`ptemwput+0xe1 + unix`putnext+0x1b7 + ldterm`ldtermwmsg+0x100 + ldterm`ldtermwput+0x8e + 36 + ptm + pts`ptswsrv+0x7c + genunix`runservice+0x2a + genunix`queue_service+0x30 + genunix`stream_runservice+0x96 + genunix`strput+0x171 + 36 + ttcompat + ttcompat`ttcompatwput+0x32 + unix`putnext+0x1b7 + genunix`strput+0x168 + genunix`strwrite+0x151 + specfs`spec_write+0x4e + 36 + tcp + ip`tcp_rput_data+0x2221 + ip`squeue_enter+0x1bf + ip`ip_tcp_input+0xcfb + ip`ip_rput+0x583 + unix`putnext+0x1b7 + 40 + rtls + gld`gld_recv_tagged+0xed + gld`gld_recv+0x10 + rtls`rtls_receive+0x18f + rtls`rtls_gld_intr+0x133 + gld`gld_intr+0x1e + 46 + consms + consms`consmslrput+0x15a + unix`putnext+0x1b7 + vuid3ps2`vuid3ps2_putnext+0x94 + vuid3ps2`vuid3ps2+0x82b + vuid3ps2`vuidmice_rsrv+0x69 + 59 + strwhead + genunix`strput+0x168 + genunix`strwrite+0x151 + specfs`spec_write+0x4e + genunix`fop_write+0x1b + genunix`write+0x29a + 59 + vuid3ps2 + vuid3ps2`vuid3ps2_putnext+0x94 + vuid3ps2`vuid3ps2+0x82b + vuid3ps2`vuidmice_rsrv+0x69 + genunix`runservice+0x2a + genunix`queue_service+0x30 + 59 + consms + consms`consmslrput+0x15a + unix`putnext+0x1b7 + vuid3ps2`vuid3ps2_putnext+0x94 + vuid3ps2`vuid3ps2+0x809 + vuid3ps2`vuidmice_rsrv+0x69 + 77 + vuid3ps2 + vuid3ps2`vuid3ps2_putnext+0x94 + vuid3ps2`vuid3ps2+0x809 + vuid3ps2`vuidmice_rsrv+0x69 + genunix`runservice+0x2a + genunix`queue_service+0x30 + 77 + strwhead + genunix`strput+0x168 + genunix`strwrite+0x151 + sockfs`socktpi_write+0xcb + genunix`fop_write+0x1b + genunix`writev+0x308 + 108 + rtls + gld`gld_passon+0x9e + gld`gld_sendup+0xfc + gld`gld_recv_tagged+0x15f + gld`gld_recv+0x10 + rtls`rtls_receive+0x18f + 124 + strwhead + genunix`strput+0x168 + genunix`strwrite+0x151 + sockfs`socktpi_write+0xcb + genunix`fop_write+0x1b + genunix`write+0x29a + 138 + tl + tl`tl_wput_data_ser+0x5e + genunix`serializer_exec+0x1d + genunix`serializer_enter+0x81 + tl`tl_serializer_enter+0x40 + tl`tl_wput+0x1c7 + 214 + mouse8042 + mouse8042`mouse8042_intr+0x68 + i8042`i8042_intr+0xa6 + unix`intr_thread+0x107 + 261 + +Highlights of the above output include, + +- gld calling putnext to rtls (my laptop network device driver) +- ip receive path calling putnext to tcp +- tcp_send_data() calling putnext to ip + diff --git a/cddl/contrib/dtracetoolkit/Examples/py_calldist_example.txt b/cddl/contrib/dtracetoolkit/Examples/py_calldist_example.txt new file mode 100644 index 000000000000..da44430213a2 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/py_calldist_example.txt @@ -0,0 +1,966 @@ +The following are examples of py_calldist.d. + +This script traces the elapsed time of Python functions and prints a report in +the form of a histogram. Here it traces the example program, +Code/Python/func_abc.py + +The results are displayed in two sections, the first, Exclusive function +elapsed times, shows us the time spent in each functions, not including time +spent in subroutines. + +The third section, Inclusive function elapsed times, shows us the time spent +in each function, this time including that time spent in subroutines called +by those functions. + +It is important to pay close attention to the third column, "count" as this +will indicate if there were any instances in a particular timeframe, even if +the number is too small to show up on the histogram clearly. + +# py_calldist.d +Tracing... Hit Ctrl-C to end. +^C + +Exclusive function elapsed times (us), + UserDict.py, func, IterableUserDict + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + __init__.py, func, CodecRegistryError + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ascii.py, func, Codec + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ascii.py, func, StreamConverter + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ascii.py, func, StreamReader + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ascii.py, func, StreamWriter + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ascii.py, func, getregentry + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, _Helper + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, aliasmbcs + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, setencoding + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, sethelper + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + types.py, func, _C + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + warnings.py, func, _OptionError + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + warnings.py, func, _processoptions + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + UserDict.py, func, __init__ + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + codecs.py, func, Codec + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + codecs.py, func, StreamReader + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + codecs.py, func, StreamReaderWriter + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + codecs.py, func, StreamRecoder + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + codecs.py, func, StreamWriter + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + os.py, func, _Environ + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + site.py, func, _Printer + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + site.py, func, setquit + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + copy_reg.py, func, constructor + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 4 | 0 + + site.py, func, __init__ + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 4 | 0 + + warnings.py, func, simplefilter + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 1 + 4 |@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + __init__.py, func, normalize_encoding + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + linecache.py, func, ? + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + posixpath.py, func, dirname + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + posixpath.py, func, split + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 8 | 0 + + stat.py, func, ? + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + stat.py, func, S_IFMT + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 4 | 0 + + UserDict.py, func, UserDict + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + os.py, func, __init__ + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + posixpath.py, func, basename + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + posixpath.py, func, normcase + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@ 6 + 2 |@@@@@@@@@@@@@@@@@@@@@@@ 8 + 4 | 0 + + aliases.py, func, ? + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + copy_reg.py, func, pickle + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 16 |@@@@@@@@@@@@@ 1 + 32 | 0 + + posixpath.py, func, exists + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + <string>, func, ? + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 10 + 4 | 0 + 8 | 0 + 16 |@@@@ 1 + 32 | 0 + + posixpath.py, func, isabs + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 21 + 4 |@@ 1 + 8 | 0 + + stat.py, func, S_ISDIR + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 16 |@@@@@@@ 1 + 32 | 0 + + UserDict.py, func, ? + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + ascii.py, func, ? + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + site.py, func, addsitepackages + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + site.py, func, removeduppaths + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + site.py, func, setcopyright + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + types.py, func, ? + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + posixpath.py, func, join + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@ 12 + 4 |@@@@@@@@@@@@ 6 + 8 |@@ 1 + 16 | 0 + 32 |@@ 1 + 64 | 0 + + UserDict.py, func, DictMixin + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + __init__.py, func, search_function + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + codecs.py, func, ? + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + copy_reg.py, func, ? + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + os.py, func, _get_exports_list + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + site.py, func, _init_pathinfo + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + site.py, func, abs__file__ + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + site.py, func, main + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + warnings.py, func, ? + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + posixpath.py, func, normpath + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 22 + 16 | 0 + + posixpath.py, func, isdir + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 32 |@@@@@ 1 + 64 |@@@@@ 1 + 128 | 0 + + site.py, func, addpackage + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@ 1 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 256 | 0 + + posixpath.py, func, abspath + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 21 + 32 |@@ 1 + 64 | 0 + + site.py, func, makepath + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 14 + 64 | 0 + + posixpath.py, func, ? + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + site.py, func, ? + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + site.py, func, execsitecustomize + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + site.py, func, addsitedir + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + os.py, func, _exists + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 7 + 32 |@@@@@@@@ 2 + 64 | 0 + 128 | 0 + 256 | 0 + 512 |@@@@ 1 + 1024 | 0 + + __init__.py, func, ? + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + os.py, func, ? + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + func_abc.py, func, ? + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + func_abc.py, func, func_a + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + func_abc.py, func, func_b + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + func_abc.py, func, func_c + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + +Inclusive function elapsed times (us), + UserDict.py, func, IterableUserDict + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + __init__.py, func, CodecRegistryError + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ascii.py, func, Codec + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ascii.py, func, StreamConverter + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ascii.py, func, StreamReader + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ascii.py, func, StreamWriter + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ascii.py, func, getregentry + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, _Helper + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, aliasmbcs + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, setencoding + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, sethelper + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + types.py, func, _C + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + warnings.py, func, _OptionError + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + warnings.py, func, _processoptions + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + UserDict.py, func, __init__ + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + codecs.py, func, Codec + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + codecs.py, func, StreamReader + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + codecs.py, func, StreamReaderWriter + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + codecs.py, func, StreamRecoder + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + codecs.py, func, StreamWriter + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + os.py, func, _Environ + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + site.py, func, _Printer + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + site.py, func, setquit + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + copy_reg.py, func, constructor + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 4 | 0 + + site.py, func, __init__ + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 4 | 0 + + warnings.py, func, simplefilter + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 1 + 4 |@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + __init__.py, func, normalize_encoding + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + linecache.py, func, ? + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + posixpath.py, func, split + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 8 | 0 + + stat.py, func, ? + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + stat.py, func, S_IFMT + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 4 | 0 + + UserDict.py, func, UserDict + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + os.py, func, __init__ + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + posixpath.py, func, basename + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + posixpath.py, func, dirname + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + posixpath.py, func, normcase + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@ 6 + 2 |@@@@@@@@@@@@@@@@@@@@@@@ 8 + 4 | 0 + + aliases.py, func, ? + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + posixpath.py, func, exists + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + copy_reg.py, func, pickle + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@ 1 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + posixpath.py, func, isabs + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 21 + 4 |@@ 1 + 8 | 0 + + ascii.py, func, ? + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + site.py, func, setcopyright + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + stat.py, func, S_ISDIR + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 16 |@@@@@@@@@@@@@ 2 + 32 | 0 + + types.py, func, ? + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + posixpath.py, func, join + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@ 12 + 4 |@@@@@@@@@@@@ 6 + 8 |@@ 1 + 16 | 0 + 32 |@@ 1 + 64 | 0 + + UserDict.py, func, DictMixin + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + codecs.py, func, ? + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + os.py, func, _get_exports_list + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + posixpath.py, func, normpath + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 22 + 16 | 0 + + UserDict.py, func, ? + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + __init__.py, func, search_function + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + copy_reg.py, func, ? + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + site.py, func, abs__file__ + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + site.py, func, removeduppaths + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + warnings.py, func, ? + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + posixpath.py, func, isdir + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@ 1 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 64 |@@@@@@@@@@ 2 + 128 | 0 + + posixpath.py, func, ? + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + site.py, func, _init_pathinfo + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + site.py, func, execsitecustomize + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + posixpath.py, func, abspath + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 22 + 64 | 0 + + os.py, func, _exists + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@ 4 + 32 |@@@@@@@@@@@@@@@@@@@@ 5 + 64 | 0 + 128 | 0 + 256 | 0 + 512 |@@@@ 1 + 1024 | 0 + + site.py, func, makepath + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 14 + 128 | 0 + + __init__.py, func, ? + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + <string>, func, ? + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 10 + 4 | 0 + 8 | 0 + 16 | 0 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 |@@@@ 1 + 2048 | 0 + + site.py, func, addpackage + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@ 1 + 256 |@@@@@@@@@@@@@ 1 + 512 | 0 + 1024 |@@@@@@@@@@@@@ 1 + 2048 | 0 + + os.py, func, ? + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + site.py, func, addsitepackages + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + site.py, func, addsitedir + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@ 1 + 2048 |@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + site.py, func, main + value ------------- Distribution ------------- count + 2048 | 0 + 4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8192 | 0 + + site.py, func, ? + value ------------- Distribution ------------- count + 4096 | 0 + 8192 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16384 | 0 + + func_abc.py, func, func_c + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + func_abc.py, func, func_b + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + func_abc.py, func, ? + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + + func_abc.py, func, func_a + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + + diff --git a/cddl/contrib/dtracetoolkit/Examples/py_calltime_example.txt b/cddl/contrib/dtracetoolkit/Examples/py_calltime_example.txt new file mode 100644 index 000000000000..bda8ea898826 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/py_calltime_example.txt @@ -0,0 +1,255 @@ +The following are examples of py_calltime.d. + +This script traces the elapsed time of Python functions and prints a report. +Here it traces the example program, Code/Python/func_abc.py + +# py_calltime.d +Tracing... Hit Ctrl-C to end. +^C + +Count, + FILE TYPE NAME COUNT + UserDict.py func ? 1 + UserDict.py func DictMixin 1 + UserDict.py func IterableUserDict 1 + UserDict.py func UserDict 1 + UserDict.py func __init__ 1 + __init__.py func ? 1 + __init__.py func CodecRegistryError 1 + __init__.py func normalize_encoding 1 + __init__.py func search_function 1 + aliases.py func ? 1 + ascii.py func ? 1 + ascii.py func Codec 1 + ascii.py func StreamConverter 1 + ascii.py func StreamReader 1 + ascii.py func StreamWriter 1 + ascii.py func getregentry 1 + codecs.py func ? 1 + codecs.py func Codec 1 + codecs.py func StreamReader 1 + codecs.py func StreamReaderWriter 1 + codecs.py func StreamRecoder 1 + codecs.py func StreamWriter 1 + copy_reg.py func ? 1 + func_abc.py func ? 1 + func_abc.py func func_a 1 + func_abc.py func func_b 1 + func_abc.py func func_c 1 + linecache.py func ? 1 + os.py func ? 1 + os.py func _Environ 1 + os.py func __init__ 1 + os.py func _get_exports_list 1 + posixpath.py func ? 1 + posixpath.py func basename 1 + posixpath.py func dirname 1 + site.py func ? 1 + site.py func _Helper 1 + site.py func _Printer 1 + site.py func _init_pathinfo 1 + site.py func abs__file__ 1 + site.py func addsitepackages 1 + site.py func aliasmbcs 1 + site.py func execsitecustomize 1 + site.py func main 1 + site.py func removeduppaths 1 + site.py func setcopyright 1 + site.py func setencoding 1 + site.py func sethelper 1 + site.py func setquit 1 + stat.py func ? 1 + types.py func ? 1 + types.py func _C 1 + warnings.py func ? 1 + warnings.py func _OptionError 1 + warnings.py func _processoptions 1 + posixpath.py func exists 2 + posixpath.py func split 2 + site.py func addsitedir 2 + warnings.py func simplefilter 2 + copy_reg.py func constructor 3 + copy_reg.py func pickle 3 + site.py func __init__ 3 + site.py func addpackage 3 + stat.py func S_IFMT 6 + stat.py func S_ISDIR 6 + posixpath.py func isdir 8 + os.py func _exists 10 + <string> func ? 11 + posixpath.py func normcase 14 + site.py func makepath 14 + posixpath.py func join 20 + posixpath.py func abspath 22 + posixpath.py func isabs 22 + posixpath.py func normpath 22 + - total - 230 + +Exclusive function elapsed times (us), + FILE TYPE NAME TOTAL + ascii.py func StreamWriter 2 + ascii.py func StreamReader 2 + site.py func setencoding 2 + UserDict.py func IterableUserDict 2 + __init__.py func CodecRegistryError 2 + ascii.py func getregentry 2 + site.py func aliasmbcs 2 + warnings.py func _OptionError 3 + types.py func _C 3 + site.py func sethelper 3 + warnings.py func _processoptions 3 + ascii.py func StreamConverter 3 + ascii.py func Codec 3 + site.py func _Helper 3 + site.py func setquit 4 + codecs.py func StreamWriter 4 + UserDict.py func __init__ 4 + site.py func _Printer 4 + codecs.py func Codec 4 + os.py func _Environ 4 + codecs.py func StreamRecoder 5 + codecs.py func StreamReaderWriter 6 + codecs.py func StreamReader 6 + copy_reg.py func constructor 7 + __init__.py func normalize_encoding 9 + site.py func __init__ 10 + warnings.py func simplefilter 11 + linecache.py func ? 11 + posixpath.py func split 13 + stat.py func ? 14 + stat.py func S_IFMT 14 + posixpath.py func dirname 16 + posixpath.py func basename 24 + os.py func __init__ 26 + posixpath.py func normcase 29 + UserDict.py func UserDict 32 + posixpath.py func exists 37 + aliases.py func ? 46 + <string> func ? 56 + copy_reg.py func pickle 59 + UserDict.py func ? 84 + site.py func addsitepackages 85 + posixpath.py func isabs 87 + site.py func setcopyright 94 + stat.py func S_ISDIR 98 + posixpath.py func join 105 + types.py func ? 106 + site.py func removeduppaths 115 + ascii.py func ? 122 + os.py func _get_exports_list 136 + site.py func _init_pathinfo 155 + site.py func abs__file__ 158 + codecs.py func ? 182 + UserDict.py func DictMixin 184 + __init__.py func search_function 205 + site.py func main 218 + posixpath.py func normpath 231 + copy_reg.py func ? 239 + posixpath.py func isdir 285 + site.py func addpackage 419 + site.py func addsitedir 473 + warnings.py func ? 500 + posixpath.py func ? 546 + site.py func execsitecustomize 558 + site.py func makepath 608 + posixpath.py func abspath 646 + os.py func _exists 925 + __init__.py func ? 1289 + os.py func ? 1473 + site.py func ? 1510 + func_abc.py func ? 1517 + func_abc.py func func_c 1000071 + func_abc.py func func_a 1005706 + func_abc.py func func_b 1010158 + - total - 3029815 + +Inclusive function elapsed times (us), + FILE TYPE NAME TOTAL + ascii.py func StreamWriter 2 + ascii.py func StreamReader 2 + site.py func setencoding 2 + UserDict.py func IterableUserDict 2 + __init__.py func CodecRegistryError 2 + ascii.py func getregentry 2 + site.py func aliasmbcs 2 + warnings.py func _OptionError 3 + types.py func _C 3 + site.py func sethelper 3 + warnings.py func _processoptions 3 + ascii.py func StreamConverter 3 + ascii.py func Codec 3 + site.py func _Helper 3 + site.py func setquit 4 + codecs.py func StreamWriter 4 + UserDict.py func __init__ 4 + site.py func _Printer 4 + codecs.py func Codec 4 + os.py func _Environ 4 + codecs.py func StreamRecoder 5 + codecs.py func StreamReaderWriter 6 + codecs.py func StreamReader 6 + copy_reg.py func constructor 7 + __init__.py func normalize_encoding 9 + site.py func __init__ 10 + warnings.py func simplefilter 11 + linecache.py func ? 11 + posixpath.py func split 13 + stat.py func ? 14 + stat.py func S_IFMT 14 + posixpath.py func dirname 22 + posixpath.py func normcase 29 + os.py func __init__ 31 + posixpath.py func basename 31 + UserDict.py func UserDict 32 + posixpath.py func exists 37 + aliases.py func ? 46 + copy_reg.py func pickle 66 + posixpath.py func isabs 87 + posixpath.py func join 105 + types.py func ? 109 + stat.py func S_ISDIR 113 + site.py func setcopyright 132 + ascii.py func ? 133 + os.py func _get_exports_list 136 + UserDict.py func DictMixin 184 + codecs.py func ? 210 + posixpath.py func normpath 231 + UserDict.py func ? 303 + __init__.py func search_function 350 + copy_reg.py func ? 377 + posixpath.py func isdir 399 + warnings.py func ? 530 + site.py func abs__file__ 540 + site.py func execsitecustomize 558 + posixpath.py func ? 560 + site.py func removeduppaths 565 + site.py func _init_pathinfo 899 + os.py func _exists 953 + posixpath.py func abspath 966 + site.py func makepath 1296 + __init__.py func ? 1548 + <string> func ? 1808 + site.py func addsitepackages 2471 + site.py func addpackage 2475 + os.py func ? 3879 + site.py func addsitedir 4026 + site.py func main 4532 + site.py func ? 9930 + func_abc.py func func_c 1000071 + func_abc.py func func_b 2010230 + func_abc.py func func_a 3015936 + func_abc.py func ? 3017454 + +Counts shows us how many times each different function was called, and how +many functions were called in total. + +The exclusive function elapsed times show the time that each function spent +processing code - while not in other functions. + +The inclusive function elapsed times show the time that each function spent +processing code, including the time spent in other calls. + +These elapsed times are the absolute time from when the function began to +when it completed - which includes off-CPU time due to other system events +such as I/O, scheduling, interrupts, etc. + diff --git a/cddl/contrib/dtracetoolkit/Examples/py_cpudist_example.txt b/cddl/contrib/dtracetoolkit/Examples/py_cpudist_example.txt new file mode 100644 index 000000000000..3272e904387f --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/py_cpudist_example.txt @@ -0,0 +1,966 @@ +The following are examples of py_cpudist.d. + +This script traces the on-CPU time of Python functions and prints a report +in the form of a histogram. Here it traces the example program, +Code/Python/func_slow.py + +# py_cpudist.d +Tracing... Hit Ctrl-C to end. +^C + +Exclusive function on-CPU times (us), + UserDict.py, func, IterableUserDict + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + __init__.py, func, CodecRegistryError + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + ascii.py, func, StreamReader + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + ascii.py, func, StreamWriter + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + ascii.py, func, getregentry + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + site.py, func, aliasmbcs + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + site.py, func, sethelper + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + types.py, func, _C + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + warnings.py, func, _OptionError + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + UserDict.py, func, __init__ + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ascii.py, func, Codec + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ascii.py, func, StreamConverter + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + codecs.py, func, Codec + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + codecs.py, func, StreamWriter + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + os.py, func, _Environ + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + posixpath.py, func, basename + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + posixpath.py, func, dirname + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, _Helper + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, _Printer + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, setencoding + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, setquit + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + warnings.py, func, _processoptions + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + copy_reg.py, func, constructor + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 2 | 0 + + codecs.py, func, StreamReader + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + codecs.py, func, StreamReaderWriter + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + codecs.py, func, StreamRecoder + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + func_slow.py, func, ? + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + os.py, func, __init__ + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + site.py, func, __init__ + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 4 | 0 + + stat.py, func, S_IFMT + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 2 | 0 + + warnings.py, func, simplefilter + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 1 + 4 |@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + __init__.py, func, normalize_encoding + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + copy_reg.py, func, pickle + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 4 |@@@@@@@@@@@@@ 1 + 8 | 0 + + linecache.py, func, ? + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + posixpath.py, func, split + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 8 | 0 + + stat.py, func, ? + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + stat.py, func, S_ISDIR + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 4 | 0 + + posixpath.py, func, normcase + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 14 + 2 | 0 + + UserDict.py, func, ? + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + UserDict.py, func, UserDict + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + site.py, func, _init_pathinfo + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + site.py, func, addsitepackages + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + site.py, func, setcopyright + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + <string>, func, ? + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@ 5 + 2 |@@@@@@@@@@@@@@@@@@ 5 + 4 |@@@@ 1 + 8 | 0 + + posixpath.py, func, isabs + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 20 + 2 |@@@@ 2 + 4 | 0 + + aliases.py, func, ? + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + ascii.py, func, ? + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + posixpath.py, func, exists + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + site.py, func, abs__file__ + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + site.py, func, removeduppaths + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + site.py, func, makepath + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 14 + 8 | 0 + + posixpath.py, func, join + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@ 12 + 2 |@@@@@@@@@@ 5 + 4 |@@@@ 2 + 8 | 0 + 16 | 0 + 32 |@@ 1 + 64 | 0 + + codecs.py, func, ? + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + site.py, func, main + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + types.py, func, ? + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + posixpath.py, func, abspath + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 22 + 8 | 0 + + UserDict.py, func, DictMixin + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + __init__.py, func, search_function + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + copy_reg.py, func, ? + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + os.py, func, _get_exports_list + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + posixpath.py, func, ? + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + warnings.py, func, ? + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + posixpath.py, func, isdir + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@ 1 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 32 | 0 + 64 |@@@@@ 1 + 128 | 0 + + posixpath.py, func, normpath + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@ 1 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 21 + 16 | 0 + + site.py, func, addpackage + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 128 |@@@@@@@@@@@@@ 1 + 256 | 0 + + site.py, func, addsitedir + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 256 | 0 + + site.py, func, ? + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + site.py, func, execsitecustomize + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + os.py, func, _exists + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 9 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 |@@@@ 1 + 1024 | 0 + + __init__.py, func, ? + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + os.py, func, ? + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + func_slow.py, func, func_a + value ------------- Distribution ------------- count + 65536 | 0 + 131072 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 262144 | 0 + + func_slow.py, func, func_b + value ------------- Distribution ------------- count + 131072 | 0 + 262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 524288 | 0 + + func_slow.py, func, func_c + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + +Inclusive function on-CPU times (us), + UserDict.py, func, IterableUserDict + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + __init__.py, func, CodecRegistryError + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + ascii.py, func, StreamReader + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + ascii.py, func, StreamWriter + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + ascii.py, func, getregentry + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + site.py, func, aliasmbcs + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + site.py, func, sethelper + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + types.py, func, _C + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + warnings.py, func, _OptionError + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + UserDict.py, func, __init__ + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ascii.py, func, Codec + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ascii.py, func, StreamConverter + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + codecs.py, func, Codec + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + codecs.py, func, StreamWriter + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + os.py, func, _Environ + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, _Helper + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, _Printer + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, setencoding + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + site.py, func, setquit + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + warnings.py, func, _processoptions + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + copy_reg.py, func, constructor + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 2 | 0 + + codecs.py, func, StreamReader + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + codecs.py, func, StreamReaderWriter + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + codecs.py, func, StreamRecoder + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + site.py, func, __init__ + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 4 | 0 + + stat.py, func, S_IFMT + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 2 | 0 + + warnings.py, func, simplefilter + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 1 + 4 |@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + __init__.py, func, normalize_encoding + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + linecache.py, func, ? + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + os.py, func, __init__ + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + posixpath.py, func, basename + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + posixpath.py, func, dirname + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + posixpath.py, func, split + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 8 | 0 + + stat.py, func, ? + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + copy_reg.py, func, pickle + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 8 | 0 + + posixpath.py, func, normcase + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 14 + 2 | 0 + + UserDict.py, func, UserDict + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + stat.py, func, S_ISDIR + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 4 |@@@@@@@@@@@@@ 2 + 8 | 0 + + posixpath.py, func, isabs + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 20 + 2 |@@@@ 2 + 4 | 0 + + aliases.py, func, ? + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + ascii.py, func, ? + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + posixpath.py, func, exists + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + site.py, func, setcopyright + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + posixpath.py, func, join + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@ 12 + 2 |@@@@@@@@@@ 5 + 4 |@@@@ 2 + 8 | 0 + 16 | 0 + 32 |@@ 1 + 64 | 0 + + codecs.py, func, ? + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + types.py, func, ? + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + UserDict.py, func, ? + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + UserDict.py, func, DictMixin + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + __init__.py, func, search_function + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + os.py, func, _get_exports_list + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + posixpath.py, func, ? + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + site.py, func, abs__file__ + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + site.py, func, removeduppaths + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + warnings.py, func, ? + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + + posixpath.py, func, normpath + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@ 1 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 21 + 16 | 0 + + posixpath.py, func, isdir + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 7 + 32 | 0 + 64 |@@@@@ 1 + 128 | 0 + + posixpath.py, func, abspath + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 17 + 16 |@@@@@@@@@ 5 + 32 | 0 + + copy_reg.py, func, ? + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + site.py, func, _init_pathinfo + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + site.py, func, makepath + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 13 + 32 | 0 + 64 |@@@ 1 + 128 | 0 + + site.py, func, execsitecustomize + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + <string>, func, ? + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@ 5 + 2 |@@@@@@@@@@@@@@@@@@ 5 + 4 | 0 + 8 | 0 + 16 | 0 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 |@@@@ 1 + 1024 | 0 + + os.py, func, _exists + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 8 + 32 |@@@@ 1 + 64 | 0 + 128 | 0 + 256 | 0 + 512 |@@@@ 1 + 1024 | 0 + + site.py, func, addpackage + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 256 | 0 + 512 |@@@@@@@@@@@@@ 1 + 1024 | 0 + + __init__.py, func, ? + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + site.py, func, addsitepackages + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + site.py, func, addsitedir + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@ 1 + 1024 |@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + os.py, func, ? + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + site.py, func, main + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + site.py, func, ? + value ------------- Distribution ------------- count + 2048 | 0 + 4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8192 | 0 + + func_slow.py, func, func_c + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + func_slow.py, func, ? + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + func_slow.py, func, func_a + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + func_slow.py, func, func_b + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + +The first section, Exclusive function on-CPU times, shows us the time spent +on-CPU by various functions, not including time spent in subroutines. You can +see here that func_a had one instance of being on-CPU between 0.13 seconds and +0.25 seconds. + +The second section, Inclusive function on-CPU times, shows us the time spent +on-CPU by various functions, including that time spent in subroutines called +by those functions. You can see that here func_a had an instance of being +on-CPU between 1.0 seconds and 2.1 seconds. + +It is important to pay close attention to the third column, "count" as this +will indicate if there were any instances in a particular timeframe, even if +the number is too small to show up on the histogram clearly. + diff --git a/cddl/contrib/dtracetoolkit/Examples/py_cputime_example.txt b/cddl/contrib/dtracetoolkit/Examples/py_cputime_example.txt new file mode 100644 index 000000000000..2f25922adc2a --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/py_cputime_example.txt @@ -0,0 +1,262 @@ +The following are examples of py_cputime.d. + +This script traces the on-CPU time of JavaScript functions and prints a +report. Here it traces the example program, Code/Python/func_slow.py + +# py_cputime.d +Tracing... Hit Ctrl-C to end. +^C + +Count, + FILE TYPE NAME COUNT + UserDict.py func ? 1 + UserDict.py func DictMixin 1 + UserDict.py func IterableUserDict 1 + UserDict.py func UserDict 1 + UserDict.py func __init__ 1 + __init__.py func ? 1 + __init__.py func CodecRegistryError 1 + __init__.py func normalize_encoding 1 + __init__.py func search_function 1 + aliases.py func ? 1 + ascii.py func ? 1 + ascii.py func Codec 1 + ascii.py func StreamConverter 1 + ascii.py func StreamReader 1 + ascii.py func StreamWriter 1 + ascii.py func getregentry 1 + codecs.py func ? 1 + codecs.py func Codec 1 + codecs.py func StreamReader 1 + codecs.py func StreamReaderWriter 1 + codecs.py func StreamRecoder 1 + codecs.py func StreamWriter 1 + copy_reg.py func ? 1 + func_slow.py func ? 1 + func_slow.py func func_a 1 + func_slow.py func func_b 1 + func_slow.py func func_c 1 + linecache.py func ? 1 + os.py func ? 1 + os.py func _Environ 1 + os.py func __init__ 1 + os.py func _get_exports_list 1 + posixpath.py func ? 1 + posixpath.py func basename 1 + posixpath.py func dirname 1 + site.py func ? 1 + site.py func _Helper 1 + site.py func _Printer 1 + site.py func _init_pathinfo 1 + site.py func abs__file__ 1 + site.py func addsitepackages 1 + site.py func aliasmbcs 1 + site.py func execsitecustomize 1 + site.py func main 1 + site.py func removeduppaths 1 + site.py func setcopyright 1 + site.py func setencoding 1 + site.py func sethelper 1 + site.py func setquit 1 + stat.py func ? 1 + types.py func ? 1 + types.py func _C 1 + warnings.py func ? 1 + warnings.py func _OptionError 1 + warnings.py func _processoptions 1 + posixpath.py func exists 2 + posixpath.py func split 2 + site.py func addsitedir 2 + warnings.py func simplefilter 2 + copy_reg.py func constructor 3 + copy_reg.py func pickle 3 + site.py func __init__ 3 + site.py func addpackage 3 + stat.py func S_IFMT 6 + stat.py func S_ISDIR 6 + posixpath.py func isdir 8 + os.py func _exists 10 + <string> func ? 11 + posixpath.py func normcase 14 + site.py func makepath 14 + posixpath.py func join 20 + posixpath.py func abspath 22 + posixpath.py func isabs 22 + posixpath.py func normpath 22 + - total - 230 + +Exclusive function on-CPU times (us), + FILE TYPE NAME TOTAL + ascii.py func StreamWriter 1 + __init__.py func CodecRegistryError 1 + ascii.py func StreamReader 1 + site.py func setencoding 1 + warnings.py func _OptionError 1 + UserDict.py func IterableUserDict 1 + site.py func aliasmbcs 1 + warnings.py func _processoptions 1 + types.py func _C 1 + ascii.py func getregentry 1 + site.py func _Helper 2 + ascii.py func Codec 2 + ascii.py func StreamConverter 2 + site.py func sethelper 2 + codecs.py func Codec 2 + UserDict.py func __init__ 3 + posixpath.py func dirname 3 + posixpath.py func basename 3 + site.py func _Printer 3 + os.py func _Environ 3 + codecs.py func StreamWriter 3 + site.py func setquit 3 + copy_reg.py func constructor 3 + codecs.py func StreamRecoder 4 + codecs.py func StreamReaderWriter 5 + codecs.py func StreamReader 5 + os.py func __init__ 6 + func_slow.py func ? 6 + __init__.py func normalize_encoding 7 + site.py func __init__ 7 + linecache.py func ? 7 + warnings.py func simplefilter 7 + stat.py func S_IFMT 9 + stat.py func ? 10 + copy_reg.py func pickle 12 + posixpath.py func split 12 + posixpath.py func normcase 15 + stat.py func S_ISDIR 17 + site.py func addsitepackages 20 + UserDict.py func ? 20 + site.py func setcopyright 23 + site.py func main 24 + <string> func ? 28 + UserDict.py func UserDict 31 + site.py func _init_pathinfo 33 + posixpath.py func exists 35 + ascii.py func ? 38 + posixpath.py func isabs 42 + aliases.py func ? 43 + site.py func removeduppaths 51 + site.py func abs__file__ 56 + codecs.py func ? 75 + types.py func ? 83 + posixpath.py func join 85 + site.py func makepath 97 + posixpath.py func abspath 99 + os.py func _get_exports_list 132 + __init__.py func search_function 142 + warnings.py func ? 171 + UserDict.py func DictMixin 182 + posixpath.py func ? 192 + copy_reg.py func ? 196 + posixpath.py func normpath 209 + posixpath.py func isdir 255 + site.py func addpackage 375 + site.py func addsitedir 506 + site.py func execsitecustomize 540 + site.py func ? 725 + os.py func _exists 802 + os.py func ? 1138 + __init__.py func ? 1199 + func_slow.py func func_a 229669 + func_slow.py func func_b 456371 + func_slow.py func func_c 686056 + - total - 1379951 + +Inclusive function on-CPU times (us), + FILE TYPE NAME TOTAL + ascii.py func StreamWriter 1 + __init__.py func CodecRegistryError 1 + ascii.py func StreamReader 1 + site.py func setencoding 1 + warnings.py func _OptionError 1 + UserDict.py func IterableUserDict 1 + site.py func aliasmbcs 1 + warnings.py func _processoptions 1 + types.py func _C 1 + ascii.py func getregentry 1 + site.py func _Helper 2 + ascii.py func Codec 2 + ascii.py func StreamConverter 2 + site.py func sethelper 2 + codecs.py func Codec 2 + UserDict.py func __init__ 3 + site.py func _Printer 3 + os.py func _Environ 3 + codecs.py func StreamWriter 3 + site.py func setquit 3 + copy_reg.py func constructor 3 + codecs.py func StreamRecoder 4 + codecs.py func StreamReaderWriter 5 + codecs.py func StreamReader 5 + __init__.py func normalize_encoding 7 + site.py func __init__ 7 + linecache.py func ? 7 + warnings.py func simplefilter 7 + stat.py func S_IFMT 9 + os.py func __init__ 9 + posixpath.py func basename 9 + posixpath.py func dirname 10 + stat.py func ? 10 + posixpath.py func split 12 + posixpath.py func normcase 15 + copy_reg.py func pickle 15 + stat.py func S_ISDIR 26 + UserDict.py func UserDict 31 + posixpath.py func exists 35 + posixpath.py func isabs 42 + aliases.py func ? 43 + site.py func setcopyright 44 + ascii.py func ? 45 + types.py func ? 85 + posixpath.py func join 85 + codecs.py func ? 97 + os.py func _get_exports_list 132 + site.py func removeduppaths 171 + UserDict.py func DictMixin 182 + site.py func abs__file__ 184 + warnings.py func ? 190 + __init__.py func search_function 196 + posixpath.py func ? 202 + posixpath.py func normpath 209 + UserDict.py func ? 235 + posixpath.py func isdir 281 + copy_reg.py func ? 288 + posixpath.py func abspath 351 + site.py func _init_pathinfo 392 + site.py func makepath 395 + site.py func execsitecustomize 540 + os.py func _exists 819 + <string> func ? 973 + __init__.py func ? 1341 + site.py func addpackage 1470 + site.py func addsitepackages 1562 + site.py func addsitedir 2420 + site.py func main 2546 + os.py func ? 2839 + site.py func ? 6118 + func_slow.py func func_c 686056 + func_slow.py func func_b 1142427 + func_slow.py func func_a 1372097 + func_slow.py func ? 1372104 + +You can see the results are printed in three sections. + +The first section reports how many times each function was called. + +The exclusive function on-CPU times shows, amongst other results that func_a +spent around 0.22 seconds on-CPU. This times excludes time spent in +other functions. + +The inclusive function on-CPU times show that func_a spent around 1.4 +seconds on-CPU. This includes the time spent in other functions called. + +These on-CPU times are the time the thread spent running on a CPU, from when +the subroutine began to when it completed. This does not include time +spent off-CPU time such as sleeping for I/O or waiting for scheduling. + +On-CPU times are useful for showing who is causing the CPUs to be busy. +See Notes/ALLoncpu_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive subroutine time. + diff --git a/cddl/contrib/dtracetoolkit/Examples/py_flow_example.txt b/cddl/contrib/dtracetoolkit/Examples/py_flow_example.txt new file mode 100644 index 000000000000..d62269e3b03d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/py_flow_example.txt @@ -0,0 +1,485 @@ +The following are examples of py_flow.d. + +This is a simple script to trace the flow of Python functions. +Here it traces the example program, Code/Python/func_abc.py + +# py_flow.d + C TIME(us) FILE -- FUNC + 0 3064371810154 site.py -> ? + 0 3064371830069 os.py -> ? + 0 3064371840076 posixpath.py -> ? + 0 3064371840298 stat.py -> ? + 0 3064371840319 stat.py <- ? + 0 3064371840345 posixpath.py <- ? + 0 3064371840364 os.py -> _get_exports_list + 0 3064371840510 os.py <- _get_exports_list + 0 3064371849994 UserDict.py -> ? + 0 3064371850011 UserDict.py -> UserDict + 0 3064371850051 UserDict.py <- UserDict + 0 3064371850067 UserDict.py -> IterableUserDict + 0 3064371850075 UserDict.py <- IterableUserDict + 0 3064371850088 UserDict.py -> DictMixin + 0 3064371850291 UserDict.py <- DictMixin + 0 3064371850300 UserDict.py <- ? + 0 3064371850320 os.py -> _Environ + 0 3064371850330 os.py <- _Environ + 0 3064371850342 os.py -> __init__ + 0 3064371850353 UserDict.py -> __init__ + 0 3064371850363 UserDict.py <- __init__ + 0 3064371850372 os.py <- __init__ + 0 3064371850381 os.py -> _exists + 0 3064371851137 <string> -> ? + 0 3064371851146 <string> <- ? + 0 3064371851155 os.py <- _exists + 0 3064371851162 os.py -> _exists + 0 3064371851186 <string> -> ? + 0 3064371851195 <string> <- ? + 0 3064371851213 os.py <- _exists + 0 3064371851220 os.py -> _exists + 0 3064371851242 <string> -> ? + 0 3064371851249 <string> <- ? + 0 3064371851257 os.py <- _exists + 0 3064371851266 os.py -> _exists + 0 3064371851286 <string> -> ? + 0 3064371851293 <string> <- ? + 0 3064371851300 os.py <- _exists + 0 3064371851310 os.py -> _exists + 0 3064371851330 <string> -> ? + 0 3064371851337 <string> <- ? + 0 3064371851344 os.py <- _exists + 0 3064371851354 os.py -> _exists + 0 3064371851374 <string> -> ? + 0 3064371851381 <string> <- ? + 0 3064371851388 os.py <- _exists + 0 3064371851395 os.py -> _exists + 0 3064371851415 <string> -> ? + 0 3064371851423 <string> <- ? + 0 3064371851436 os.py <- _exists + 0 3064371851445 os.py -> _exists + 0 3064371851465 <string> -> ? + 0 3064371851473 <string> <- ? + 0 3064371851485 os.py <- _exists + 0 3064371851493 os.py -> _exists + 0 3064371851514 <string> -> ? + 0 3064371851522 <string> <- ? + 0 3064371851534 os.py <- _exists + 0 3064371851785 copy_reg.py -> ? + 0 3064371851996 types.py -> ? + 0 3064371852063 types.py -> _C + 0 3064371852073 types.py <- _C + 0 3064371852108 types.py <- ? + 0 3064371852129 copy_reg.py -> pickle + 0 3064371852139 copy_reg.py -> constructor + 0 3064371852147 copy_reg.py <- constructor + 0 3064371852155 copy_reg.py <- pickle + 0 3064371852166 copy_reg.py <- ? + 0 3064371852179 copy_reg.py -> pickle + 0 3064371852188 copy_reg.py -> constructor + 0 3064371852196 copy_reg.py <- constructor + 0 3064371852204 copy_reg.py <- pickle + 0 3064371852212 copy_reg.py -> pickle + 0 3064371852221 copy_reg.py -> constructor + 0 3064371852229 copy_reg.py <- constructor + 0 3064371852236 copy_reg.py <- pickle + 0 3064371852244 os.py -> _exists + 0 3064371852269 <string> -> ? + 0 3064371852277 <string> <- ? + 0 3064371852289 os.py <- _exists + 0 3064371852297 os.py <- ? + 0 3064371852330 site.py -> _Printer + 0 3064371852340 site.py <- _Printer + 0 3064371852376 site.py -> _Helper + 0 3064371852384 site.py <- _Helper + 0 3064371852416 site.py -> main + 0 3064371852423 site.py -> abs__file__ + 0 3064371852434 posixpath.py -> abspath + 0 3064371852442 posixpath.py -> isabs + 0 3064371852452 posixpath.py <- isabs + 0 3064371852460 posixpath.py -> normpath + 0 3064371852482 posixpath.py <- normpath + 0 3064371852490 posixpath.py <- abspath + 0 3064371852504 posixpath.py -> abspath + 0 3064371852511 posixpath.py -> isabs + 0 3064371852520 posixpath.py <- isabs + 0 3064371852527 posixpath.py -> normpath + 0 3064371852543 posixpath.py <- normpath + 0 3064371852552 posixpath.py <- abspath + 0 3064371852560 posixpath.py -> abspath + 0 3064371852567 posixpath.py -> isabs + 0 3064371852576 posixpath.py <- isabs + 0 3064371852583 posixpath.py -> normpath + 0 3064371852598 posixpath.py <- normpath + 0 3064371852607 posixpath.py <- abspath + 0 3064371852615 posixpath.py -> abspath + 0 3064371852622 posixpath.py -> isabs + 0 3064371852631 posixpath.py <- isabs + 0 3064371852638 posixpath.py -> normpath + 0 3064371852653 posixpath.py <- normpath + 0 3064371852661 posixpath.py <- abspath + 0 3064371852674 posixpath.py -> abspath + 0 3064371852682 posixpath.py -> isabs + 0 3064371852690 posixpath.py <- isabs + 0 3064371852697 posixpath.py -> normpath + 0 3064371852713 posixpath.py <- normpath + 0 3064371852721 posixpath.py <- abspath + 0 3064371852741 posixpath.py -> abspath + 0 3064371852748 posixpath.py -> isabs + 0 3064371852757 posixpath.py <- isabs + 0 3064371852764 posixpath.py -> normpath + 0 3064371852779 posixpath.py <- normpath + 0 3064371852787 posixpath.py <- abspath + 0 3064371852804 posixpath.py -> abspath + 0 3064371852811 posixpath.py -> isabs + 0 3064371852819 posixpath.py <- isabs + 0 3064371852826 posixpath.py -> normpath + 0 3064371852842 posixpath.py <- normpath + 0 3064371852850 posixpath.py <- abspath + 0 3064371852858 posixpath.py -> abspath + 0 3064371852865 posixpath.py -> isabs + 0 3064371852874 posixpath.py <- isabs + 0 3064371852881 posixpath.py -> normpath + 0 3064371852896 posixpath.py <- normpath + 0 3064371852904 posixpath.py <- abspath + 0 3064371852915 site.py <- abs__file__ + 0 3064371852922 site.py -> removeduppaths + 0 3064371852931 site.py -> makepath + 0 3064371852940 posixpath.py -> join + 0 3064371852948 posixpath.py <- join + 0 3064371852955 posixpath.py -> abspath + 0 3064371852963 posixpath.py -> isabs + 0 3064371852972 posixpath.py <- isabs + 0 3064371852980 posixpath.py -> normpath + 0 3064371852995 posixpath.py <- normpath + 0 3064371853002 posixpath.py <- abspath + 0 3064371853010 posixpath.py -> normcase + 0 3064371853018 posixpath.py <- normcase + 0 3064371853025 site.py <- makepath + 0 3064371853065 site.py -> makepath + 0 3064371853073 posixpath.py -> join + 0 3064371853081 posixpath.py <- join + 0 3064371853088 posixpath.py -> abspath + 0 3064371853096 posixpath.py -> isabs + 0 3064371853104 posixpath.py <- isabs + 0 3064371853111 posixpath.py -> normpath + 0 3064371853126 posixpath.py <- normpath + 0 3064371853134 posixpath.py <- abspath + 0 3064371853142 posixpath.py -> normcase + 0 3064371853150 posixpath.py <- normcase + 0 3064371853157 site.py <- makepath + 0 3064371853165 site.py -> makepath + 0 3064371853173 posixpath.py -> join + 0 3064371853181 posixpath.py <- join + 0 3064371853188 posixpath.py -> abspath + 0 3064371853195 posixpath.py -> isabs + 0 3064371853203 posixpath.py <- isabs + 0 3064371853210 posixpath.py -> normpath + 0 3064371853226 posixpath.py <- normpath + 0 3064371853234 posixpath.py <- abspath + 0 3064371853241 posixpath.py -> normcase + 0 3064371853249 posixpath.py <- normcase + 0 3064371853256 site.py <- makepath + 0 3064371853265 site.py -> makepath + 0 3064371853272 posixpath.py -> join + 0 3064371853280 posixpath.py <- join + 0 3064371853287 posixpath.py -> abspath + 0 3064371853294 posixpath.py -> isabs + 0 3064371853303 posixpath.py <- isabs + 0 3064371853310 posixpath.py -> normpath + 0 3064371853325 posixpath.py <- normpath + 0 3064371853333 posixpath.py <- abspath + 0 3064371853341 posixpath.py -> normcase + 0 3064371853348 posixpath.py <- normcase + 0 3064371853356 site.py <- makepath + 0 3064371853364 site.py -> makepath + 0 3064371853372 posixpath.py -> join + 0 3064371853380 posixpath.py <- join + 0 3064371853387 posixpath.py -> abspath + 0 3064371853394 posixpath.py -> isabs + 0 3064371853402 posixpath.py <- isabs + 0 3064371853409 posixpath.py -> normpath + 0 3064371853425 posixpath.py <- normpath + 0 3064371853433 posixpath.py <- abspath + 0 3064371853440 posixpath.py -> normcase + 0 3064371853448 posixpath.py <- normcase + 0 3064371853455 site.py <- makepath + 0 3064371853466 site.py <- removeduppaths + 0 3064371853476 posixpath.py -> basename + 0 3064371853484 posixpath.py -> split + 0 3064371853498 posixpath.py <- split + 0 3064371853505 posixpath.py <- basename + 0 3064371853513 site.py -> addsitepackages + 0 3064371853524 posixpath.py -> join + 0 3064371853538 posixpath.py <- join + 0 3064371853546 posixpath.py -> join + 0 3064371853557 posixpath.py <- join + 0 3064371853566 posixpath.py -> isdir + 0 3064371853597 stat.py -> S_ISDIR + 0 3064371853604 stat.py -> S_IFMT + 0 3064371853612 stat.py <- S_IFMT + 0 3064371853620 stat.py <- S_ISDIR + 0 3064371853627 posixpath.py <- isdir + 0 3064371853636 site.py -> addsitedir + 0 3064371853643 site.py -> makepath + 0 3064371853651 posixpath.py -> join + 0 3064371853659 posixpath.py <- join + 0 3064371853666 posixpath.py -> abspath + 0 3064371853674 posixpath.py -> isabs + 0 3064371853683 posixpath.py <- isabs + 0 3064371853691 posixpath.py -> normpath + 0 3064371853707 posixpath.py <- normpath + 0 3064371853715 posixpath.py <- abspath + 0 3064371853723 posixpath.py -> normcase + 0 3064371853730 posixpath.py <- normcase + 0 3064371853738 site.py <- makepath + 0 3064371853938 site.py -> addpackage + 0 3064371853948 posixpath.py -> join + 0 3064371853958 posixpath.py <- join + 0 3064371854087 <string> -> ? + 0 3064371854098 site.py -> addsitedir + 0 3064371854106 site.py -> _init_pathinfo + 0 3064371854115 posixpath.py -> isdir + 0 3064371854195 posixpath.py <- isdir + 0 3064371854204 posixpath.py -> isdir + 0 3064371854224 stat.py -> S_ISDIR + 0 3064371854232 stat.py -> S_IFMT + 0 3064371854240 stat.py <- S_IFMT + 0 3064371854247 stat.py <- S_ISDIR + 0 3064371854254 posixpath.py <- isdir + 0 3064371854262 site.py -> makepath + 0 3064371854271 posixpath.py -> join + 0 3064371854279 posixpath.py <- join + 0 3064371854286 posixpath.py -> abspath + 0 3064371854293 posixpath.py -> isabs + 0 3064371854302 posixpath.py <- isabs + 0 3064371854309 posixpath.py -> normpath + 0 3064371854325 posixpath.py <- normpath + 0 3064371854333 posixpath.py <- abspath + 0 3064371854341 posixpath.py -> normcase + 0 3064371854349 posixpath.py <- normcase + 0 3064371854356 site.py <- makepath + 0 3064371854364 posixpath.py -> isdir + 0 3064371854386 stat.py -> S_ISDIR + 0 3064371854393 stat.py -> S_IFMT + 0 3064371854400 stat.py <- S_IFMT + 0 3064371854408 stat.py <- S_ISDIR + 0 3064371854415 posixpath.py <- isdir + 0 3064371854423 site.py -> makepath + 0 3064371854431 posixpath.py -> join + 0 3064371854438 posixpath.py <- join + 0 3064371854446 posixpath.py -> abspath + 0 3064371854453 posixpath.py -> isabs + 0 3064371854461 posixpath.py <- isabs + 0 3064371854469 posixpath.py -> normpath + 0 3064371854485 posixpath.py <- normpath + 0 3064371854493 posixpath.py <- abspath + 0 3064371854500 posixpath.py -> normcase + 0 3064371854508 posixpath.py <- normcase + 0 3064371854516 site.py <- makepath + 0 3064371854524 posixpath.py -> isdir + 0 3064371854556 stat.py -> S_ISDIR + 0 3064371854563 stat.py -> S_IFMT + 0 3064371854571 stat.py <- S_IFMT + 0 3064371854578 stat.py <- S_ISDIR + 0 3064371854585 posixpath.py <- isdir + 0 3064371854593 site.py -> makepath + 0 3064371854601 posixpath.py -> join + 0 3064371854609 posixpath.py <- join + 0 3064371854616 posixpath.py -> abspath + 0 3064371854624 posixpath.py -> isabs + 0 3064371854632 posixpath.py <- isabs + 0 3064371854639 posixpath.py -> normpath + 0 3064371854655 posixpath.py <- normpath + 0 3064371854663 posixpath.py <- abspath + 0 3064371854671 posixpath.py -> normcase + 0 3064371854679 posixpath.py <- normcase + 0 3064371854686 site.py <- makepath + 0 3064371854694 posixpath.py -> isdir + 0 3064371854715 stat.py -> S_ISDIR + 0 3064371854722 stat.py -> S_IFMT + 0 3064371854730 stat.py <- S_IFMT + 0 3064371854737 stat.py <- S_ISDIR + 0 3064371854744 posixpath.py <- isdir + 0 3064371854752 site.py -> makepath + 0 3064371854759 posixpath.py -> join + 0 3064371854767 posixpath.py <- join + 0 3064371854774 posixpath.py -> abspath + 0 3064371854782 posixpath.py -> isabs + 0 3064371854790 posixpath.py <- isabs + 0 3064371854797 posixpath.py -> normpath + 0 3064371854813 posixpath.py <- normpath + 0 3064371854821 posixpath.py <- abspath + 0 3064371854829 posixpath.py -> normcase + 0 3064371854837 posixpath.py <- normcase + 0 3064371854844 site.py <- makepath + 0 3064371854852 posixpath.py -> isdir + 0 3064371854872 stat.py -> S_ISDIR + 0 3064371854879 stat.py -> S_IFMT + 0 3064371854887 stat.py <- S_IFMT + 0 3064371854894 stat.py <- S_ISDIR + 0 3064371854901 posixpath.py <- isdir + 0 3064371854909 site.py -> makepath + 0 3064371854917 posixpath.py -> join + 0 3064371854925 posixpath.py <- join + 0 3064371854932 posixpath.py -> abspath + 0 3064371854939 posixpath.py -> isabs + 0 3064371854947 posixpath.py <- isabs + 0 3064371854954 posixpath.py -> normpath + 0 3064371854970 posixpath.py <- normpath + 0 3064371854978 posixpath.py <- abspath + 0 3064371854986 posixpath.py -> normcase + 0 3064371854994 posixpath.py <- normcase + 0 3064371855001 site.py <- makepath + 0 3064371855009 site.py <- _init_pathinfo + 0 3064371855016 site.py -> makepath + 0 3064371855024 posixpath.py -> join + 0 3064371855032 posixpath.py <- join + 0 3064371855039 posixpath.py -> abspath + 0 3064371855047 posixpath.py -> isabs + 0 3064371855055 posixpath.py <- isabs + 0 3064371855063 posixpath.py -> normpath + 0 3064371855078 posixpath.py <- normpath + 0 3064371855086 posixpath.py <- abspath + 0 3064371855094 posixpath.py -> normcase + 0 3064371855101 posixpath.py <- normcase + 0 3064371855144 site.py <- makepath + 0 3064371855318 site.py -> addpackage + 0 3064371855327 posixpath.py -> join + 0 3064371855337 posixpath.py <- join + 0 3064371855411 site.py -> makepath + 0 3064371855420 posixpath.py -> join + 0 3064371855430 posixpath.py <- join + 0 3064371855437 posixpath.py -> abspath + 0 3064371855445 posixpath.py -> isabs + 0 3064371855453 posixpath.py <- isabs + 0 3064371855460 posixpath.py -> normpath + 0 3064371855477 posixpath.py <- normpath + 0 3064371855485 posixpath.py <- abspath + 0 3064371855493 posixpath.py -> normcase + 0 3064371855501 posixpath.py <- normcase + 0 3064371855509 site.py <- makepath + 0 3064371855517 posixpath.py -> exists + 0 3064371855542 posixpath.py <- exists + 0 3064371855591 site.py <- addpackage + 0 3064371855611 site.py -> addpackage + 0 3064371855618 posixpath.py -> join + 0 3064371855628 posixpath.py <- join + 0 3064371855683 site.py -> makepath + 0 3064371855692 posixpath.py -> join + 0 3064371855739 posixpath.py <- join + 0 3064371855747 posixpath.py -> abspath + 0 3064371855754 posixpath.py -> isabs + 0 3064371855763 posixpath.py <- isabs + 0 3064371855770 posixpath.py -> normpath + 0 3064371855788 posixpath.py <- normpath + 0 3064371855796 posixpath.py <- abspath + 0 3064371855803 posixpath.py -> normcase + 0 3064371855811 posixpath.py <- normcase + 0 3064371855818 site.py <- makepath + 0 3064371855826 posixpath.py -> exists + 0 3064371855851 posixpath.py <- exists + 0 3064371855880 site.py <- addpackage + 0 3064371855892 site.py <- addsitedir + 0 3064371855900 <string> <- ? + 0 3064371855915 site.py <- addpackage + 0 3064371855923 site.py <- addsitedir + 0 3064371855932 posixpath.py -> isdir + 0 3064371855965 posixpath.py <- isdir + 0 3064371855973 site.py <- addsitepackages + 0 3064371855982 site.py -> setquit + 0 3064371855993 site.py <- setquit + 0 3064371856000 site.py -> setcopyright + 0 3064371856009 site.py -> __init__ + 0 3064371856019 site.py <- __init__ + 0 3064371856028 site.py -> __init__ + 0 3064371856037 site.py <- __init__ + 0 3064371856045 posixpath.py -> dirname + 0 3064371856052 posixpath.py -> split + 0 3064371856065 posixpath.py <- split + 0 3064371856073 posixpath.py <- dirname + 0 3064371856085 posixpath.py -> join + 0 3064371856096 posixpath.py <- join + 0 3064371856104 site.py -> __init__ + 0 3064371856113 site.py <- __init__ + 0 3064371856121 site.py <- setcopyright + 0 3064371856128 site.py -> sethelper + 0 3064371856136 site.py <- sethelper + 0 3064371856143 site.py -> aliasmbcs + 0 3064371856151 site.py <- aliasmbcs + 0 3064371856158 site.py -> setencoding + 0 3064371856166 site.py <- setencoding + 0 3064371856173 site.py -> execsitecustomize + 0 3064371871773 site.py <- execsitecustomize + 0 3064371871794 site.py <- main + 0 3064371871805 site.py <- ? + 0 3064371872141 warnings.py -> ? + 0 306437187232e linecache.py -> ? + 0 3064371872336 linecache.py <- ? + 0 3064371872352 warnings.py -> _OptionError + 0 3064371872361 warnings.py <- _OptionError + 0 3064371872378 warnings.py -> _processoptions + 0 3064371872387 warnings.py <- _processoptions + 0 3064371872397 warnings.py -> simplefilter + 0 3064371872410 warnings.py <- simplefilter + 0 3064371872418 warnings.py -> simplefilter + 0 3064371872428 warnings.py <- simplefilter + 0 3064371872436 warnings.py <- ? + 0 3064371886557 __init__.py -> ? + 0 3064371891761 codecs.py -> ? + 0 3064371891836 codecs.py -> Codec + 0 3064371891848 codecs.py <- Codec + 0 3064371891864 codecs.py -> StreamWriter + 0 3064371891874 codecs.py <- StreamWriter + 0 3064371891885 codecs.py -> StreamReader + 0 3064371891897 codecs.py <- StreamReader + 0 3064371891907 codecs.py -> StreamReaderWriter + 0 3064371891918 codecs.py <- StreamReaderWriter + 0 3064371891926 codecs.py -> StreamRecoder + 0 3064371891938 codecs.py <- StreamRecoder + 0 3064371891953 codecs.py <- ? + 0 3064371902521 aliases.py -> ? + 0 3064371902580 aliases.py <- ? + 0 3064371902605 __init__.py -> CodecRegistryError + 0 3064371902614 __init__.py <- CodecRegistryError + 0 3064371902636 __init__.py <- ? + 0 3064371902655 __init__.py -> search_function + 0 3064371902666 __init__.py -> normalize_encoding + 0 3064371902682 __init__.py <- normalize_encoding + 0 3064371902888 ascii.py -> ? + 0 3064371902900 ascii.py -> Codec + 0 3064371902909 ascii.py <- Codec + 0 3064371902922 ascii.py -> StreamWriter + 0 3064371902930 ascii.py <- StreamWriter + 0 3064371902941 ascii.py -> StreamReader + 0 3064371902949 ascii.py <- StreamReader + 0 3064371902972 ascii.py -> StreamConverter + 0 3064371902981 ascii.py <- StreamConverter + 0 3064371902993 ascii.py <- ? + 0 3064371903009 ascii.py -> getregentry + 0 3064371903018 ascii.py <- getregentry + 0 3064371903044 __init__.py <- search_function + 0 3064371903414 func_abc.py -> ? + 0 3064371933251 func_abc.py -> func_a + 0 3064372940696 func_abc.py -> func_b + 0 3064373950608 func_abc.py -> func_c + 0 3064374960497 func_abc.py <- func_c + 0 3064374960512 func_abc.py <- func_b + 0 3064374960520 func_abc.py <- func_a + 0 3064374960528 func_abc.py <- ? +^C + +Here we can see that Python has done extensive pre-processing before it runs +the Code/Python/func_abc.py program itself. + +This shows which function is calling which - the output above ends by +showing that func_a called func_b which in turn called func_c etc. + +The TIME(us) column shows time from boot in microseconds. + +The FILE column shows the file that was being executed. + +If the output looks strange, check the CPU "C" column - if it changes, +then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for +details and suggested workarounds. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/py_flowinfo_example.txt b/cddl/contrib/dtracetoolkit/Examples/py_flowinfo_example.txt new file mode 100644 index 000000000000..f93dc09b89d8 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/py_flowinfo_example.txt @@ -0,0 +1,485 @@ +Following are examples of py_flowinfo.d. + +This is a simple script to trace the flow of Python functions. Here it traces +the flow into and out of libraries and the example program, +Code/Python/func_abc.py. + +# py_flowinfo.d +C PID DELTA(us) FILE:LINE TYPE -- FUNC +0 145424 3 site.py:58 func -> ? +0 145424 1375 os.py:22 func -> ? +0 145424 692 posixpath.py:11 func -> ? +0 145424 184 stat.py:4 func -> ? +0 145424 21 stat.py:86 func <- ? +0 145424 32 posixpath.py:454 func <- ? +0 145424 18 os.py:34 func -> _get_exports_list +0 145424 135 os.py:38 func <- _get_exports_list +0 145424 261 UserDict.py:1 func -> ? +0 145424 11 UserDict.py:3 func -> UserDict +0 145424 36 UserDict.py:71 func <- UserDict +0 145424 16 UserDict.py:73 func -> IterableUserDict +0 145424 9 UserDict.py:74 func <- IterableUserDict +0 145424 13 UserDict.py:77 func -> DictMixin +0 145424 174 UserDict.py:169 func <- DictMixin +0 145424 11 UserDict.py:77 func <- ? +0 145424 17 os.py:458 func -> _Environ +0 145424 11 os.py:489 func <- _Environ +0 145424 13 os.py:459 func -> __init__ +0 145424 11 UserDict.py:4 func -> __init__ +0 145424 11 UserDict.py:9 func <- __init__ +0 145424 10 os.py:461 func <- __init__ +0 145424 11 os.py:501 func -> _exists +0 145424 604 <string>:0 func -> ? +0 145424 10 <string>:0 func <- ? +0 145424 9 os.py:504 func <- _exists +0 145424 9 os.py:501 func -> _exists +0 145424 24 <string>:0 func -> ? +0 145424 9 <string>:0 func <- ? +0 145424 15 os.py:506 func <- _exists +0 145424 9 os.py:501 func -> _exists +0 145424 23 <string>:0 func -> ? +0 145424 8 <string>:0 func <- ? +0 145424 9 os.py:504 func <- _exists +0 145424 26 os.py:501 func -> _exists +0 145424 23 <string>:0 func -> ? +0 145424 8 <string>:0 func <- ? +0 145424 8 os.py:504 func <- _exists +0 145424 11 os.py:501 func -> _exists +0 145424 22 <string>:0 func -> ? +0 145424 8 <string>:0 func <- ? +0 145424 8 os.py:504 func <- _exists +0 145424 11 os.py:501 func -> _exists +0 145424 22 <string>:0 func -> ? +0 145424 8 <string>:0 func <- ? +0 145424 8 os.py:504 func <- _exists +0 145424 9 os.py:501 func -> _exists +0 145424 21 <string>:0 func -> ? +0 145424 9 <string>:0 func <- ? +0 145424 14 os.py:506 func <- _exists +0 145424 10 os.py:501 func -> _exists +0 145424 22 <string>:0 func -> ? +0 145424 9 <string>:0 func <- ? +0 145424 13 os.py:506 func <- _exists +0 145424 11 os.py:501 func -> _exists +0 145424 22 <string>:0 func -> ? +0 145424 8 <string>:0 func <- ? +0 145424 13 os.py:506 func <- _exists +0 145424 181 copy_reg.py:5 func -> ? +0 145424 181 types.py:4 func -> ? +0 145424 64 types.py:55 func -> _C +0 145424 10 types.py:56 func <- _C +0 145424 35 types.py:89 func <- ? +0 145424 22 copy_reg.py:14 func -> pickle +0 145424 11 copy_reg.py:27 func -> constructor +0 145424 9 copy_reg.py:29 func <- constructor +0 145424 9 copy_reg.py:25 func <- pickle +0 145424 12 copy_reg.py:175 func <- ? +0 145424 15 copy_reg.py:14 func -> pickle +0 145424 10 copy_reg.py:27 func -> constructor +0 145424 9 copy_reg.py:29 func <- constructor +0 145424 9 copy_reg.py:25 func <- pickle +0 145424 10 copy_reg.py:14 func -> pickle +0 145424 10 copy_reg.py:27 func -> constructor +0 145424 9 copy_reg.py:29 func <- constructor +0 145424 9 copy_reg.py:25 func <- pickle +0 145424 9 os.py:501 func -> _exists +0 145424 26 <string>:0 func -> ? +0 145424 9 <string>:0 func <- ? +0 145424 14 os.py:506 func <- _exists +0 145424 9 os.py:711 func <- ? +0 145424 33 site.py:238 func -> _Printer +0 145424 11 site.py:279 func <- _Printer +0 145424 38 site.py:317 func -> _Helper +0 145424 9 site.py:326 func <- _Helper +0 145424 34 site.py:376 func -> main +0 145424 8 site.py:69 func -> abs__file__ +0 145424 11 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 11 posixpath.py:49 func <- isabs +0 145424 10 posixpath.py:374 func -> normpath +0 145424 22 posixpath.py:398 func <- normpath +0 145424 10 posixpath.py:405 func <- abspath +0 145424 16 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 17 posixpath.py:398 func <- normpath +0 145424 10 posixpath.py:405 func <- abspath +0 145424 10 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 16 posixpath.py:398 func <- normpath +0 145424 10 posixpath.py:405 func <- abspath +0 145424 10 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 16 posixpath.py:398 func <- normpath +0 145424 9 posixpath.py:405 func <- abspath +0 145424 15 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 16 posixpath.py:398 func <- normpath +0 145424 9 posixpath.py:405 func <- abspath +0 145424 22 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 16 posixpath.py:398 func <- normpath +0 145424 9 posixpath.py:405 func <- abspath +0 145424 18 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 16 posixpath.py:398 func <- normpath +0 145424 10 posixpath.py:405 func <- abspath +0 145424 10 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 16 posixpath.py:398 func <- normpath +0 145424 9 posixpath.py:405 func <- abspath +0 145424 12 site.py:75 func <- abs__file__ +0 145424 9 site.py:77 func -> removeduppaths +0 145424 11 site.py:65 func -> makepath +0 145424 10 posixpath.py:56 func -> join +0 145424 9 posixpath.py:66 func <- join +0 145424 9 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 10 posixpath.py:374 func -> normpath +0 145424 16 posixpath.py:398 func <- normpath +0 145424 9 posixpath.py:405 func <- abspath +0 145424 9 posixpath.py:39 func -> normcase +0 145424 9 posixpath.py:41 func <- normcase +0 145424 9 site.py:67 func <- makepath +0 145424 42 site.py:65 func -> makepath +0 145424 9 posixpath.py:56 func -> join +0 145424 9 posixpath.py:66 func <- join +0 145424 9 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 16 posixpath.py:398 func <- normpath +0 145424 9 posixpath.py:405 func <- abspath +0 145424 10 posixpath.py:39 func -> normcase +0 145424 8 posixpath.py:41 func <- normcase +0 145424 9 site.py:67 func <- makepath +0 145424 10 site.py:65 func -> makepath +0 145424 9 posixpath.py:56 func -> join +0 145424 9 posixpath.py:66 func <- join +0 145424 9 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 16 posixpath.py:398 func <- normpath +0 145424 9 posixpath.py:405 func <- abspath +0 145424 9 posixpath.py:39 func -> normcase +0 145424 8 posixpath.py:41 func <- normcase +0 145424 9 site.py:67 func <- makepath +0 145424 10 site.py:65 func -> makepath +0 145424 9 posixpath.py:56 func -> join +0 145424 9 posixpath.py:66 func <- join +0 145424 9 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 16 posixpath.py:398 func <- normpath +0 145424 9 posixpath.py:405 func <- abspath +0 145424 9 posixpath.py:39 func -> normcase +0 145424 8 posixpath.py:41 func <- normcase +0 145424 9 site.py:67 func <- makepath +0 145424 10 site.py:65 func -> makepath +0 145424 9 posixpath.py:56 func -> join +0 145424 9 posixpath.py:66 func <- join +0 145424 9 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 16 posixpath.py:398 func <- normpath +0 145424 9 posixpath.py:405 func <- abspath +0 145424 9 posixpath.py:39 func -> normcase +0 145424 8 posixpath.py:41 func <- normcase +0 145424 9 site.py:67 func <- makepath +0 145424 12 site.py:93 func <- removeduppaths +0 145424 11 posixpath.py:110 func -> basename +0 145424 10 posixpath.py:74 func -> split +0 145424 14 posixpath.py:81 func <- split +0 145424 9 posixpath.py:112 func <- basename +0 145424 9 site.py:171 func -> addsitepackages +0 145424 13 posixpath.py:56 func -> join +0 145424 15 posixpath.py:66 func <- join +0 145424 10 posixpath.py:56 func -> join +0 145424 12 posixpath.py:66 func <- join +0 145424 11 posixpath.py:192 func -> isdir +0 145424 34 stat.py:45 func -> S_ISDIR +0 145424 9 stat.py:29 func -> S_IFMT +0 145424 9 stat.py:30 func <- S_IFMT +0 145424 9 stat.py:46 func <- S_ISDIR +0 145424 9 posixpath.py:198 func <- isdir +0 145424 11 site.py:148 func -> addsitedir +0 145424 9 site.py:65 func -> makepath +0 145424 9 posixpath.py:56 func -> join +0 145424 9 posixpath.py:66 func <- join +0 145424 9 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 10 posixpath.py:374 func -> normpath +0 145424 17 posixpath.py:398 func <- normpath +0 145424 9 posixpath.py:405 func <- abspath +0 145424 9 posixpath.py:39 func -> normcase +0 145424 9 posixpath.py:41 func <- normcase +0 145424 9 site.py:67 func <- makepath +0 145424 222 site.py:117 func -> addpackage +0 145424 12 posixpath.py:56 func -> join +0 145424 12 posixpath.py:66 func <- join +0 145424 132 <string>:1 func -> ? +0 145424 13 site.py:148 func -> addsitedir +0 145424 9 site.py:105 func -> _init_pathinfo +0 145424 11 posixpath.py:192 func -> isdir +0 145424 84 posixpath.py:197 func <- isdir +0 145424 12 posixpath.py:192 func -> isdir +0 145424 23 stat.py:45 func -> S_ISDIR +0 145424 9 stat.py:29 func -> S_IFMT +0 145424 9 stat.py:30 func <- S_IFMT +0 145424 9 stat.py:46 func <- S_ISDIR +0 145424 9 posixpath.py:198 func <- isdir +0 145424 10 site.py:65 func -> makepath +0 145424 10 posixpath.py:56 func -> join +0 145424 9 posixpath.py:66 func <- join +0 145424 9 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 10 posixpath.py:374 func -> normpath +0 145424 17 posixpath.py:398 func <- normpath +0 145424 10 posixpath.py:405 func <- abspath +0 145424 10 posixpath.py:39 func -> normcase +0 145424 9 posixpath.py:41 func <- normcase +0 145424 9 site.py:67 func <- makepath +0 145424 10 posixpath.py:192 func -> isdir +0 145424 23 stat.py:45 func -> S_ISDIR +0 145424 8 stat.py:29 func -> S_IFMT +0 145424 8 stat.py:30 func <- S_IFMT +0 145424 9 stat.py:46 func <- S_ISDIR +0 145424 9 posixpath.py:198 func <- isdir +0 145424 10 site.py:65 func -> makepath +0 145424 9 posixpath.py:56 func -> join +0 145424 9 posixpath.py:66 func <- join +0 145424 9 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 17 posixpath.py:398 func <- normpath +0 145424 10 posixpath.py:405 func <- abspath +0 145424 10 posixpath.py:39 func -> normcase +0 145424 9 posixpath.py:41 func <- normcase +0 145424 9 site.py:67 func <- makepath +0 145424 10 posixpath.py:192 func -> isdir +0 145424 24 stat.py:45 func -> S_ISDIR +0 145424 8 stat.py:29 func -> S_IFMT +0 145424 8 stat.py:30 func <- S_IFMT +0 145424 9 stat.py:46 func <- S_ISDIR +0 145424 8 posixpath.py:198 func <- isdir +0 145424 10 site.py:65 func -> makepath +0 145424 9 posixpath.py:56 func -> join +0 145424 9 posixpath.py:66 func <- join +0 145424 9 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 17 posixpath.py:398 func <- normpath +0 145424 10 posixpath.py:405 func <- abspath +0 145424 10 posixpath.py:39 func -> normcase +0 145424 9 posixpath.py:41 func <- normcase +0 145424 9 site.py:67 func <- makepath +0 145424 10 posixpath.py:192 func -> isdir +0 145424 23 stat.py:45 func -> S_ISDIR +0 145424 8 stat.py:29 func -> S_IFMT +0 145424 8 stat.py:30 func <- S_IFMT +0 145424 9 stat.py:46 func <- S_ISDIR +0 145424 9 posixpath.py:198 func <- isdir +0 145424 10 site.py:65 func -> makepath +0 145424 9 posixpath.py:56 func -> join +0 145424 9 posixpath.py:66 func <- join +0 145424 9 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 17 posixpath.py:398 func <- normpath +0 145424 9 posixpath.py:405 func <- abspath +0 145424 9 posixpath.py:39 func -> normcase +0 145424 9 posixpath.py:41 func <- normcase +0 145424 9 site.py:67 func <- makepath +0 145424 10 posixpath.py:192 func -> isdir +0 145424 22 stat.py:45 func -> S_ISDIR +0 145424 8 stat.py:29 func -> S_IFMT +0 145424 8 stat.py:30 func <- S_IFMT +0 145424 9 stat.py:46 func <- S_ISDIR +0 145424 8 posixpath.py:198 func <- isdir +0 145424 10 site.py:65 func -> makepath +0 145424 9 posixpath.py:56 func -> join +0 145424 9 posixpath.py:66 func <- join +0 145424 9 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 17 posixpath.py:398 func <- normpath +0 145424 10 posixpath.py:405 func <- abspath +0 145424 10 posixpath.py:39 func -> normcase +0 145424 8 posixpath.py:41 func <- normcase +0 145424 9 site.py:67 func <- makepath +0 145424 10 site.py:115 func <- _init_pathinfo +0 145424 9 site.py:65 func -> makepath +0 145424 10 posixpath.py:56 func -> join +0 145424 9 posixpath.py:66 func <- join +0 145424 9 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 10 posixpath.py:374 func -> normpath +0 145424 17 posixpath.py:398 func <- normpath +0 145424 9 posixpath.py:405 func <- abspath +0 145424 9 posixpath.py:39 func -> normcase +0 145424 9 posixpath.py:41 func <- normcase +0 145424 9 site.py:67 func <- makepath +0 145424 170 site.py:117 func -> addpackage +0 145424 11 posixpath.py:56 func -> join +0 145424 12 posixpath.py:66 func <- join +0 145424 73 site.py:65 func -> makepath +0 145424 11 posixpath.py:56 func -> join +0 145424 11 posixpath.py:66 func <- join +0 145424 10 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 19 posixpath.py:398 func <- normpath +0 145424 10 posixpath.py:405 func <- abspath +0 145424 9 posixpath.py:39 func -> normcase +0 145424 9 posixpath.py:41 func <- normcase +0 145424 9 site.py:67 func <- makepath +0 145424 10 posixpath.py:168 func -> exists +0 145424 41 posixpath.py:174 func <- exists +0 145424 53 site.py:146 func <- addpackage +0 145424 21 site.py:117 func -> addpackage +0 145424 9 posixpath.py:56 func -> join +0 145424 11 posixpath.py:66 func <- join +0 145424 48 site.py:65 func -> makepath +0 145424 10 posixpath.py:56 func -> join +0 145424 47 posixpath.py:66 func <- join +0 145424 10 posixpath.py:401 func -> abspath +0 145424 9 posixpath.py:47 func -> isabs +0 145424 9 posixpath.py:49 func <- isabs +0 145424 9 posixpath.py:374 func -> normpath +0 145424 18 posixpath.py:398 func <- normpath +0 145424 10 posixpath.py:405 func <- abspath +0 145424 10 posixpath.py:39 func -> normcase +0 145424 9 posixpath.py:41 func <- normcase +0 145424 9 site.py:67 func <- makepath +0 145424 10 posixpath.py:168 func -> exists +0 145424 25 posixpath.py:174 func <- exists +0 145424 32 site.py:146 func <- addpackage +0 145424 14 site.py:169 func <- addsitedir +0 145424 10 <string>:1 func <- ? +0 145424 16 site.py:146 func <- addpackage +0 145424 10 site.py:169 func <- addsitedir +0 145424 10 posixpath.py:192 func -> isdir +0 145424 34 posixpath.py:197 func <- isdir +0 145424 10 site.py:204 func <- addsitepackages +0 145424 11 site.py:224 func -> setquit +0 145424 11 site.py:235 func <- setquit +0 145424 9 site.py:299 func -> setcopyright +0 145424 11 site.py:244 func -> __init__ +0 145424 10 site.py:249 func <- __init__ +0 145424 12 site.py:244 func -> __init__ +0 145424 9 site.py:249 func <- __init__ +0 145424 10 posixpath.py:117 func -> dirname +0 145424 9 posixpath.py:74 func -> split +0 145424 14 posixpath.py:81 func <- split +0 145424 9 posixpath.py:119 func <- dirname +0 145424 14 posixpath.py:56 func -> join +0 145424 11 posixpath.py:66 func <- join +0 145424 11 site.py:244 func -> __init__ +0 145424 9 site.py:249 func <- __init__ +0 145424 9 site.py:314 func <- setcopyright +0 145424 9 site.py:330 func -> sethelper +0 145424 9 site.py:331 func <- sethelper +0 145424 9 site.py:333 func -> aliasmbcs +0 145424 9 site.py:346 func <- aliasmbcs +0 145424 9 site.py:348 func -> setencoding +0 145424 9 site.py:365 func <- setencoding +0 145424 9 site.py:368 func -> execsitecustomize +0 145424 706 site.py:373 func <- execsitecustomize +0 145424 16 site.py:395 func <- main +0 145424 12 site.py:406 func <- ? +0 145424 289 warnings.py:1 func -> ? +0 145424 158 linecache.py:6 func -> ? +0 145424 17 linecache.py:66 func <- ? +0 145424 20 warnings.py:179 func -> _OptionError +0 145424 9 warnings.py:180 func <- _OptionError +0 145424 19 warnings.py:184 func -> _processoptions +0 145424 10 warnings.py:189 func <- _processoptions +0 145424 12 warnings.py:160 func -> simplefilter +0 145424 13 warnings.py:173 func <- simplefilter +0 145424 10 warnings.py:160 func -> simplefilter +0 145424 11 warnings.py:173 func <- simplefilter +0 145424 9 warnings.py:259 func <- ? +0 145424 492 __init__.py:28 func -> ? +0 145424 599 codecs.py:8 func -> ? +0 145424 61 codecs.py:76 func -> Codec +0 145424 12 codecs.py:117 func <- Codec +0 145424 18 codecs.py:147 func -> StreamWriter +0 145424 11 codecs.py:200 func <- StreamWriter +0 145424 13 codecs.py:209 func -> StreamReader +0 145424 13 codecs.py:436 func <- StreamReader +0 145424 12 codecs.py:445 func -> StreamReaderWriter +0 145424 13 codecs.py:509 func <- StreamReaderWriter +0 145424 11 codecs.py:518 func -> StreamRecoder +0 145424 12 codecs.py:619 func <- StreamRecoder +0 145424 17 codecs.py:817 func <- ? +0 145424 625 aliases.py:17 func -> ? +0 145424 54 aliases.py:18 func <- ? +0 145424 21 __init__.py:43 func -> CodecRegistryError +0 145424 10 __init__.py:45 func <- CodecRegistryError +0 145424 19 __init__.py:145 func <- ? +0 145424 18 __init__.py:69 func -> search_function +0 145424 12 __init__.py:47 func -> normalize_encoding +0 145424 16 __init__.py:67 func <- normalize_encoding +0 145424 120 ascii.py:8 func -> ? +0 145424 14 ascii.py:13 func -> Codec +0 145424 10 ascii.py:18 func <- Codec +0 145424 15 ascii.py:20 func -> StreamWriter +0 145424 9 ascii.py:21 func <- StreamWriter +0 145424 13 ascii.py:23 func -> StreamReader +0 145424 9 ascii.py:24 func <- StreamReader +0 145424 24 ascii.py:26 func -> StreamConverter +0 145424 10 ascii.py:29 func <- StreamConverter +0 145424 14 ascii.py:33 func <- ? +0 145424 17 ascii.py:33 func -> getregentry +0 145424 10 ascii.py:35 func <- getregentry +0 145424 26 __init__.py:142 func <- search_function +0 145424 367 func_abc.py:3 func -> ? +0 145424 1722 func_abc.py:14 func -> func_a +0 145424 1005677 func_abc.py:9 func -> func_b +0 145424 1000271 func_abc.py:5 func -> func_c +0 145424 1009739 func_abc.py:7 func <- func_c +0 145424 25 func_abc.py:12 func <- func_b +0 145424 9 func_abc.py:17 func <- func_a +0 145424 9 func_abc.py:19 func <- ? +^C + +As each function is entered, the last column is indented by 2 spaces. This +shows which function is calling which. + +The DELTA(us) column shows the change in time from the previous line to the +current line. + +The FILE::LINE column shows which line in which file was being executed. Refer +to the source program to see what this line refers to. + +If the output looks shuffled, check the CPU "C" column - if it changes, +then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for +details and suggested workarounds. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/py_flowtime_example.txt b/cddl/contrib/dtracetoolkit/Examples/py_flowtime_example.txt new file mode 100644 index 000000000000..5ac494bba64d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/py_flowtime_example.txt @@ -0,0 +1,487 @@ +The following are examples of py_flowtime.d. + +This is a simple script to trace the flow of Python functions. Here it traces +the example program, Code/Python/func_abc.py + +# py_flowtime.d + C TIME(us) FILE DELTA(us) -- FUNC + 0 3064660319556 site.py 3 -> ? + 0 3064660320224 os.py 667 -> ? + 0 3064660321335 posixpath.py 1111 -> ? + 0 3064660321526 stat.py 190 -> ? + 0 3064660321546 stat.py 20 <- ? + 0 3064660321576 posixpath.py 29 <- ? + 0 3064660321593 os.py 17 -> _get_exports_list + 0 3064660321728 os.py 134 <- _get_exports_list + 0 3064660321989 UserDict.py 260 -> ? + 0 3064660322000 UserDict.py 10 -> UserDict + 0 3064660322035 UserDict.py 34 <- UserDict + 0 3064660322050 UserDict.py 15 -> IterableUserDict + 0 3064660322058 UserDict.py 8 <- IterableUserDict + 0 3064660322071 UserDict.py 12 -> DictMixin + 0 3064660322247 UserDict.py 176 <- DictMixin + 0 3064660322258 UserDict.py 10 <- ? + 0 3064660322275 os.py 16 -> _Environ + 0 3064660322285 os.py 10 <- _Environ + 0 3064660322298 os.py 13 -> __init__ + 0 3064660322308 UserDict.py 10 -> __init__ + 0 3064660322319 UserDict.py 10 <- __init__ + 0 3064660322328 os.py 9 <- __init__ + 0 3064660322338 os.py 10 -> _exists + 0 3064660322946 <string> 607 -> ? + 0 3064660322955 <string> 8 <- ? + 0 3064660322963 os.py 8 <- _exists + 0 3064660322972 os.py 8 -> _exists + 0 3064660322996 <string> 23 -> ? + 0 3064660323005 <string> 8 <- ? + 0 3064660323020 os.py 14 <- _exists + 0 3064660323029 os.py 8 -> _exists + 0 3064660323051 <string> 22 -> ? + 0 3064660323059 <string> 7 <- ? + 0 3064660323067 os.py 8 <- _exists + 0 3064660323077 os.py 10 -> _exists + 0 3064660323098 <string> 21 -> ? + 0 3064660323106 <string> 7 <- ? + 0 3064660323114 os.py 8 <- _exists + 0 3064660323125 os.py 10 -> _exists + 0 3064660323146 <string> 21 -> ? + 0 3064660323154 <string> 7 <- ? + 0 3064660323162 os.py 8 <- _exists + 0 3064660323173 os.py 10 -> _exists + 0 3064660323194 <string> 21 -> ? + 0 3064660323202 <string> 7 <- ? + 0 3064660323210 os.py 8 <- _exists + 0 3064660323218 os.py 8 -> _exists + 0 3064660323239 <string> 21 -> ? + 0 3064660323247 <string> 8 <- ? + 0 3064660323261 os.py 13 <- _exists + 0 3064660323271 os.py 10 -> _exists + 0 3064660323293 <string> 21 -> ? + 0 3064660323301 <string> 8 <- ? + 0 3064660323314 os.py 12 <- _exists + 0 3064660323324 os.py 10 -> _exists + 0 3064660323345 <string> 21 -> ? + 0 3064660323354 <string> 8 <- ? + 0 3064660323366 os.py 12 <- _exists + 0 3064660323545 copy_reg.py 178 -> ? + 0 3064660323726 types.py 180 -> ? + 0 3064660323790 types.py 64 -> _C + 0 3064660323800 types.py 9 <- _C + 0 3064660323834 types.py 33 <- ? + 0 3064660323855 copy_reg.py 21 -> pickle + 0 3064660323866 copy_reg.py 10 -> constructor + 0 3064660323874 copy_reg.py 8 <- constructor + 0 3064660323883 copy_reg.py 8 <- pickle + 0 3064660323895 copy_reg.py 11 <- ? + 0 3064660323909 copy_reg.py 14 -> pickle + 0 3064660323919 copy_reg.py 9 -> constructor + 0 3064660323927 copy_reg.py 8 <- constructor + 0 3064660323936 copy_reg.py 8 <- pickle + 0 3064660323946 copy_reg.py 9 -> pickle + 0 3064660323955 copy_reg.py 9 -> constructor + 0 3064660323963 copy_reg.py 8 <- constructor + 0 3064660323972 copy_reg.py 8 <- pickle + 0 3064660323981 os.py 9 -> _exists + 0 3064660324006 <string> 25 -> ? + 0 3064660324015 <string> 8 <- ? + 0 3064660324028 os.py 13 <- _exists + 0 3064660324037 os.py 8 <- ? + 0 3064660324069 site.py 31 -> _Printer + 0 3064660324080 site.py 10 <- _Printer + 0 3064660324118 site.py 38 -> _Helper + 0 3064660324127 site.py 9 <- _Helper + 0 3064660324160 site.py 33 -> main + 0 3064660324168 site.py 8 -> abs__file__ + 0 3064660324179 posixpath.py 10 -> abspath + 0 3064660324187 posixpath.py 8 -> isabs + 0 3064660324197 posixpath.py 9 <- isabs + 0 3064660324207 posixpath.py 9 -> normpath + 0 3064660324228 posixpath.py 21 <- normpath + 0 3064660324238 posixpath.py 9 <- abspath + 0 3064660324253 posixpath.py 15 -> abspath + 0 3064660324261 posixpath.py 8 -> isabs + 0 3064660324270 posixpath.py 8 <- isabs + 0 3064660324278 posixpath.py 8 -> normpath + 0 3064660324295 posixpath.py 16 <- normpath + 0 3064660324304 posixpath.py 9 <- abspath + 0 3064660324314 posixpath.py 9 -> abspath + 0 3064660324322 posixpath.py 8 -> isabs + 0 3064660324331 posixpath.py 8 <- isabs + 0 3064660324339 posixpath.py 8 -> normpath + 0 3064660324355 posixpath.py 15 <- normpath + 0 3064660324364 posixpath.py 8 <- abspath + 0 3064660324374 posixpath.py 9 -> abspath + 0 3064660324382 posixpath.py 8 -> isabs + 0 3064660324391 posixpath.py 8 <- isabs + 0 3064660324399 posixpath.py 8 -> normpath + 0 3064660324415 posixpath.py 15 <- normpath + 0 3064660324424 posixpath.py 8 <- abspath + 0 3064660324439 posixpath.py 14 -> abspath + 0 3064660324447 posixpath.py 8 -> isabs + 0 3064660324456 posixpath.py 8 <- isabs + 0 3064660324464 posixpath.py 8 -> normpath + 0 3064660324480 posixpath.py 15 <- normpath + 0 3064660324489 posixpath.py 8 <- abspath + 0 3064660324511 posixpath.py 21 -> abspath + 0 3064660324519 posixpath.py 8 -> isabs + 0 3064660324528 posixpath.py 8 <- isabs + 0 3064660324536 posixpath.py 8 -> normpath + 0 3064660324552 posixpath.py 15 <- normpath + 0 3064660324561 posixpath.py 9 <- abspath + 0 3064660324579 posixpath.py 17 -> abspath + 0 3064660324588 posixpath.py 8 -> isabs + 0 3064660324596 posixpath.py 8 <- isabs + 0 3064660324605 posixpath.py 8 -> normpath + 0 3064660324621 posixpath.py 15 <- normpath + 0 3064660324630 posixpath.py 8 <- abspath + 0 3064660324639 posixpath.py 9 -> abspath + 0 3064660324648 posixpath.py 8 -> isabs + 0 3064660324656 posixpath.py 8 <- isabs + 0 3064660324665 posixpath.py 8 -> normpath + 0 3064660324681 posixpath.py 15 <- normpath + 0 3064660324690 posixpath.py 9 <- abspath + 0 3064660324701 site.py 11 <- abs__file__ + 0 3064660324709 site.py 8 -> removeduppaths + 0 3064660324719 site.py 10 -> makepath + 0 3064660324729 posixpath.py 9 -> join + 0 3064660324738 posixpath.py 8 <- join + 0 3064660324746 posixpath.py 8 -> abspath + 0 3064660324755 posixpath.py 8 -> isabs + 0 3064660324764 posixpath.py 8 <- isabs + 0 3064660324773 posixpath.py 9 -> normpath + 0 3064660324789 posixpath.py 15 <- normpath + 0 3064660324797 posixpath.py 8 <- abspath + 0 3064660324806 posixpath.py 8 -> normcase + 0 3064660324814 posixpath.py 8 <- normcase + 0 3064660324823 site.py 8 <- makepath + 0 3064660324864 site.py 40 -> makepath + 0 3064660324873 posixpath.py 8 -> join + 0 3064660324881 posixpath.py 8 <- join + 0 3064660324889 posixpath.py 8 -> abspath + 0 3064660324898 posixpath.py 8 -> isabs + 0 3064660324906 posixpath.py 8 <- isabs + 0 3064660324915 posixpath.py 8 -> normpath + 0 3064660324931 posixpath.py 15 <- normpath + 0 3064660324939 posixpath.py 8 <- abspath + 0 3064660324948 posixpath.py 8 -> normcase + 0 3064660324957 posixpath.py 8 <- normcase + 0 3064660324965 site.py 8 <- makepath + 0 3064660324974 site.py 9 -> makepath + 0 3064660324983 posixpath.py 8 -> join + 0 3064660324991 posixpath.py 8 <- join + 0 3064660325000 posixpath.py 8 -> abspath + 0 3064660325008 posixpath.py 8 -> isabs + 0 3064660325017 posixpath.py 8 <- isabs + 0 3064660325025 posixpath.py 8 -> normpath + 0 3064660325041 posixpath.py 15 <- normpath + 0 3064660325050 posixpath.py 8 <- abspath + 0 3064660325059 posixpath.py 8 -> normcase + 0 3064660325067 posixpath.py 8 <- normcase + 0 3064660325075 site.py 8 <- makepath + 0 3064660325084 site.py 9 -> makepath + 0 3064660325093 posixpath.py 8 -> join + 0 3064660325102 posixpath.py 8 <- join + 0 3064660325110 posixpath.py 8 -> abspath + 0 3064660325118 posixpath.py 8 -> isabs + 0 3064660325127 posixpath.py 8 <- isabs + 0 3064660325135 posixpath.py 8 -> normpath + 0 3064660325151 posixpath.py 15 <- normpath + 0 3064660325160 posixpath.py 8 <- abspath + 0 3064660325169 posixpath.py 8 -> normcase + 0 3064660325177 posixpath.py 7 <- normcase + 0 3064660325185 site.py 8 <- makepath + 0 3064660325194 site.py 9 -> makepath + 0 3064660325203 posixpath.py 8 -> join + 0 3064660325212 posixpath.py 8 <- join + 0 3064660325220 posixpath.py 8 -> abspath + 0 3064660325228 posixpath.py 8 -> isabs + 0 3064660325237 posixpath.py 8 <- isabs + 0 3064660325245 posixpath.py 8 -> normpath + 0 3064660325261 posixpath.py 15 <- normpath + 0 3064660325270 posixpath.py 8 <- abspath + 0 3064660325279 posixpath.py 8 -> normcase + 0 3064660325287 posixpath.py 8 <- normcase + 0 3064660325295 site.py 8 <- makepath + 0 3064660325307 site.py 11 <- removeduppaths + 0 3064660325317 posixpath.py 10 -> basename + 0 3064660325327 posixpath.py 9 -> split + 0 3064660325340 posixpath.py 13 <- split + 0 3064660325349 posixpath.py 8 <- basename + 0 3064660325358 site.py 8 -> addsitepackages + 0 3064660325370 posixpath.py 12 -> join + 0 3064660325385 posixpath.py 14 <- join + 0 3064660325394 posixpath.py 9 -> join + 0 3064660325406 posixpath.py 11 <- join + 0 3064660325416 posixpath.py 10 -> isdir + 0 3064660325447 stat.py 31 -> S_ISDIR + 0 3064660325456 stat.py 8 -> S_IFMT + 0 3064660325464 stat.py 8 <- S_IFMT + 0 3064660325473 stat.py 8 <- S_ISDIR + 0 3064660325481 posixpath.py 7 <- isdir + 0 3064660325491 site.py 10 -> addsitedir + 0 3064660325500 site.py 8 -> makepath + 0 3064660325508 posixpath.py 8 -> join + 0 3064660325517 posixpath.py 8 <- join + 0 3064660325525 posixpath.py 8 -> abspath + 0 3064660325534 posixpath.py 8 -> isabs + 0 3064660325543 posixpath.py 8 <- isabs + 0 3064660325552 posixpath.py 9 -> normpath + 0 3064660325569 posixpath.py 16 <- normpath + 0 3064660325578 posixpath.py 8 <- abspath + 0 3064660325587 posixpath.py 8 -> normcase + 0 3064660325595 posixpath.py 8 <- normcase + 0 3064660325604 site.py 8 <- makepath + 0 3064660325823 site.py 219 -> addpackage + 0 3064660325834 posixpath.py 10 -> join + 0 3064660325844 posixpath.py 10 <- join + 0 3064660325972 <string> 127 -> ? + 0 3064660325985 site.py 13 -> addsitedir + 0 3064660325994 site.py 8 -> _init_pathinfo + 0 3064660326004 posixpath.py 10 -> isdir + 0 3064660326086 posixpath.py 81 <- isdir + 0 3064660326097 posixpath.py 10 -> isdir + 0 3064660326118 stat.py 21 -> S_ISDIR + 0 3064660326127 stat.py 9 -> S_IFMT + 0 3064660326136 stat.py 8 <- S_IFMT + 0 3064660326144 stat.py 8 <- S_ISDIR + 0 3064660326152 posixpath.py 7 <- isdir + 0 3064660326161 site.py 9 -> makepath + 0 3064660326171 posixpath.py 9 -> join + 0 3064660326179 posixpath.py 8 <- join + 0 3064660326188 posixpath.py 8 -> abspath + 0 3064660326196 posixpath.py 8 -> isabs + 0 3064660326205 posixpath.py 9 <- isabs + 0 3064660326215 posixpath.py 9 -> normpath + 0 3064660326231 posixpath.py 16 <- normpath + 0 3064660326240 posixpath.py 8 <- abspath + 0 3064660326249 posixpath.py 9 -> normcase + 0 3064660326258 posixpath.py 8 <- normcase + 0 3064660326266 site.py 8 <- makepath + 0 3064660326276 posixpath.py 9 -> isdir + 0 3064660326298 stat.py 22 -> S_ISDIR + 0 3064660326306 stat.py 8 -> S_IFMT + 0 3064660326314 stat.py 7 <- S_IFMT + 0 3064660326322 stat.py 8 <- S_ISDIR + 0 3064660326330 posixpath.py 8 <- isdir + 0 3064660326340 site.py 9 -> makepath + 0 3064660326349 posixpath.py 8 -> join + 0 3064660326357 posixpath.py 8 <- join + 0 3064660326382 posixpath.py 24 -> abspath + 0 3064660326390 posixpath.py 8 -> isabs + 0 3064660326399 posixpath.py 8 <- isabs + 0 3064660326408 posixpath.py 8 -> normpath + 0 3064660326425 posixpath.py 16 <- normpath + 0 3064660326434 posixpath.py 9 <- abspath + 0 3064660326443 posixpath.py 9 -> normcase + 0 3064660326451 posixpath.py 8 <- normcase + 0 3064660326460 site.py 8 <- makepath + 0 3064660326469 posixpath.py 9 -> isdir + 0 3064660326493 stat.py 23 -> S_ISDIR + 0 3064660326501 stat.py 8 -> S_IFMT + 0 3064660326509 stat.py 7 <- S_IFMT + 0 3064660326517 stat.py 8 <- S_ISDIR + 0 3064660326525 posixpath.py 7 <- isdir + 0 3064660326534 site.py 9 -> makepath + 0 3064660326542 posixpath.py 8 -> join + 0 3064660326551 posixpath.py 8 <- join + 0 3064660326559 posixpath.py 8 -> abspath + 0 3064660326568 posixpath.py 8 -> isabs + 0 3064660326576 posixpath.py 8 <- isabs + 0 3064660326585 posixpath.py 8 -> normpath + 0 3064660326602 posixpath.py 16 <- normpath + 0 3064660326610 posixpath.py 8 <- abspath + 0 3064660326619 posixpath.py 8 -> normcase + 0 3064660326628 posixpath.py 8 <- normcase + 0 3064660326636 site.py 8 <- makepath + 0 3064660326646 posixpath.py 9 -> isdir + 0 3064660326668 stat.py 22 -> S_ISDIR + 0 3064660326676 stat.py 8 -> S_IFMT + 0 3064660326684 stat.py 7 <- S_IFMT + 0 3064660326692 stat.py 8 <- S_ISDIR + 0 3064660326700 posixpath.py 8 <- isdir + 0 3064660326709 site.py 9 -> makepath + 0 3064660326718 posixpath.py 8 -> join + 0 3064660326726 posixpath.py 8 <- join + 0 3064660326735 posixpath.py 8 -> abspath + 0 3064660326743 posixpath.py 8 -> isabs + 0 3064660326752 posixpath.py 8 <- isabs + 0 3064660326760 posixpath.py 8 -> normpath + 0 3064660326777 posixpath.py 16 <- normpath + 0 3064660326786 posixpath.py 9 <- abspath + 0 3064660326795 posixpath.py 9 -> normcase + 0 3064660326803 posixpath.py 8 <- normcase + 0 3064660326811 site.py 8 <- makepath + 0 3064660326821 posixpath.py 9 -> isdir + 0 3064660326842 stat.py 21 -> S_ISDIR + 0 3064660326850 stat.py 8 -> S_IFMT + 0 3064660326858 stat.py 7 <- S_IFMT + 0 3064660326866 stat.py 8 <- S_ISDIR + 0 3064660326874 posixpath.py 7 <- isdir + 0 3064660326883 site.py 9 -> makepath + 0 3064660326892 posixpath.py 8 -> join + 0 3064660326901 posixpath.py 8 <- join + 0 3064660326909 posixpath.py 8 -> abspath + 0 3064660326917 posixpath.py 8 -> isabs + 0 3064660326926 posixpath.py 8 <- isabs + 0 3064660326935 posixpath.py 8 -> normpath + 0 3064660326951 posixpath.py 16 <- normpath + 0 3064660326960 posixpath.py 8 <- abspath + 0 3064660326970 posixpath.py 9 -> normcase + 0 3064660326978 posixpath.py 8 <- normcase + 0 3064660326986 site.py 8 <- makepath + 0 3064660326995 site.py 8 <- _init_pathinfo + 0 3064660327004 site.py 8 -> makepath + 0 3064660327013 posixpath.py 9 -> join + 0 3064660327021 posixpath.py 8 <- join + 0 3064660327030 posixpath.py 8 -> abspath + 0 3064660327038 posixpath.py 8 -> isabs + 0 3064660327047 posixpath.py 8 <- isabs + 0 3064660327056 posixpath.py 8 -> normpath + 0 3064660327072 posixpath.py 15 <- normpath + 0 3064660327081 posixpath.py 9 <- abspath + 0 3064660327090 posixpath.py 8 -> normcase + 0 3064660327098 posixpath.py 8 <- normcase + 0 3064660327106 site.py 8 <- makepath + 0 3064660327278 site.py 171 -> addpackage + 0 3064660327289 posixpath.py 10 -> join + 0 3064660327300 posixpath.py 10 <- join + 0 3064660327372 site.py 72 -> makepath + 0 3064660327382 posixpath.py 10 -> join + 0 3064660327393 posixpath.py 10 <- join + 0 3064660327402 posixpath.py 9 -> abspath + 0 3064660327410 posixpath.py 8 -> isabs + 0 3064660327419 posixpath.py 8 <- isabs + 0 3064660327427 posixpath.py 8 -> normpath + 0 3064660327445 posixpath.py 17 <- normpath + 0 3064660327454 posixpath.py 9 <- abspath + 0 3064660327463 posixpath.py 9 -> normcase + 0 3064660327472 posixpath.py 8 <- normcase + 0 3064660327480 site.py 8 <- makepath + 0 3064660327489 posixpath.py 9 -> exists + 0 3064660327515 posixpath.py 26 <- exists + 0 3064660327567 site.py 51 <- addpackage + 0 3064660327588 site.py 20 -> addpackage + 0 3064660327597 posixpath.py 8 -> join + 0 3064660327607 posixpath.py 10 <- join + 0 3064660327654 site.py 46 -> makepath + 0 3064660327663 posixpath.py 9 -> join + 0 3064660327710 posixpath.py 46 <- join + 0 3064660327720 posixpath.py 9 -> abspath + 0 3064660327728 posixpath.py 8 -> isabs + 0 3064660327737 posixpath.py 9 <- isabs + 0 3064660327746 posixpath.py 8 -> normpath + 0 3064660327764 posixpath.py 17 <- normpath + 0 3064660327773 posixpath.py 9 <- abspath + 0 3064660327782 posixpath.py 9 -> normcase + 0 3064660327791 posixpath.py 8 <- normcase + 0 3064660327799 site.py 8 <- makepath + 0 3064660327808 posixpath.py 9 -> exists + 0 3064660327833 posixpath.py 24 <- exists + 0 3064660327864 site.py 31 <- addpackage + 0 3064660327878 site.py 13 <- addsitedir + 0 3064660327887 <string> 9 <- ? + 0 3064660327903 site.py 15 <- addpackage + 0 3064660327913 site.py 9 <- addsitedir + 0 3064660327923 posixpath.py 10 -> isdir + 0 3064660327955 posixpath.py 32 <- isdir + 0 3064660327965 site.py 9 <- addsitepackages + 0 3064660327976 site.py 10 -> setquit + 0 3064660327986 site.py 10 <- setquit + 0 3064660327995 site.py 8 -> setcopyright + 0 3064660328005 site.py 10 -> __init__ + 0 3064660328015 site.py 9 <- __init__ + 0 3064660328026 site.py 11 -> __init__ + 0 3064660328035 site.py 8 <- __init__ + 0 3064660328045 posixpath.py 9 -> dirname + 0 3064660328053 posixpath.py 8 -> split + 0 3064660328066 posixpath.py 13 <- split + 0 3064660328075 posixpath.py 8 <- dirname + 0 3064660328089 posixpath.py 13 -> join + 0 3064660328099 posixpath.py 10 <- join + 0 3064660328109 site.py 10 -> __init__ + 0 3064660328118 site.py 9 <- __init__ + 0 3064660328127 site.py 8 <- setcopyright + 0 3064660328136 site.py 8 -> sethelper + 0 3064660328145 site.py 8 <- sethelper + 0 3064660328153 site.py 8 -> aliasmbcs + 0 3064660328161 site.py 8 <- aliasmbcs + 0 3064660328170 site.py 8 -> setencoding + 0 3064660328178 site.py 7 <- setencoding + 0 3064660328186 site.py 8 -> execsitecustomize + 0 3064660328736 site.py 549 <- execsitecustomize + 0 3064660328748 site.py 12 <- main + 0 3064660328758 site.py 9 <- ? + 0 3064660329029 warnings.py 270 -> ? + 0 3064660329184 linecache.py 155 -> ? + 0 3064660329201 linecache.py 16 <- ? + 0 3064660329220 warnings.py 18 -> _OptionError + 0 3064660329228 warnings.py 8 <- _OptionError + 0 3064660329246 warnings.py 17 -> _processoptions + 0 3064660329255 warnings.py 8 <- _processoptions + 0 3064660329266 warnings.py 10 -> simplefilter + 0 3064660329278 warnings.py 12 <- simplefilter + 0 3064660329288 warnings.py 9 -> simplefilter + 0 3064660329298 warnings.py 10 <- simplefilter + 0 3064660329307 warnings.py 8 <- ? + 0 3064660329533 __init__.py 226 -> ? + 0 3064660330090 codecs.py 557 -> ? + 0 3064660330148 codecs.py 57 -> Codec + 0 3064660330158 codecs.py 10 <- Codec + 0 3064660330171 codecs.py 13 -> StreamWriter + 0 3064660330182 codecs.py 10 <- StreamWriter + 0 3064660330194 codecs.py 11 -> StreamReader + 0 3064660330206 codecs.py 12 <- StreamReader + 0 3064660330217 codecs.py 11 -> StreamReaderWriter + 0 3064660330229 codecs.py 11 <- StreamReaderWriter + 0 3064660330239 codecs.py 10 -> StreamRecoder + 0 3064660330251 codecs.py 11 <- StreamRecoder + 0 3064660330267 codecs.py 16 <- ? + 0 3064660331439 aliases.py 1171 -> ? + 0 3064660331500 aliases.py 61 <- ? + 0 3064660331526 __init__.py 25 -> CodecRegistryError + 0 3064660331535 __init__.py 9 <- CodecRegistryError + 0 3064660331557 __init__.py 21 <- ? + 0 3064660331577 __init__.py 20 -> search_function + 0 3064660331590 __init__.py 12 -> normalize_encoding + 0 3064660331605 __init__.py 15 <- normalize_encoding + 0 3064660331728 ascii.py 122 -> ? + 0 3064660331742 ascii.py 13 -> Codec + 0 3064660331752 ascii.py 9 <- Codec + 0 3064660331766 ascii.py 13 -> StreamWriter + 0 3064660331774 ascii.py 8 <- StreamWriter + 0 3064660331787 ascii.py 13 -> StreamReader + 0 3064660331796 ascii.py 8 <- StreamReader + 0 3064660331819 ascii.py 23 -> StreamConverter + 0 3064660331829 ascii.py 9 <- StreamConverter + 0 3064660331842 ascii.py 13 <- ? + 0 3064660331860 ascii.py 17 -> getregentry + 0 3064660331869 ascii.py 9 <- getregentry + 0 3064660331897 __init__.py 27 <- search_function + 0 3064660332263 func_abc.py 366 -> ? + 0 3064660333735 func_abc.py 1471 -> func_a + 0 3064661340597 func_abc.py 1006862 -> func_b + 0 3064662350504 func_abc.py 1009906 -> func_c + 0 3064663350678 func_abc.py 1000174 <- func_c + 0 3064663350700 func_abc.py 22 <- func_b + 0 3064663350709 func_abc.py 8 <- func_a + 0 3064663350717 func_abc.py 8 <- ? +^C + +The fifth column is indented by 2 spaces to show when a new function begins. +This shows which function is calling which - first a whole lot of +pre-processing, then working through the func_abc.py program. + +The TIME(us) column shows time since boot. + +The DELTA(us) column shows time from that line to the previous line, and +so can be a bit tricky to read. For example, the third last line of data output +shows the time elapsing between func_c returning and func_b returning as 22 +microseconds. + +The FILE column shows file that was being executed. + +If the output looks shuffled, check the CPU "C" and "TIME" columns, and +post sort based on TIME if necessary. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/py_funccalls_example.txt b/cddl/contrib/dtracetoolkit/Examples/py_funccalls_example.txt new file mode 100644 index 000000000000..0ac87803fd8d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/py_funccalls_example.txt @@ -0,0 +1,89 @@ +The following are examples of py_funccalls.d. + +This is a simple script to count executed PHP functions. Here it traces +an example program, Code/Python/func_abc.py + +# py_funccalls.d +Tracing... Hit Ctrl-C to end. +^C + + FILE FUNC CALLS + UserDict.py ? 1 + UserDict.py DictMixin 1 + UserDict.py IterableUserDict 1 + UserDict.py UserDict 1 + UserDict.py __init__ 1 + __init__.py ? 1 + __init__.py CodecRegistryError 1 + __init__.py normalize_encoding 1 + __init__.py search_function 1 + aliases.py ? 1 + ascii.py ? 1 + ascii.py Codec 1 + ascii.py StreamConverter 1 + ascii.py StreamReader 1 + ascii.py StreamWriter 1 + ascii.py getregentry 1 + codecs.py ? 1 + codecs.py Codec 1 + codecs.py StreamReader 1 + codecs.py StreamReaderWriter 1 + codecs.py StreamRecoder 1 + codecs.py StreamWriter 1 + copy_reg.py ? 1 + func_abc.py ? 1 + func_abc.py func_a 1 + func_abc.py func_b 1 + func_abc.py func_c 1 + linecache.py ? 1 + os.py ? 1 + os.py _Environ 1 + os.py __init__ 1 + os.py _get_exports_list 1 + posixpath.py ? 1 + posixpath.py basename 1 + posixpath.py dirname 1 + site.py ? 1 + site.py _Helper 1 + site.py _Printer 1 + site.py _init_pathinfo 1 + site.py abs__file__ 1 + site.py addsitepackages 1 + site.py aliasmbcs 1 + site.py execsitecustomize 1 + site.py main 1 + site.py removeduppaths 1 + site.py setcopyright 1 + site.py setencoding 1 + site.py sethelper 1 + site.py setquit 1 + stat.py ? 1 + types.py ? 1 + types.py _C 1 + warnings.py ? 1 + warnings.py _OptionError 1 + warnings.py _processoptions 1 + posixpath.py exists 2 + posixpath.py split 2 + site.py addsitedir 2 + warnings.py simplefilter 2 + copy_reg.py constructor 3 + copy_reg.py pickle 3 + site.py __init__ 3 + site.py addpackage 3 + stat.py S_IFMT 6 + stat.py S_ISDIR 6 + posixpath.py isdir 8 + os.py _exists 10 + <string> ? 11 + posixpath.py normcase 14 + site.py makepath 14 + posixpath.py join 20 + posixpath.py abspath 22 + posixpath.py isabs 22 + posixpath.py normpath 22 + +It tells you how many times each function was called, and which file this +function was associated with. In this case you can see most of the function +calls come from functions within the posixpath.py library. + diff --git a/cddl/contrib/dtracetoolkit/Examples/py_malloc_example.txt b/cddl/contrib/dtracetoolkit/Examples/py_malloc_example.txt new file mode 100644 index 000000000000..be8fc25a484f --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/py_malloc_example.txt @@ -0,0 +1,508 @@ +The following are examples of py_malloc.d + +This is an experimental script to identify who is calling malloc() for memory +allocation, and to print distribution plots of the requested bytes. Here you +can see it running on Code/Python/func_abc.py + +# py_malloc.d -c ./func_abc.py +Tracing... Hit Ctrl-C to end. +Function A +Function B +Function C + +Python malloc byte distributions by engine caller, + + libpython2.4.so.1.0`_PyUnicode_New, total bytes = 2 + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + libpython2.4.so.1.0`find_key, total bytes = 16 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + libpython2.4.so.1.0`PyInterpreterState_New, total bytes = 36 + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + libpython2.4.so.1.0`_PyImport_Init, total bytes = 60 + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + libpython2.4.so.1.0`PyThreadState_New, total bytes = 84 + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + libpython2.4.so.1.0`pmerge, total bytes = 132 + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@ 1 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 16 + 16 | 0 + + libpython2.4.so.1.0`PyThread_allocate_lock, total bytes = 144 + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 64 | 0 + + libpython2.4.so.1.0`convertsimple, total bytes = 210 + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 64 | 0 + + libc.so.1`strdup, total bytes = 451 + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@ 1 + 4 |@@@ 1 + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@ 8 + 32 |@@@@@@@@@@@@@@@ 6 + 64 | 0 + + libpython2.4.so.1.0`PyList_New, total bytes = 528 + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@ 22 + 8 |@@@@@@@@@@@@@@@@@ 21 + 16 |@@@@@ 6 + 32 | 0 + 64 | 0 + 128 |@ 1 + 256 | 0 + + libpython2.4.so.1.0`PyTokenizer_FromFile, total bytes = 1024 + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + libpython2.4.so.1.0`_PyExc_Init, total bytes = 1058 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 40 + 32 |@@ 2 + 64 | 0 + + libpython2.4.so.1.0`tok_new, total bytes = 1832 + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 1024 | 0 + + libpython2.4.so.1.0`fill_free_list, total bytes = 1976 + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 1024 | 0 + + libpython2.4.so.1.0`PyParser_New, total bytes = 12024 + value ------------- Distribution ------------- count + 2048 | 0 + 4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 8192 | 0 + + libpython2.4.so.1.0`PyObject_Malloc, total bytes = 35152 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@ 20 + 512 |@@@@@@@ 7 + 1024 |@@@@@@@@@@ 11 + 2048 |@@@@ 4 + 4096 | 0 + + libpython2.4.so.1.0`PyMem_Malloc, total bytes = 50683 + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@ 2 + 16 |@@@@@@@ 4 + 32 |@@ 1 + 64 |@@@@@@@@@@@@@ 8 + 128 |@@@@@ 3 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 |@@@@@@@@@@ 6 + 16384 | 0 + + libc.so.1`_findbuf, total bytes = 51800 + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@ 4 + 1024 |@@@@ 1 + 2048 | 0 + 4096 |@@@@@@@ 2 + 8192 |@@@@@@@@@@@@@@@ 4 + 16384 | 0 + + libpython2.4.so.1.0`dictresize, total bytes = 178752 + value ------------- Distribution ------------- count + 64 | 0 + 128 |@ 1 + 256 |@@@@@@@@@@@@@@@@@@@@@ 29 + 512 | 0 + 1024 |@@@@@@@@@@@@@@ 19 + 2048 |@ 1 + 4096 |@ 2 + 8192 | 0 + 16384 |@ 1 + 32768 | 0 + 65536 |@ 1 + 131072 | 0 + + libpython2.4.so.1.0`new_arena, total bytes = 262208 + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 | 0 + 16384 | 0 + 32768 | 0 + 65536 | 0 + 131072 | 0 + 262144 |@@@@@@@@@@@@@@@@@@@@ 1 + 524288 | 0 + + +Python malloc byte distributions by Python file and function, + + site.py, addsitepackages, bytes total = 4 + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + site.py, abs__file__, bytes total = 60 + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + posixpath.py, exists, bytes total = 83 + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + stat.py, S_ISDIR, bytes total = 364 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + site.py, _init_pathinfo, bytes total = 380 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + UserDict.py, DictMixin, bytes total = 384 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + codecs.py, StreamReader, bytes total = 384 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + codecs.py, StreamReaderWriter, bytes total = 384 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + codecs.py, StreamRecoder, bytes total = 384 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + codecs.py, StreamWriter, bytes total = 384 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + os.py, _Environ, bytes total = 384 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + site.py, _Printer, bytes total = 384 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + site.py, addsitedir, bytes total = 388 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + linecache.py, ?, bytes total = 396 + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + 32 | 0 + 64 | 0 + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + posixpath.py, isdir, bytes total = 608 + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@ 2 + 4 | 0 + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@ 7 + 32 |@@@@@@@ 2 + 64 | 0 + 128 | 0 + 256 |@@@ 1 + 512 | 0 + + os.py, _get_exports_list, bytes total = 612 + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + posixpath.py, abspath, bytes total = 728 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 512 | 0 + + site.py, execsitecustomize, bytes total = 790 + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 9 + 64 | 0 + 128 | 0 + 256 |@@@@ 1 + 512 | 0 + + UserDict.py, UserDict, bytes total = 1920 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + stat.py, ?, bytes total = 1920 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + types.py, ?, bytes total = 2680 + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@ 1 + 8 |@@@@@@@@@@@ 2 + 16 | 0 + 32 | 0 + 64 | 0 + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@ 3 + 512 | 0 + 1024 |@@@@@@ 1 + 2048 | 0 + + posixpath.py, ?, bytes total = 3306 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@ 2 + 32 | 0 + 64 | 0 + 128 | 0 + 256 |@@@@@@@@@@@@@@@@ 2 + 512 | 0 + 1024 | 0 + 2048 |@@@@@@@@ 1 + 4096 | 0 + + copy_reg.py, ?, bytes total = 3547 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@ 2 + 32 | 0 + 64 | 0 + 128 | 0 + 256 |@@@@@@@@ 1 + 512 |@@@@@@@@ 1 + 1024 | 0 + 2048 |@@@@@@@@ 1 + 4096 | 0 + + warnings.py, ?, bytes total = 3924 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@ 1 + 32 |@@@@@@@@ 1 + 64 | 0 + 128 | 0 + 256 |@@@@@@@@@@@@@@@@ 2 + 512 | 0 + 1024 | 0 + 2048 |@@@@@@@@ 1 + 4096 | 0 + + func_abc.py, func_a, bytes total = 5100 + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + 2048 | 0 + 4096 |@@@@@@@@@@@@@@@@@@@@ 1 + 8192 | 0 + + codecs.py, ?, bytes total = 5612 + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@ 1 + 128 |@@@@@@ 1 + 256 |@@@@@@@@@@@ 2 + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@ 3 + 2048 | 0 + + aliases.py, ?, bytes total = 8064 + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@ 1 + 512 | 0 + 1024 |@@@@@@@@@@@@@ 1 + 2048 | 0 + 4096 |@@@@@@@@@@@@@ 1 + 8192 | 0 + + func_abc.py, ?, bytes total = 16105 + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@ 1 + 8 |@@@@@ 2 + 16 |@@@@@@@@@ 4 + 32 |@@@@@ 2 + 64 | 0 + 128 |@@ 1 + 256 |@@@@@@@ 3 + 512 |@@ 1 + 1024 |@@@@@ 2 + 2048 | 0 + 4096 | 0 + 8192 |@@ 1 + 16384 | 0 + + os.py, ?, bytes total = 58957 + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@ 3 + 8 |@@@@@ 6 + 16 |@ 1 + 32 |@@ 2 + 64 | 0 + 128 |@ 1 + 256 |@@@@@@@@@@@@@@@@@@ 23 + 512 |@@ 3 + 1024 |@@@@@ 7 + 2048 | 0 + 4096 |@@@ 4 + 8192 |@ 1 + 16384 | 0 + + site.py, ?, bytes total = 62589 + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@ 2 + 32 | 0 + 64 | 0 + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 20 + 512 |@ 1 + 1024 |@@@ 2 + 2048 |@ 1 + 4096 | 0 + 8192 | 0 + 16384 |@@@ 2 + 32768 | 0 + + __init__.py, ?, bytes total = 62593 + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@ 1 + 2 | 0 + 4 | 0 + 8 | 0 + 16 |@@@ 2 + 32 |@@ 1 + 64 | 0 + 128 | 0 + 256 |@@@@@@@@@@@ 7 + 512 |@@@@@@@@@@@@@@@@ 10 + 1024 |@@@ 2 + 2048 | 0 + 4096 | 0 + 8192 | 0 + 16384 |@@@ 2 + 32768 | 0 + + posixpath.py, join, bytes total = 262144 + value ------------- Distribution ------------- count + 131072 | 0 + 262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 524288 | 0 + + os.py, _exists, bytes total = 362768 + value ------------- Distribution ------------- count + 2 | 0 + 4 |@ 10 + 8 |@ 10 + 16 |@@ 20 + 32 | 0 + 64 | 0 + 128 | 0 + 256 |@ 7 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 447 + 1024 |@@ 20 + 2048 | 0 + 4096 |@ 10 + 8192 | 0 + + +The results are divided into two sections. If a malloc() occurred while in a +Python function, then that function is identified as responsible; and the +results will appear in the second section - Python malloc byte distributions +by Python file and function. + +Otherwise the caller of malloc() is identified as responsible - which will be +a function from the Python engine, and these are noted in the first section - +Python malloc byte distributions by engine caller. diff --git a/cddl/contrib/dtracetoolkit/Examples/py_mallocstk_example.txt b/cddl/contrib/dtracetoolkit/Examples/py_mallocstk_example.txt new file mode 100644 index 000000000000..a466737f34b2 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/py_mallocstk_example.txt @@ -0,0 +1,314 @@ +Following are examples of running py_mallocstk.d. This traces malloc() from +Python, printing byte distributions by user stack trace. + +Here we see the script runnin on the program Code/Python/func_abc.py + +# py_mallocstk.d -c ./func_abc.py + +Tracing... Hit Ctrl-C to end. +Function A +Function B +Function C + +Python malloc byte distributions by stack trace, + + + + libc.so.1`malloc + libpython2.4.so.1.0`r_object+0x52f + libpython2.4.so.1.0`r_object+0x491 + libpython2.4.so.1.0`r_object+0xd3 + libpython2.4.so.1.0`r_object+0x491 + libpython2.4.so.1.0`r_object+0xd3 + libpython2.4.so.1.0`r_object+0x491 + libpython2.4.so.1.0`r_object+0xd3 + libpython2.4.so.1.0`PyMarshal_ReadObjectFromString+0x36 + libpython2.4.so.1.0`PyMarshal_ReadLastObjectFromFile+0x6a + libpython2.4.so.1.0`read_compiled_module+0xf + libpython2.4.so.1.0`load_source_module+0x63 + libpython2.4.so.1.0`load_module+0xac + libpython2.4.so.1.0`import_submodule+0xfb + libpython2.4.so.1.0`load_next+0xee + libpython2.4.so.1.0`import_module_ex+0x48 + libpython2.4.so.1.0`PyImport_ImportModuleEx+0x1d + libpython2.4.so.1.0`builtin___import__+0x4e + libpython2.4.so.1.0`PyCFunction_Call+0x15f + libpython2.4.so.1.0`PyObject_Call+0x1d + libpython2.4.so.1.0`PyEval_CallObjectWithKeywords+0xb8 + libpython2.4.so.1.0`PyEval_EvalFrame+0xd3c + [ /usr/lib/python2.4/encodings/__init__.py:28 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`PyImport_ExecCodeModuleEx+0xc0 + libpython2.4.so.1.0`load_source_module+0xe6 + libpython2.4.so.1.0`load_module+0xac + libpython2.4.so.1.0`load_package+0xef + libpython2.4.so.1.0`load_module+0x6a + libpython2.4.so.1.0`import_submodule+0xfb + libpython2.4.so.1.0`load_next+0xa2 + libpython2.4.so.1.0`import_module_ex+0x48 + libpython2.4.so.1.0`PyImport_ImportModuleEx+0x1d + libpython2.4.so.1.0`_PyCodecRegistry_Init+0xce + libpython2.4.so.1.0`_PyCodec_Lookup+0x2a + libpython2.4.so.1.0`PyCodec_Encoder+0xf + libpython2.4.so.1.0`Py_InitializeEx+0x257 + libpython2.4.so.1.0`Py_Initialize+0xd + libpython2.4.so.1.0`Py_Main+0x4db + python`main+0x11 + python`_start+0x7a + + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + + libc.so.1`malloc + libpython2.4.so.1.0`_PyUnicode_New+0xb2 + libpython2.4.so.1.0`_PyUnicodeUCS2_Init+0x19 + libpython2.4.so.1.0`Py_InitializeEx+0x11c + libpython2.4.so.1.0`Py_Initialize+0xd + libpython2.4.so.1.0`Py_Main+0x4db + python`main+0x11 + python`_start+0x7a + + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + + libc.so.1`malloc + libc.so.1`_real_gettext_u+0x81 + libc.so.1`dgettext+0x5e + libc.so.1`strerror+0x40 + libpython2.4.so.1.0`PyErr_SetFromErrnoWithFilenameObject+0x2d + libpython2.4.so.1.0`PyErr_SetFromErrnoWithFilename+0x27 + libpython2.4.so.1.0`posix_error_with_allocated_filename+0x17 + libpython2.4.so.1.0`posix_do_stat+0x21f + libpython2.4.so.1.0`posix_stat+0x1f + libpython2.4.so.1.0`PyCFunction_Call+0x15f + libpython2.4.so.1.0`call_function+0x406 + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/posixpath.py:195 (isdir) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:202 (addsitepackages) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:382 (main) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:397 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`PyImport_ExecCodeModuleEx+0xc0 + libpython2.4.so.1.0`load_source_module+0xe6 + libpython2.4.so.1.0`load_module+0xac + libpython2.4.so.1.0`import_submodule+0xfb + libpython2.4.so.1.0`load_next+0xa2 + libpython2.4.so.1.0`import_module_ex+0x48 + libpython2.4.so.1.0`PyImport_ImportModuleEx+0x1d + libpython2.4.so.1.0`builtin___import__+0x4e + libpython2.4.so.1.0`PyCFunction_Call+0x15f + libpython2.4.so.1.0`PyObject_Call+0x1d + libpython2.4.so.1.0`PyObject_CallFunction+0x90 + libpython2.4.so.1.0`PyImport_Import+0x163 + libpython2.4.so.1.0`PyImport_ImportModule+0x1f + libpython2.4.so.1.0`initsite+0x10 + libpython2.4.so.1.0`Py_InitializeEx+0x1ea + libpython2.4.so.1.0`Py_Initialize+0xd + libpython2.4.so.1.0`Py_Main+0x4db + python`main+0x11 + python`_start+0x7a + + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + +[... around 17000 lines truncated ...] + + + libc.so.1`malloc + libpython2.4.so.1.0`PyObject_Malloc+0x126 + libpython2.4.so.1.0`fixstate+0x26 + libpython2.4.so.1.0`fixdfa+0x2a + libpython2.4.so.1.0`PyGrammar_AddAccelerators+0x1b + libpython2.4.so.1.0`PyParser_New+0x18 + libpython2.4.so.1.0`parsetok+0x17 + libpython2.4.so.1.0`PyParser_ParseStringFlagsFilename+0x72 + libpython2.4.so.1.0`PyParser_ParseStringFlags+0x1c + libpython2.4.so.1.0`PyParser_SimpleParseStringFlags+0x23 + libpython2.4.so.1.0`PyRun_StringFlags+0x2c + libpython2.4.so.1.0`builtin_eval+0x273 + libpython2.4.so.1.0`PyCFunction_Call+0x15f + libpython2.4.so.1.0`call_function+0x406 + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/os.py:503 (_exists) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/os.py:509 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`PyImport_ExecCodeModuleEx+0xc0 + libpython2.4.so.1.0`load_source_module+0xe6 + libpython2.4.so.1.0`load_module+0xac + libpython2.4.so.1.0`import_submodule+0xfb + libpython2.4.so.1.0`load_next+0xa2 + libpython2.4.so.1.0`import_module_ex+0x48 + libpython2.4.so.1.0`PyImport_ImportModuleEx+0x1d + libpython2.4.so.1.0`builtin___import__+0x4e + libpython2.4.so.1.0`PyCFunction_Call+0x15f + libpython2.4.so.1.0`PyObject_Call+0x1d + libpython2.4.so.1.0`PyEval_CallObjectWithKeywords+0xb8 + libpython2.4.so.1.0`PyEval_EvalFrame+0xd3c + [ /usr/lib/python2.4/site.py:58 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`PyImport_ExecCodeModuleEx+0xc0 + libpython2.4.so.1.0`load_source_module+0xe6 + libpython2.4.so.1.0`load_module+0xac + libpython2.4.so.1.0`import_submodule+0xfb + libpython2.4.so.1.0`load_next+0xa2 + libpython2.4.so.1.0`import_module_ex+0x48 + libpython2.4.so.1.0`PyImport_ImportModuleEx+0x1d + libpython2.4.so.1.0`builtin___import__+0x4e + libpython2.4.so.1.0`PyCFunction_Call+0x15f + libpython2.4.so.1.0`PyObject_Call+0x1d + libpython2.4.so.1.0`PyObject_CallFunction+0x90 + libpython2.4.so.1.0`PyImport_Import+0x163 + libpython2.4.so.1.0`PyImport_ImportModule+0x1f + libpython2.4.so.1.0`initsite+0x10 + libpython2.4.so.1.0`Py_InitializeEx+0x1ea + libpython2.4.so.1.0`Py_Initialize+0xd + libpython2.4.so.1.0`Py_Main+0x4db + python`main+0x11 + python`_start+0x7a + + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 331 + 1024 | 0 + + + libc.so.1`malloc + libpython2.4.so.1.0`new_arena+0x13 + libpython2.4.so.1.0`PyObject_Malloc+0x91 + libpython2.4.so.1.0`string_concat+0x109 + libpython2.4.so.1.0`PyString_Concat+0x3b + libpython2.4.so.1.0`string_concatenate+0x150 + libpython2.4.so.1.0`PyEval_EvalFrame+0x27cc + [ /usr/lib/python2.4/posixpath.py:62 (join) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`function_call+0x15e + libpython2.4.so.1.0`PyObject_Call+0x1d + libpython2.4.so.1.0`ext_do_call+0xfb + libpython2.4.so.1.0`PyEval_EvalFrame+0xb4f + [ /usr/lib/python2.4/site.py:66 (makepath) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`fast_function+0x112 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:138 (addpackage) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`fast_function+0x112 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:166 (addsitedir) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`fast_function+0x112 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ <string>:1 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`run_node+0x35 + libpython2.4.so.1.0`run_err_node+0x1f + libpython2.4.so.1.0`PyRun_String+0x27 + libpython2.4.so.1.0`exec_statement+0x2b0 + libpython2.4.so.1.0`PyEval_EvalFrame+0x15d6 + [ /usr/lib/python2.4/site.py:134 (addpackage) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`fast_function+0x112 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:166 (addsitedir) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`fast_function+0x112 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:203 (addsitepackages) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:382 (main) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ /usr/lib/python2.4/site.py:397 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`PyImport_ExecCodeModuleEx+0xc0 + libpython2.4.so.1.0`load_source_module+0xe6 + libpython2.4.so.1.0`load_module+0xac + libpython2.4.so.1.0`import_submodule+0xfb + libpython2.4.so.1.0`load_next+0xa2 + libpython2.4.so.1.0`import_module_ex+0x48 + libpython2.4.so.1.0`PyImport_ImportModuleEx+0x1d + libpython2.4.so.1.0`builtin___import__+0x4e + libpython2.4.so.1.0`PyCFunction_Call+0x15f + libpython2.4.so.1.0`PyObject_Call+0x1d + libpython2.4.so.1.0`PyObject_CallFunction+0x90 + libpython2.4.so.1.0`PyImport_Import+0x163 + libpython2.4.so.1.0`PyImport_ImportModule+0x1f + libpython2.4.so.1.0`initsite+0x10 + libpython2.4.so.1.0`Py_InitializeEx+0x1ea + libpython2.4.so.1.0`Py_Initialize+0xd + libpython2.4.so.1.0`Py_Main+0x4db + + value ------------- Distribution ------------- count + 131072 | 0 + 262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 524288 | 0 + + + libc.so.1`malloc + libpython2.4.so.1.0`new_arena+0x13 + libpython2.4.so.1.0`PyObject_Malloc+0x91 + libpython2.4.so.1.0`_PyObject_GC_Malloc+0x13 + libpython2.4.so.1.0`_PyObject_GC_NewVar+0x24 + libpython2.4.so.1.0`PyTuple_New+0x78 + libpython2.4.so.1.0`PyType_Ready+0x98 + libpython2.4.so.1.0`PyType_Ready+0x60 + libpython2.4.so.1.0`_Py_ReadyTypes+0x10 + libpython2.4.so.1.0`Py_InitializeEx+0xed + libpython2.4.so.1.0`Py_Initialize+0xd + libpython2.4.so.1.0`Py_Main+0x4db + python`main+0x11 + python`_start+0x7a + + value ------------- Distribution ------------- count + 131072 | 0 + 262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 524288 | 0 + + +This output looks a little unusual at first glance, and can be confusing for +people unfamiliar with stack tracing and Python engine internals. + +Start by looking at the distribution plots below each stack trace - each plot +shows how many bytes were requested as a histogram by byte size. This should +indicated to you if python is malloc()ing much memory or not, and whether it +is doing so in a few large malloc()s or many small ones. + +With this information in mind you can inspect the stack traces - these explain +why Python called malloc() in that instance, along with translations of Python +functions buried in the stack trace. The stack traces can be hard to read at +first (or even at second or at third) - since you are examining Python engine +internals. Try looking for lines in square brackets - those are Python language +frames, and will show where (or if) the malloc() was caused by Python code. diff --git a/cddl/contrib/dtracetoolkit/Examples/py_profile_example.txt b/cddl/contrib/dtracetoolkit/Examples/py_profile_example.txt new file mode 100644 index 000000000000..04c06886e4c2 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/py_profile_example.txt @@ -0,0 +1,399 @@ +The following are examples of py_profile.d. + +This samples stack traces for the process specified. This stack trace will +cross the Python engine and system libraries, and insert translations for +Python stack frames where appropriate. Here you can see it running on +Code/Python/func_slow.py + +# py_profile.d -c ./func_slow.py +Sampling 10-level stacks at 1001 Hertz... Hit Ctrl-C to end. +Function A +Function B +Function C +Top 25 most frequently sampled stacks, + + + libpython2.4.so.1.0`PyEval_EvalFrame+0x266 + [ ./func_slow.py:3 (func_c) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:16 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + 11 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x278 + [ ./func_slow.py:3 (func_c) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:16 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + 11 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x278a + [ ./func_slow.py:10 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`run_node+0x35 + 11 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x205 + [ ./func_slow.py:18 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`run_node+0x35 + libpython2.4.so.1.0`run_err_node+0x1f + libpython2.4.so.1.0`PyRun_FileExFlags+0x5e + libpython2.4.so.1.0`PyRun_SimpleFileExFlags+0x12f + 12 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x1fe + [ ./func_slow.py:10 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`run_node+0x35 + 13 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x35d + [ ./func_slow.py:10 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`run_node+0x35 + 13 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x1f5 + [ ./func_slow.py:10 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`run_node+0x35 + 14 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x149 + [ ./func_slow.py:3 (func_c) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:16 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + 14 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x5aa + [ ./func_slow.py:3 (func_c) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:16 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + 14 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x58f + [ ./func_slow.py:3 (func_c) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:16 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + 15 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x58f + [ ./func_slow.py:10 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`run_node+0x35 + 15 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x254 + [ ./func_slow.py:3 (func_c) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:16 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + 17 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x286 + [ ./func_slow.py:3 (func_c) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:16 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + 17 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x2fbf + [ ./func_slow.py:3 (func_c) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:16 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + 17 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x35d + [ ./func_slow.py:3 (func_c) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:16 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + 18 + + libc.so.1`ioctl+0x7 + libpython2.4.so.1.0`_init+0x25 + ld.so.1`call_init+0xff + ld.so.1`setup+0xf93 + ld.so.1`_setup+0x310 + ld.so.1`_rt_boot+0x56 + 0x8047e5c + 19 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x5a4 + [ ./func_slow.py:18 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`run_node+0x35 + libpython2.4.so.1.0`run_err_node+0x1f + libpython2.4.so.1.0`PyRun_FileExFlags+0x5e + libpython2.4.so.1.0`PyRun_SimpleFileExFlags+0x12f + 20 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x5ba + [ ./func_slow.py:3 (func_c) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:16 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + 20 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x583 + [ ./func_slow.py:10 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`run_node+0x35 + 22 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x5a4 + [ ./func_slow.py:10 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`run_node+0x35 + 22 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x278a + [ ./func_slow.py:3 (func_c) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:16 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + 24 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x205 + [ ./func_slow.py:10 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + libpython2.4.so.1.0`PyEval_EvalCodeEx+0x732 + libpython2.4.so.1.0`PyEval_EvalCode+0x22 + libpython2.4.so.1.0`run_node+0x35 + 25 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x583 + [ ./func_slow.py:3 (func_c) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:16 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + 35 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x5a4 + [ ./func_slow.py:3 (func_c) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:16 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + 47 + + libpython2.4.so.1.0`PyEval_EvalFrame+0x205 + [ ./func_slow.py:3 (func_c) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:16 (func_b) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:24 (func_a) ] + libpython2.4.so.1.0`fast_function+0xa8 + libpython2.4.so.1.0`call_function+0xda + libpython2.4.so.1.0`PyEval_EvalFrame+0xbdf + [ ./func_slow.py:26 (?) ] + 50 + + The lines in square brackets are the native Python frames, the rest + are the Python engine. + diff --git a/cddl/contrib/dtracetoolkit/Examples/py_syscalls_example.txt b/cddl/contrib/dtracetoolkit/Examples/py_syscalls_example.txt new file mode 100644 index 000000000000..3aac3d28e882 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/py_syscalls_example.txt @@ -0,0 +1,129 @@ +The following are examples of py_syscalls.d. + +This is a simple script to count executed Python functions and system calls. +Here it traces an example program, Code/Pythong/func_abc.py. + +# py_syscalls.d -c ./func_abc.py +Tracing... Hit Ctrl-C to end. +Function A +Function B +Function C + +Calls for PID 145538, + + FILE TYPE NAME COUNT + UserDict.py func ? 1 + UserDict.py func DictMixin 1 + UserDict.py func IterableUserDict 1 + UserDict.py func UserDict 1 + UserDict.py func __init__ 1 + __init__.py func ? 1 + __init__.py func CodecRegistryError 1 + __init__.py func normalize_encoding 1 + __init__.py func search_function 1 + aliases.py func ? 1 + ascii.py func ? 1 + ascii.py func Codec 1 + ascii.py func StreamConverter 1 + ascii.py func StreamReader 1 + ascii.py func StreamWriter 1 + ascii.py func getregentry 1 + codecs.py func ? 1 + codecs.py func Codec 1 + codecs.py func StreamReader 1 + codecs.py func StreamReaderWriter 1 + codecs.py func StreamRecoder 1 + codecs.py func StreamWriter 1 + copy_reg.py func ? 1 + func_abc.py func ? 1 + func_abc.py func func_a 1 + func_abc.py func func_b 1 + func_abc.py func func_c 1 + func_abc.py syscall getrlimit 1 + func_abc.py syscall gtime 1 + func_abc.py syscall memcntl 1 + func_abc.py syscall rexit 1 + func_abc.py syscall sigpending 1 + func_abc.py syscall sysi86 1 + func_abc.py syscall write 1 + func_abc.py syscall xstat 1 + linecache.py func ? 1 + os.py func ? 1 + os.py func _Environ 1 + os.py func __init__ 1 + os.py func _get_exports_list 1 + posixpath.py func ? 1 + posixpath.py func basename 1 + posixpath.py func dirname 1 + site.py func ? 1 + site.py func _Helper 1 + site.py func _Printer 1 + site.py func _init_pathinfo 1 + site.py func abs__file__ 1 + site.py func addsitepackages 1 + site.py func aliasmbcs 1 + site.py func execsitecustomize 1 + site.py func main 1 + site.py func removeduppaths 1 + site.py func setcopyright 1 + site.py func setencoding 1 + site.py func sethelper 1 + site.py func setquit 1 + stat.py func ? 1 + types.py func ? 1 + types.py func _C 1 + warnings.py func ? 1 + warnings.py func _OptionError 1 + warnings.py func _processoptions 1 + func_abc.py syscall fcntl 2 + func_abc.py syscall fsat 2 + func_abc.py syscall getcwd 2 + func_abc.py syscall getpid 2 + func_abc.py syscall mprotect 2 + func_abc.py syscall readlink 2 + func_abc.py syscall resolvepath 2 + func_abc.py syscall setcontext 2 + posixpath.py func exists 2 + posixpath.py func split 2 + site.py func addsitedir 2 + warnings.py func simplefilter 2 + copy_reg.py func constructor 3 + copy_reg.py func pickle 3 + func_abc.py syscall munmap 3 + func_abc.py syscall pollsys 3 + site.py func __init__ 3 + site.py func addpackage 3 + func_abc.py syscall getdents64 4 + func_abc.py syscall open 4 + func_abc.py syscall sysconfig 4 + func_abc.py syscall mmap 5 + func_abc.py syscall lwp_exit 6 + stat.py func S_IFMT 6 + stat.py func S_ISDIR 6 + posixpath.py func isdir 8 + os.py func _exists 10 + <string> func ? 11 + posixpath.py func normcase 14 + site.py func makepath 14 + posixpath.py func join 20 + posixpath.py func abspath 22 + posixpath.py func isabs 22 + posixpath.py func normpath 22 + func_abc.py syscall ioctl 28 + func_abc.py syscall llseek 34 + func_abc.py syscall read 36 + func_abc.py syscall close 41 + func_abc.py syscall sigaction 52 + func_abc.py syscall brk 58 + func_abc.py syscall fstat64 74 + func_abc.py syscall stat64 77 + func_abc.py syscall open64 173 + +While tracing there were numerous system calls made, including 173 open64()'s, +and 77 stat64()'s. There were also many functions called, including 22 each +of abspath, isabs, and normpath by the posixpath.py library. + +This script can provide an insight to how an application is interacting +with the system, by providing both application function calls and +system calls in the same output. + diff --git a/cddl/contrib/dtracetoolkit/Examples/py_syscolors_example.txt b/cddl/contrib/dtracetoolkit/Examples/py_syscolors_example.txt new file mode 100644 index 000000000000..0a6367f9fe6d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/py_syscolors_example.txt @@ -0,0 +1,584 @@ +The following are examples of py_syscolors.d. + +This is a simple script to trace the flow of Python functons and system +calls made, and renders the output in color ("colour") using terminal +escape sequences (which you can tweak by modifying the script). + +Here it traces the example program, Code/Python/func_abc.py. + +WARNING: This output is full of terminal escape sequences, so if you are +trying to view this through an editor or web browser - it may look awful. +Try viewing this using "more" (although, depending on your terminal, it +still may look awful). + +# py_syscolors.d -c ./func_abc.py +C PID DELTA(us) FILE:LINE TYPE -- NAME +[2;32m0 145544 2 ":- syscall -> munmap[0m +[2;32m0 145544 34 ":- syscall <- munmap[0m +[2;32m0 145544 56 ":- syscall -> mmap[0m +[2;32m0 145544 19 ":- syscall <- mmap[0m +[2;32m0 145544 42 ":- syscall -> setcontext[0m +[2;32m0 145544 10 ":- syscall <- setcontext[0m +[2;32m0 145544 9 ":- syscall -> getrlimit[0m +[2;32m0 145544 10 ":- syscall <- getrlimit[0m +[2;32m0 145544 9 ":- syscall -> getpid[0m +[2;32m0 145544 8 ":- syscall <- getpid[0m +[2;32m0 145544 68 ":- syscall -> setcontext[0m +[2;32m0 145544 8 ":- syscall <- setcontext[0m +[2;32m0 145544 121 ":- syscall -> sigpending[0m +[2;32m0 145544 9 ":- syscall <- sigpending[0m +[2;32m0 145544 172 ":- syscall -> open64[0m +[2;32m0 145544 114 ":- syscall <- open64[0m +[2;32m0 145544 14 ":- syscall -> ioctl[0m +[2;32m0 145544 28209 ":- syscall <- ioctl[0m +[2;32m0 145544 285 ":- syscall -> close[0m +[2;32m0 145544 31 ":- syscall <- close[0m +[2;32m0 145544 41 ":- syscall -> open64[0m +[2;32m0 145544 88 ":- syscall <- open64[0m +[2;32m0 145544 9 ":- syscall -> ioctl[0m +[2;32m0 145544 293 ":- syscall <- ioctl[0m +[2;32m0 145544 11 ":- syscall -> close[0m +[2;32m0 145544 13 ":- syscall <- close[0m +[2;32m0 145544 1182 ":- syscall -> sysi86[0m +[2;32m0 145544 12 ":- syscall <- sysi86[0m +[2;32m0 145544 143 ":- syscall -> sysconfig[0m +[2;32m0 145544 53 ":- syscall <- sysconfig[0m +[2;32m0 145544 95 ":- syscall -> open64[0m +[2;32m0 145544 22 ":- syscall <- open64[0m +[2;32m0 145544 11 ":- syscall -> fstat64[0m +[2;32m0 145544 10 ":- syscall <- fstat64[0m +[2;32m0 145544 31 ":- syscall -> ioctl[0m +[2;32m0 145544 42 ":- syscall <- ioctl[0m +[2;32m0 145544 24 ":- syscall -> brk[0m +[2;32m0 145544 10 ":- syscall <- brk[0m +[2;32m0 145544 8 ":- syscall -> brk[0m +[2;32m0 145544 17 ":- syscall <- brk[0m +[2;32m0 145544 30 ":- syscall -> sysconfig[0m +[2;32m0 145544 8 ":- syscall <- sysconfig[0m +[2;32m0 145544 32 ":- syscall -> brk[0m +[2;32m0 145544 7 ":- syscall <- brk[0m +[2;32m0 145544 8 ":- syscall -> brk[0m + +[... 1400 lines truncated ...] + +[2;32m0 145544 8 ":- syscall -> fstat64[0m +[2;32m0 145544 7 ":- syscall <- fstat64[0m +[2;32m0 145544 11 ":- syscall -> read[0m +[2;32m0 145544 8 ":- syscall <- read[0m +[2;32m0 145544 29 ":- syscall -> brk[0m +[2;32m0 145544 8 ":- syscall <- brk[0m +[2;32m0 145544 8 ":- syscall -> brk[0m +[2;32m0 145544 10 ":- syscall <- brk[0m +[2;32m0 145544 393 ":- syscall -> llseek[0m +[2;32m0 145544 8 ":- syscall <- llseek[0m +[2;32m0 145544 9 ":- syscall -> close[0m +[2;32m0 145544 9 ":- syscall <- close[0m +[2;35m0 145544 14 aliases.py:17 func -> ?[0m +[2;35m0 145544 57 aliases.py:18 func <- ?[0m +[2;32m0 145544 20 ":- syscall -> llseek[0m +[2;32m0 145544 8 ":- syscall <- llseek[0m +[2;32m0 145544 8 ":- syscall -> close[0m +[2;32m0 145544 8 ":- syscall <- close[0m +[2;35m0 145544 15 __init__.py:43 func -> CodecRegistryError[0m +[2;35m0 145544 12 __init__.py:45 func <- CodecRegistryError[0m +[2;35m0 145544 26 __init__.py:145 func <- ?[0m +[2;32m0 145544 18 ":- syscall -> llseek[0m +[2;32m0 145544 8 ":- syscall <- llseek[0m +[2;32m0 145544 8 ":- syscall -> close[0m +[2;32m0 145544 9 ":- syscall <- close[0m +[2;35m0 145544 13 __init__.py:69 func -> search_function[0m +[2;35m0 145544 14 __init__.py:47 func -> normalize_encoding[0m +[2;35m0 145544 18 __init__.py:67 func <- normalize_encoding[0m +[2;32m0 145544 29 ":- syscall -> stat64[0m +[2;32m0 145544 20 ":- syscall <- stat64[0m +[2;32m0 145544 10 ":- syscall -> open64[0m +[2;32m0 145544 18 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 17 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 18 ":- syscall <- open64[0m +[2;32m0 145544 9 ":- syscall -> fstat64[0m +[2;32m0 145544 8 ":- syscall <- fstat64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 18 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> fstat64[0m +[2;32m0 145544 8 ":- syscall <- fstat64[0m +[2;32m0 145544 9 ":- syscall -> fstat64[0m +[2;32m0 145544 7 ":- syscall <- fstat64[0m +[2;32m0 145544 8 ":- syscall -> ioctl[0m +[2;32m0 145544 7 ":- syscall <- ioctl[0m +[2;32m0 145544 8 ":- syscall -> read[0m +[2;32m0 145544 19 ":- syscall <- read[0m +[2;32m0 145544 8 ":- syscall -> fstat64[0m +[2;32m0 145544 8 ":- syscall <- fstat64[0m +[2;32m0 145544 8 ":- syscall -> read[0m +[2;32m0 145544 8 ":- syscall <- read[0m +[2;32m0 145544 22 ":- syscall -> llseek[0m +[2;32m0 145544 8 ":- syscall <- llseek[0m +[2;32m0 145544 8 ":- syscall -> close[0m +[2;32m0 145544 9 ":- syscall <- close[0m +[2;35m0 145544 12 ascii.py:8 func -> ?[0m +[2;35m0 145544 16 ascii.py:13 func -> Codec[0m +[2;35m0 145544 12 ascii.py:18 func <- Codec[0m +[2;35m0 145544 22 ascii.py:20 func -> StreamWriter[0m +[2;35m0 145544 11 ascii.py:21 func <- StreamWriter[0m +[2;35m0 145544 20 ascii.py:23 func -> StreamReader[0m +[2;35m0 145544 11 ascii.py:24 func <- StreamReader[0m +[2;35m0 145544 32 ascii.py:26 func -> StreamConverter[0m +[2;35m0 145544 12 ascii.py:29 func <- StreamConverter[0m +[2;35m0 145544 21 ascii.py:33 func <- ?[0m +[2;32m0 145544 17 ":- syscall -> llseek[0m +[2;32m0 145544 8 ":- syscall <- llseek[0m +[2;32m0 145544 8 ":- syscall -> close[0m +[2;32m0 145544 8 ":- syscall <- close[0m +[2;35m0 145544 13 ascii.py:33 func -> getregentry[0m +[2;35m0 145544 12 ascii.py:35 func <- getregentry[0m +[2;35m0 145544 34 __init__.py:142 func <- search_function[0m +[2;32m0 145544 23 ":- syscall -> ioctl[0m +[2;32m0 145544 42 ":- syscall <- ioctl[0m +[2;32m0 145544 11 ":- syscall -> ioctl[0m +[2;32m0 145544 9 ":- syscall <- ioctl[0m +[2;32m0 145544 12 ":- syscall -> readlink[0m +[2;32m0 145544 16 ":- syscall <- readlink[0m +[2;32m0 145544 20 ":- syscall -> resolvepath[0m +[2;32m0 145544 18 ":- syscall <- resolvepath[0m +[2;32m0 145544 12 ":- syscall -> getcwd[0m +[2;32m0 145544 20 ":- syscall <- getcwd[0m +[2;32m0 145544 27 ":- syscall -> ioctl[0m +[2;32m0 145544 8 ":- syscall <- ioctl[0m +[2;32m0 145544 14 ":- syscall -> llseek[0m +[2;32m0 145544 7 ":- syscall <- llseek[0m +[2;32m0 145544 8 ":- syscall -> fstat64[0m +[2;32m0 145544 8 ":- syscall <- fstat64[0m +[2;32m0 145544 8 ":- syscall -> fstat64[0m +[2;32m0 145544 7 ":- syscall <- fstat64[0m +[2;32m0 145544 8 ":- syscall -> ioctl[0m +[2;32m0 145544 7 ":- syscall <- ioctl[0m +[2;32m0 145544 8 ":- syscall -> read[0m +[2;32m0 145544 19 ":- syscall <- read[0m +[2;32m0 145544 9 ":- syscall -> llseek[0m +[2;32m0 145544 7 ":- syscall <- llseek[0m +[2;32m0 145544 8 ":- syscall -> llseek[0m +[2;32m0 145544 7 ":- syscall <- llseek[0m +[2;32m0 145544 12 ":- syscall -> read[0m +[2;32m0 145544 13 ":- syscall <- read[0m +[2;32m0 145544 105 ":- syscall -> read[0m +[2;32m0 145544 9 ":- syscall <- read[0m +[2;32m0 145544 10 ":- syscall -> llseek[0m +[2;32m0 145544 7 ":- syscall <- llseek[0m +[2;32m0 145544 8 ":- syscall -> close[0m +[2;32m0 145544 9 ":- syscall <- close[0m +[2;35m0 145544 117 func_abc.py:3 func -> ?[0m +[2;32m0 145544 20 ":- syscall -> stat64[0m +[2;32m0 145544 15 ":- syscall <- stat64[0m +[2;32m0 145544 10 ":- syscall -> stat64[0m +[2;32m0 145544 13 ":- syscall <- stat64[0m +[2;32m0 145544 10 ":- syscall -> open64[0m +[2;32m0 145544 15 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 13 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 13 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 13 ":- syscall <- open64[0m +[2;32m0 145544 9 ":- syscall -> stat64[0m +[2;32m0 145544 13 ":- syscall <- stat64[0m +[2;32m0 145544 9 ":- syscall -> open64[0m +[2;32m0 145544 13 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 13 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 13 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 13 ":- syscall <- open64[0m +[2;32m0 145544 9 ":- syscall -> stat64[0m +[2;32m0 145544 15 ":- syscall <- stat64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 15 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 15 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 15 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 15 ":- syscall <- open64[0m +[2;32m0 145544 9 ":- syscall -> stat64[0m +[2;32m0 145544 17 ":- syscall <- stat64[0m +[2;32m0 145544 9 ":- syscall -> open64[0m +[2;32m0 145544 17 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 16 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 16 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 16 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> stat64[0m +[2;32m0 145544 17 ":- syscall <- stat64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 17 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 16 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 16 ":- syscall <- open64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 16 ":- syscall <- open64[0m +[2;32m0 145544 9 ":- syscall -> stat64[0m +[2;32m0 145544 17 ":- syscall <- stat64[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 19 ":- syscall <- open64[0m +[2;32m0 145544 14 ":- syscall -> fstat64[0m +[2;32m0 145544 9 ":- syscall <- fstat64[0m +[2;32m0 145544 20 ":- syscall -> xstat[0m +[2;32m0 145544 18 ":- syscall <- xstat[0m +[2;32m0 145544 8 ":- syscall -> resolvepath[0m +[2;32m0 145544 19 ":- syscall <- resolvepath[0m +[2;32m0 145544 10 ":- syscall -> open[0m +[2;32m0 145544 19 ":- syscall <- open[0m +[2;32m0 145544 10 ":- syscall -> mmap[0m +[2;32m0 145544 21 ":- syscall <- mmap[0m +[2;32m0 145544 33 ":- syscall -> mmap[0m +[2;32m0 145544 13 ":- syscall <- mmap[0m +[2;32m0 145544 9 ":- syscall -> mmap[0m +[2;32m0 145544 16 ":- syscall <- mmap[0m +[2;32m0 145544 8 ":- syscall -> mmap[0m +[2;32m0 145544 11 ":- syscall <- mmap[0m +[2;32m0 145544 34 ":- syscall -> munmap[0m +[2;32m0 145544 11 ":- syscall <- munmap[0m +[2;32m0 145544 43 ":- syscall -> memcntl[0m +[2;32m0 145544 13 ":- syscall <- memcntl[0m +[2;32m0 145544 8 ":- syscall -> close[0m +[2;32m0 145544 9 ":- syscall <- close[0m +[2;32m0 145544 30 ":- syscall -> mprotect[0m +[2;32m0 145544 13 ":- syscall <- mprotect[0m +[2;32m0 145544 169 ":- syscall -> mprotect[0m +[2;32m0 145544 13 ":- syscall <- mprotect[0m +[2;32m0 145544 2 ":- syscall <- nosys[0m +[2;32m0 145544 280 ":- syscall -> open[0m +[2;32m0 145544 90 ":- syscall <- open[0m +[2;32m0 145544 154 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 214 ":- syscall -> ioctl[0m +[2;32m0 145544 301 ":- syscall <- ioctl[0m +[2;32m0 145544 186 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 210 ":- syscall -> close[0m +[2;32m0 145544 18 ":- syscall <- close[0m +[2;32m0 145544 146 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 208 ":- syscall -> open[0m +[2;32m0 145544 73 ":- syscall <- open[0m +[2;32m0 145544 151 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 209 ":- syscall -> ioctl[0m +[2;32m0 145544 45 ":- syscall <- ioctl[0m +[2;32m0 145544 171 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 194 ":- syscall -> close[0m +[2;32m0 145544 17 ":- syscall <- close[0m +[2;32m0 145544 145 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 203 ":- syscall -> open[0m +[2;32m0 145544 63 ":- syscall <- open[0m +[2;32m0 145544 150 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 209 ":- syscall -> ioctl[0m +[2;32m0 145544 280 ":- syscall <- ioctl[0m +[2;32m0 145544 185 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 193 ":- syscall -> close[0m +[2;32m0 145544 17 ":- syscall <- close[0m +[2;32m0 145544 145 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 230 ":- syscall -> open[0m +[2;32m0 145544 82 ":- syscall <- open[0m +[2;32m0 145544 151 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 210 ":- syscall -> ioctl[0m +[2;32m0 145544 45 ":- syscall <- ioctl[0m +[2;32m0 145544 171 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 195 ":- syscall -> close[0m +[2;32m0 145544 18 ":- syscall <- close[0m +[2;32m0 145544 145 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 204 ":- syscall -> open[0m +[2;32m0 145544 64 ":- syscall <- open[0m +[2;32m0 145544 149 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 208 ":- syscall -> ioctl[0m +[2;32m0 145544 283 ":- syscall <- ioctl[0m +[2;32m0 145544 184 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 192 ":- syscall -> close[0m +[2;32m0 145544 17 ":- syscall <- close[0m +[2;32m0 145544 146 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 209 ":- syscall -> open[0m +[2;32m0 145544 72 ":- syscall <- open[0m +[2;32m0 145544 150 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 209 ":- syscall -> ioctl[0m +[2;32m0 145544 45 ":- syscall <- ioctl[0m +[2;32m0 145544 171 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 198 ":- syscall -> close[0m +[2;32m0 145544 17 ":- syscall <- close[0m +[2;32m0 145544 860 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 223 ":- syscall -> open[0m +[2;32m0 145544 83 ":- syscall <- open[0m +[2;32m0 145544 151 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 213 ":- syscall -> ioctl[0m +[2;32m0 145544 281 ":- syscall <- ioctl[0m +[2;32m0 145544 187 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 196 ":- syscall -> close[0m +[2;32m0 145544 19 ":- syscall <- close[0m +[2;32m0 145544 145 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 209 ":- syscall -> open[0m +[2;32m0 145544 69 ":- syscall <- open[0m +[2;32m0 145544 151 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 213 ":- syscall -> ioctl[0m +[2;32m0 145544 47 ":- syscall <- ioctl[0m +[2;32m0 145544 173 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 199 ":- syscall -> close[0m +[2;32m0 145544 18 ":- syscall <- close[0m +[2;32m0 145544 144 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 212 ":- syscall -> open[0m +[2;32m0 145544 67 ":- syscall <- open[0m +[2;32m0 145544 149 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 213 ":- syscall -> ioctl[0m +[2;32m0 145544 282 ":- syscall <- ioctl[0m +[2;32m0 145544 187 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 197 ":- syscall -> close[0m +[2;32m0 145544 59 ":- syscall <- close[0m +[2;32m0 145544 637 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 222 ":- syscall -> open[0m +[2;32m0 145544 80 ":- syscall <- open[0m +[2;32m0 145544 151 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 214 ":- syscall -> ioctl[0m +[2;32m0 145544 47 ":- syscall <- ioctl[0m +[2;32m0 145544 172 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 199 ":- syscall -> close[0m +[2;32m0 145544 19 ":- syscall <- close[0m +[2;32m0 145544 144 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 205 ":- syscall -> open[0m +[2;32m0 145544 62 ":- syscall <- open[0m +[2;32m0 145544 150 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 211 ":- syscall -> ioctl[0m +[2;32m0 145544 304 ":- syscall <- ioctl[0m +[2;32m0 145544 190 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 197 ":- syscall -> close[0m +[2;32m0 145544 17 ":- syscall <- close[0m +[2;32m0 145544 145 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 211 ":- syscall -> open[0m +[2;32m0 145544 70 ":- syscall <- open[0m +[2;32m0 145544 149 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 211 ":- syscall -> ioctl[0m +[2;32m0 145544 46 ":- syscall <- ioctl[0m +[2;32m0 145544 172 ":- syscall -> lwp_exit[0m +[2;32m0 145544 2 ":- syscall <- nosys[0m +[2;32m0 145544 260 ":- syscall -> close[0m +[2;32m0 145544 26 ":- syscall <- close[0m +[2;32m0 145544 160 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 207 ":- syscall -> open[0m +[2;32m0 145544 79 ":- syscall <- open[0m +[2;32m0 145544 151 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 216 ":- syscall -> ioctl[0m +[2;32m0 145544 274 ":- syscall <- ioctl[0m +[2;32m0 145544 187 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 195 ":- syscall -> close[0m +[2;32m0 145544 17 ":- syscall <- close[0m +[2;32m0 145544 145 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 211 ":- syscall -> open[0m +[2;32m0 145544 70 ":- syscall <- open[0m +[2;32m0 145544 149 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 214 ":- syscall -> ioctl[0m +[2;32m0 145544 48 ":- syscall <- ioctl[0m +[2;32m0 145544 173 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 201 ":- syscall -> close[0m +[2;32m0 145544 17 ":- syscall <- close[0m +[2;32m0 145544 145 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 211 ":- syscall -> open[0m +[2;32m0 145544 65 ":- syscall <- open[0m +[2;32m0 145544 150 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 213 ":- syscall -> ioctl[0m +[2;32m0 145544 324 ":- syscall <- ioctl[0m +[2;32m0 145544 342 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 203 ":- syscall -> close[0m +[2;32m0 145544 19 ":- syscall <- close[0m +[2;32m0 145544 145 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 213 ":- syscall -> open[0m +[2;32m0 145544 76 ":- syscall <- open[0m +[2;32m0 145544 150 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 214 ":- syscall -> ioctl[0m +[2;32m0 145544 48 ":- syscall <- ioctl[0m +[2;32m0 145544 174 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 198 ":- syscall -> close[0m +[2;32m0 145544 18 ":- syscall <- close[0m +[2;32m0 145544 146 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 206 ":- syscall -> open[0m +[2;32m0 145544 63 ":- syscall <- open[0m +[2;32m0 145544 150 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 213 ":- syscall -> ioctl[0m +[2;32m0 145544 272 ":- syscall <- ioctl[0m +[2;32m0 145544 185 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 194 ":- syscall -> close[0m +[2;32m0 145544 17 ":- syscall <- close[0m +[2;32m0 145544 146 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 213 ":- syscall -> open[0m +[2;32m0 145544 70 ":- syscall <- open[0m +[2;32m0 145544 151 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 214 ":- syscall -> ioctl[0m +[2;32m0 145544 47 ":- syscall <- ioctl[0m +[2;32m0 145544 173 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 236 ":- syscall -> close[0m +[2;32m0 145544 23 ":- syscall <- close[0m +[2;32m0 145544 156 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 210 ":- syscall -> open[0m +[2;32m0 145544 76 ":- syscall <- open[0m +[2;32m0 145544 150 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 214 ":- syscall -> ioctl[0m +[2;32m0 145544 276 ":- syscall <- ioctl[0m +[2;32m0 145544 187 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 197 ":- syscall -> close[0m +[2;32m0 145544 17 ":- syscall <- close[0m +[2;32m0 145544 145 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 211 ":- syscall -> open[0m +[2;32m0 145544 71 ":- syscall <- open[0m +[2;32m0 145544 149 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 214 ":- syscall -> ioctl[0m +[2;32m0 145544 47 ":- syscall <- ioctl[0m +[2;32m0 145544 172 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 199 ":- syscall -> close[0m +[2;32m0 145544 19 ":- syscall <- close[0m +[2;32m0 145544 144 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 210 ":- syscall -> open[0m +[2;32m0 145544 64 ":- syscall <- open[0m +[2;32m0 145544 150 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 212 ":- syscall -> ioctl[0m +[2;32m0 145544 297 ":- syscall <- ioctl[0m +[2;32m0 145544 522 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 210 ":- syscall -> close[0m +[2;32m0 145544 21 ":- syscall <- close[0m +[2;32m0 145544 146 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 213 ":- syscall -> open[0m +[2;32m0 145544 79 ":- syscall <- open[0m +[2;32m0 145544 151 ":- syscall -> lwp_exit[0m +[2;32m0 145544 0 ":- syscall <- nosys[0m +[2;32m0 145544 213 ":- syscall -> ioctl[0m +[2;32m0 145544 47 ":- syscall <- ioctl[0m +[2;32m0 145544 173 ":- syscall -> lwp_exit[0m +[2;32m0 145544 1 ":- syscall <- nosys[0m +[2;32m0 145544 201 ":- syscall -> close[0m +[2;32m0 145544 19 ":- syscall <- close[0m +[2;32m0 145544 144 ":- syscall -> lwp_exit[0m +[2;32m0 145544 91667 ":- syscall -> munmap[0m +[2;32m0 145544 34 ":- syscall <- munmap[0m +[2;32m0 145544 65 ":- syscall -> gtime[0m +[2;32m0 145544 9 ":- syscall <- gtime[0m +[2;32m0 145544 13 ":- syscall -> open[0m +[2;32m0 145544 42 ":- syscall <- open[0m +[2;32m0 145544 10 ":- syscall -> fstat64[0m +[2;32m0 145544 9 ":- syscall <- fstat64[0m +[2;32m0 145544 8 ":- syscall -> read[0m +[2;32m0 145544 31 ":- syscall <- read[0m +[2;32m0 145544 9 ":- syscall -> close[0m +[2;32m0 145544 11 ":- syscall <- close[0m +[2;32m0 145544 65 ":- syscall -> llseek[0m +[2;32m0 145544 9 ":- syscall <- llseek[0m +[2;32m0 145544 8 ":- syscall -> close[0m +[2;32m0 145544 9 ":- syscall <- close[0m +[2;35m0 145544 25 func_abc.py:14 func -> func_a[0m +[2;32m0 145544 24 ":- syscall -> ioctl[0m +[2;32m0 145544 9 ":- syscall <- ioctl[0m +[2;32m0 145544 8 ":- syscall -> fstat64[0m +[2;32m0 145544 8 ":- syscall <- fstat64[0m +[2;32m0 145544 9 ":- syscall -> fstat64[0m +[2;32m0 145544 7 ":- syscall <- fstat64[0m +[2;32m0 145544 40 ":- syscall -> pollsys[0m +[2;32m0 145544 1009424 ":- syscall <- pollsys[0m +[2;35m0 145544 35 func_abc.py:9 func -> func_b[0m +[2;32m0 145544 40 ":- syscall -> pollsys[0m +[2;32m0 145544 1009681 ":- syscall <- pollsys[0m +[2;35m0 145544 36 func_abc.py:5 func -> func_c[0m +[2;32m0 145544 41 ":- syscall -> pollsys[0m +Function A +Function B +Function C +[2;32m0 145544 1000116 ":- syscall <- pollsys[0m +[2;35m0 145544 34 func_abc.py:7 func <- func_c[0m +[2;35m0 145544 28 func_abc.py:12 func <- func_b[0m +[2;35m0 145544 14 func_abc.py:17 func <- func_a[0m +[2;35m0 145544 14 func_abc.py:19 func <- ?[0m +[2;32m0 145544 26 ":- syscall -> sigaction[0m +[2;32m0 145544 15 ":- syscall <- sigaction[0m +[2;32m0 145544 1150 ":- syscall -> write[0m +[2;32m0 145544 21 ":- syscall <- write[0m +[2;32m0 145544 212 ":- syscall -> open64[0m +[2;32m0 145544 116 ":- syscall <- open64[0m +[2;32m0 145544 11 ":- syscall -> ioctl[0m +[2;32m0 145544 24 ":- syscall <- ioctl[0m +[2;32m0 145544 10 ":- syscall -> close[0m +[2;32m0 145544 16 ":- syscall <- close[0m +[2;32m0 145544 8 ":- syscall -> open64[0m +[2;32m0 145544 32 ":- syscall <- open64[0m +[2;32m0 145544 9 ":- syscall -> ioctl[0m +[2;32m0 145544 169 ":- syscall <- ioctl[0m +[2;32m0 145544 10 ":- syscall -> close[0m +[2;32m0 145544 12 ":- syscall <- close[0m +[2;32m0 145544 62 ":- syscall -> rexit[0m + +Here you can see the output showing the path the script follows as it is +executed. + +[2;35m0 145544 35 func_abc.py:9 func -> func_b[0m +[2;32m0 145544 40 ":- syscall -> pollsys[0m +[2;32m0 145544 1009681 ":- syscall <- pollsys[0m +[2;35m0 145544 36 func_abc.py:5 func -> func_c[0m + +This excerpt shows line 9 of the script executing. It makes a pollsys syscall +in order to fulfill the request to sleep for one second, returns and then goes +to line 5. Checking the logic flow of the example program, this makes sense. diff --git a/cddl/contrib/dtracetoolkit/Examples/py_who_example.txt b/cddl/contrib/dtracetoolkit/Examples/py_who_example.txt new file mode 100644 index 000000000000..7d1c3f1c27b0 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/py_who_example.txt @@ -0,0 +1,34 @@ +These are examples of the results after running the py_who.d script. + +This script shows which UIDs and PIDs are running Python programs with Python +provider support, and how active they are. It lists the name of the program, +along with the number of lines executed per program as recorded by the line +provider. + +Here it runs as the Code/Python/func_abc.py program is executed. + +# py_who.d +Tracing... Hit Ctrl-C to end. +^C + + PID UID FUNCS FILE + 145442 0 1 /usr/lib/python2.4/encodings/aliases.py + 145442 0 1 /usr/lib/python2.4/linecache.py + 145442 0 2 /usr/lib/python2.4/types.py + 145442 0 4 /usr/lib/python2.4/encodings/__init__.py + 145442 0 4 func_abc.py + 145442 0 5 /usr/lib/python2.4/UserDict.py + 145442 0 5 /usr/lib/python2.4/warnings.py + 145442 0 6 /usr/lib/python2.4/codecs.py + 145442 0 6 /usr/lib/python2.4/encodings/ascii.py + 145442 0 7 /usr/lib/python2.4/copy_reg.py + 145442 0 11 <string> + 145442 0 13 /usr/lib/python2.4/stat.py + 145442 0 14 /usr/lib/python2.4/os.py + 145442 0 36 /usr/lib/python2.4/site.py + 145442 0 115 /usr/lib/python2.4/posixpath.py + +You can see that the program itself had four lines executed attributed to it, +and the other lines in the program were associated with their particular +Python library calls. + diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_calldist_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_calldist_example.txt new file mode 100644 index 000000000000..088497c56286 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_calldist_example.txt @@ -0,0 +1,153 @@ +The following is an example of running rb_calldist.d and tracing the elapsed +times for functions. + +We run rb_calldist.d while running the program Code/Ruby/func_abc.rb. We can +see that there are three sections in the DTrace output + +# rb_calldist.d +Tracing... Hit Ctrl-C to end. +^C + +Elapsed times (us), + ., obj-new, NoMemoryError + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ., obj-new, SystemStackError + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ., obj-new, ThreadGroup + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + ., obj-new, fatal + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + ., obj-new, Object + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 4 | 0 + 8 | 0 + 16 |@@@@@@@@@@@@@ 1 + 32 | 0 + + +Exclusive function elapsed times (us), + func_abc.rb, func, Module::method_added + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 4 |@@@@@@@@@@@@@ 1 + 8 | 0 + + func_abc.rb, func, Object::print + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 |@@@@@@@@@@@@@ 1 + 64 | 0 + + func_abc.rb, func, IO::write + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 |@@@@@@@@@@@@@ 1 + 128 | 0 + + func_abc.rb, func, Object::func_a + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + func_abc.rb, func, Object::func_b + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + func_abc.rb, func, Object::func_c + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + func_abc.rb, func, Object::sleep + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 1048576 | 0 + + +Inclusive function elapsed times (us), + func_abc.rb, func, Module::method_added + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 4 |@@@@@@@@@@@@@ 1 + 8 | 0 + + func_abc.rb, func, IO::write + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 |@@@@@@@@@@@@@ 1 + 128 | 0 + + func_abc.rb, func, Object::print + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 128 |@@@@@@@@@@@@@ 1 + 256 | 0 + + func_abc.rb, func, Object::func_c + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + func_abc.rb, func, Object::func_b + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + func_abc.rb, func, Object::sleep + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 1048576 | 0 + + func_abc.rb, func, Object::func_a + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + +The elapsed times show us that the script spent some small amount of time +processing various events that were not functions. In this case they were all +obj-new events, and you can see that the slowest of these was a new Object at +between 16 microseconds and 31 microseconds. + +The exclusive subroutine elapsed times show that each of our user defined +functions took between 256 and 511 microseconds. This time excludes the time +spent in other subroutines. + +The inclusive subroutine elapsed times show that func_c() took between 0.5 +seconds and 1 second, func_b() took between 1 second and 2.1 seconds, and +func_a() took between 2.1 seconds and 4.2 seconds to execute. This time +includes the time spent in other subroutines called, and since func_a() called +func_b() which called func_c(), these times make sense. + diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_calls_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_calls_example.txt new file mode 100644 index 000000000000..acc0d4d4ef7b --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_calls_example.txt @@ -0,0 +1,29 @@ +The following are examples of the results of running the rb_calls.d script. + +This script traces activity from all Ruby programs on the system that are +running with Ruby provider support. In this example we see it running while +the Code/Ruby/func_abc.rb script is run. + +# rb_calls.d +Tracing... Hit Ctrl-C to end. +^C + FILE TYPE NAME CALLS + . obj-new NoMemoryError 1 + . obj-new SystemStackError 1 + . obj-new ThreadGroup 1 + . obj-new fatal 1 + func_abc.rb method Object::func_a 1 + func_abc.rb method Object::func_b 1 + func_abc.rb method Object::func_c 1 + . obj-new Object 3 + func_abc.rb method IO::write 3 + func_abc.rb method Module::method_added 3 + func_abc.rb method Object::print 3 + func_abc.rb method Object::sleep 3 + +We can see that the file func_abc.rb called each of the user-defined functions +included in the script; func_a, func_b, and func_c. It also called the print +object and sleep amongst other things. Interspersed in the output are calls +to new objects that are not tied to the program func_abc.rb. They are called +from the Ruby engine for some other reason. + diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_calltime_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_calltime_example.txt new file mode 100644 index 000000000000..7245fec0e7f8 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_calltime_example.txt @@ -0,0 +1,77 @@ +The following is an example of running rb_calltime.d and tracing the elapsed +times for functions. + +We run rb_calltime.d while running the program Code/Ruby/func_abc.rb. We can +see that there are four sections in the DTrace output + +# rb_calltime.d +Tracing... Hit Ctrl-C to end. +^C + +Count, + FILE TYPE NAME COUNT + . obj-new NoMemoryError 1 + . obj-new SystemStackError 1 + . obj-new ThreadGroup 1 + . obj-new fatal 1 + func_abc.rb func Object::func_a 1 + func_abc.rb func Object::func_b 1 + func_abc.rb func Object::func_c 1 + . obj-new Object 3 + func_abc.rb func IO::write 3 + func_abc.rb func Module::method_added 3 + func_abc.rb func Object::print 3 + func_abc.rb func Object::sleep 3 + - total - 15 + +Elapsed times (us), + FILE TYPE NAME TOTAL + . obj-new SystemStackError 3 + . obj-new NoMemoryError 3 + . obj-new fatal 11 + . obj-new ThreadGroup 13 + . obj-new Object 26 + +Exclusive function elapsed times (us), + FILE TYPE NAME TOTAL + func_abc.rb func Module::method_added 9 + func_abc.rb func Object::print 92 + func_abc.rb func IO::write 185 + func_abc.rb func Object::func_c 344 + func_abc.rb func Object::func_a 379 + func_abc.rb func Object::func_b 383 + func_abc.rb func Object::sleep 3020597 + - total - 3021992 + +Inclusive function elapsed times (us), + FILE TYPE NAME TOTAL + func_abc.rb func Module::method_added 9 + func_abc.rb func IO::write 185 + func_abc.rb func Object::print 277 + func_abc.rb func Object::func_c 1009829 + func_abc.rb func Object::func_b 2019781 + func_abc.rb func Object::sleep 3020597 + func_abc.rb func Object::func_a 3021983 + +The first section, Count, shows us how many times each function associated +with func_abc.rb was called. It also shows other functions called by the Ruby +engine. + +The second section, elapsed times, shows how long each action that was not +calling a function took. + +The third section, exclusive function elapsed times, shows us how many +microseconds the program spends in each function. This does not include the +time spent in any sub-functions called by that particular function. The last +line gives us the total time in microseconds. + +The fourth section, inclusive function elapsed times, are the absolute time +from when the function began to when it completed - which includes off-CPU time +due to other system events such as I/O, scheduling, interrupts, etc. In +particular, for this case it has included the time waiting for the sleep +commands. + +Elapsed times are useful for identifying where latencies are. +See Notes/ALLelapsed_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive function time. diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_cpudist_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_cpudist_example.txt new file mode 100644 index 000000000000..718495e394f0 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_cpudist_example.txt @@ -0,0 +1,199 @@ +The following are examples of rb_cpudist.d. + +This script traces the on-CPU time of Ruby functions and prints a report in +the form of a histogram. Here it traces the example program, +Code/Ruby/func_slow.rb + +# rb_cpudist.d +Tracing... Hit Ctrl-C to end. +^C + +On-CPU times (us), + ., obj-new, NoMemoryError + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ., obj-new, SystemStackError + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + ., obj-new, ThreadGroup + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + ., obj-new, fatal + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + ., obj-new, Object + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 4 | 0 + 8 |@@@@@@@@@@@@@ 1 + 16 | 0 + + +Exclusive function on-CPU times (us), + func_slow.rb, func, Module::method_added + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 2 | 0 + + func_slow.rb, func, Object::print + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 8 |@@@@@@@@@@@@@ 1 + 16 | 0 + + func_slow.rb, func, IO::write + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 |@@@@@@@@@@@@@ 1 + 128 | 0 + + func_slow.rb, func, Object::func_a + value ------------- Distribution ------------- count + 131072 | 0 + 262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 524288 | 0 + + func_slow.rb, func, Object::func_b + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + func_slow.rb, func, Fixnum::< + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 599556 + 2 | 72 + 4 | 35 + 8 | 128 + 16 | 158 + 32 | 49 + 64 | 3 + 128 | 2 + 256 | 0 + + func_slow.rb, func, Object::func_c + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + func_slow.rb, func, Fixnum::+ + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1199062 + 2 | 138 + 4 | 74 + 8 | 279 + 16 | 344 + 32 | 91 + 64 | 9 + 128 | 0 + 256 | 3 + 512 | 0 + + +Inclusive function on-CPU times (us), + func_slow.rb, func, Module::method_added + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 2 | 0 + + func_slow.rb, func, IO::write + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 |@@@@@@@@@@@@@ 1 + 128 | 0 + + func_slow.rb, func, Object::print + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 |@@@@@@@@@@@@@ 1 + 128 | 0 + + func_slow.rb, func, Fixnum::< + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 599556 + 2 | 72 + 4 | 35 + 8 | 128 + 16 | 158 + 32 | 49 + 64 | 3 + 128 | 2 + 256 | 0 + + func_slow.rb, func, Fixnum::+ + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1199062 + 2 | 138 + 4 | 74 + 8 | 279 + 16 | 344 + 32 | 91 + 64 | 9 + 128 | 0 + 256 | 3 + 512 | 0 + + func_slow.rb, func, Object::func_b + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + + func_slow.rb, func, Object::func_c + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + + func_slow.rb, func, Object::func_a + value ------------- Distribution ------------- count + 2097152 | 0 + 4194304 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8388608 | 0 + +You can see that the results are in three sections. + +The first section shows us the on-CPU time for actions that were not of the +type 'func'. + +The second section, Exclusive function on-CPU times, shows us the time spent +on-CPU by various functions, not including time spent in subroutines. You can +see here that Object::print had two instances of being on-CPU between 4 +microseconds and 7 microseconds, and once instance of being on-CPU between 8 +microseconds and 15 microseconds. + +The third section, Inclusive function on-CPU times, shows us the time spent +on-CPU by various functions, including that time spent in subroutines called +by those functions. You can see that here Object::print had two instances +of being on-CPU between 32 microseconds and 63 microseconds, and one instance +of being on-CPU between 64 microseconds and 127 microseconds. + +It is important to pay close attention to the third column, "count" as this +will indicate if there were any instances in a particular timeframe, even if +the number is too small to show up on the histogram clearly. See Inclusive +function on-CPU time for Fixnum::+ for an example. + diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_cputime_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_cputime_example.txt new file mode 100644 index 000000000000..edfa5aa75da2 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_cputime_example.txt @@ -0,0 +1,81 @@ +The following are examples of rb_cputime.d. + +This script traces the on-CPU time of Ruby functions and prints a report. +Here it traces the example program, Code/Ruby/func_slow.rb + +# rb_cputime.d +Tracing... Hit Ctrl-C to end. +^C + +Count, + FILE TYPE NAME COUNT + . obj-new NoMemoryError 1 + . obj-new SystemStackError 1 + . obj-new ThreadGroup 1 + . obj-new fatal 1 + func_slow.rb func Object::func_a 1 + func_slow.rb func Object::func_b 1 + func_slow.rb func Object::func_c 1 + . obj-new Object 3 + func_slow.rb func IO::write 3 + func_slow.rb func Module::method_added 3 + func_slow.rb func Object::print 3 + func_slow.rb func Fixnum::< 600003 + func_slow.rb func Fixnum::+ 1200000 + - total - 1800015 + +Elapsed times (us), + FILE TYPE NAME TOTAL + . obj-new SystemStackError 2 + . obj-new NoMemoryError 2 + . obj-new fatal 11 + . obj-new ThreadGroup 12 + . obj-new Object 19 + +Exclusive function on-CPU times (us), + FILE TYPE NAME TOTAL + func_slow.rb func Module::method_added 4 + func_slow.rb func Object::print 57 + func_slow.rb func IO::write 180 + func_slow.rb func Object::func_a 405946 + func_slow.rb func Fixnum::< 691125 + func_slow.rb func Object::func_b 809970 + func_slow.rb func Object::func_c 1225235 + func_slow.rb func Fixnum::+ 1285200 + - total - 4417721 + +Inclusive function on-CPU times (us), + FILE TYPE NAME TOTAL + func_slow.rb func Module::method_added 4 + func_slow.rb func IO::write 180 + func_slow.rb func Object::print 238 + func_slow.rb func Fixnum::< 691125 + func_slow.rb func Fixnum::+ 1285200 + func_slow.rb func Object::func_c 2212572 + func_slow.rb func Object::func_b 3683688 + func_slow.rb func Object::func_a 4417717 + +You can see the results are printed in four sections. + +The first section reports how many times each subroutine was called, and it's +type. + +The second section reports on the on-CPU time of anything that was not of type +"func", in this case the only elements reported here are of type obj-new. + +The exclusive function on-CPU times shows, amongst other results, that func_a +spent around 0.4 seconds on-CPU. This time excludes time spent in other +subroutines. + +The inclusive function on-CPU times show that func_a spent around 4.4 +seconds on-CPU. This includes the time spent in other subroutines called. + +These on-CPU times are the time the thread spent running on a CPU, from when +the subroutine began to when it completed. This does not include time +spent off-CPU time such as sleeping for I/O or waiting for scheduling. + +On-CPU times are useful for showing who is causing the CPUs to be busy. +See Notes/ALLoncpu_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive subroutine time. + diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_flow_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_flow_example.txt new file mode 100644 index 000000000000..6cfa54ff0084 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_flow_example.txt @@ -0,0 +1,54 @@ +The following are examples of rb_flow.d. + +This is a simple script to trace the flow of Ruby functions. +Here it traces the example program, Code/Ruby/func_abc.rb + +# rb_flow.d + C TIME(us) FILE -- CLASS::METHOD + 0 3066417516583 func_abc.rb -> Module::method_added + 0 3066417516640 func_abc.rb <- Module::method_added + 0 3066417516658 func_abc.rb -> Module::method_added + 0 3066417516668 func_abc.rb <- Module::method_added + 0 3066417516680 func_abc.rb -> Module::method_added + 0 3066417516689 func_abc.rb <- Module::method_added + 0 3066417516701 func_abc.rb -> Object::func_a + 0 3066417516711 func_abc.rb -> Object::print + 0 3066417516730 func_abc.rb -> IO::write + 0 3066417516832 func_abc.rb <- IO::write + 0 3066417516841 func_abc.rb <- Object::print + 0 3066417516849 func_abc.rb -> Object::sleep + 0 3066418520705 func_abc.rb <- Object::sleep + 0 3066418520727 func_abc.rb -> Object::func_b + 0 3066418520744 func_abc.rb -> Object::print + 0 3066418520753 func_abc.rb -> IO::write + 0 3066418520796 func_abc.rb <- IO::write + 0 3066418520805 func_abc.rb <- Object::print + 0 3066418520813 func_abc.rb -> Object::sleep + 0 3066419530803 func_abc.rb <- Object::sleep + 0 3066419530825 func_abc.rb -> Object::func_c + 0 3066419530842 func_abc.rb -> Object::print + 0 3066419530852 func_abc.rb -> IO::write + 0 3066419530893 func_abc.rb <- IO::write + 0 3066419530902 func_abc.rb <- Object::print + 0 3066419530910 func_abc.rb -> Object::sleep + 0 3066420540804 func_abc.rb <- Object::sleep + 0 3066420540822 func_abc.rb <- Object::func_c + 0 3066420540831 func_abc.rb <- Object::func_b + 0 3066420540840 func_abc.rb <- Object::func_a +^C + +The fourth column is indented by 2 spaces to show when a new function begins. +This shows which function is calling which - the output above begins by adding +new methods, then showing that func_a began; did some print IO; slept, and +returned from sleep; and then called func_b. + +The TIME(us) column shows time from boot in microseconds. + +The FILE column shows the file that was being executed. + +If the output looks illogical, check the CPU "C" column - if it changes, +then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for +details and suggested workarounds. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_flowinfo_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_flowinfo_example.txt new file mode 100644 index 000000000000..14fd851fab4a --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_flowinfo_example.txt @@ -0,0 +1,54 @@ +Following are examples of rb_flowinfo.d. + +This is a simple script to trace the flow of Ruby methods. Here it traces the +example program, Code/Ruby/func_abc.rb. + +# rb_flowinfo.d +C PID DELTA(us) FILE:LINE TYPE -- NAME +0 146395 2 func_abc.rb:3 method -> Module::method_added +0 146395 26 func_abc.rb:3 method <- Module::method_added +0 146395 25 func_abc.rb:8 method -> Module::method_added +0 146395 11 func_abc.rb:8 method <- Module::method_added +0 146395 16 func_abc.rb:14 method -> Module::method_added +0 146395 10 func_abc.rb:14 method <- Module::method_added +0 146395 15 func_abc.rb:20 method -> Object::func_a +0 146395 12 func_abc.rb:15 method -> Object::print +0 146395 20 func_abc.rb:15 method -> IO::write +0 146395 110 func_abc.rb:15 method <- IO::write +0 146395 11 func_abc.rb:15 method <- Object::print +0 146395 11 func_abc.rb:16 method -> Object::sleep +0 146395 1003728 func_abc.rb:16 method <- Object::sleep +0 146395 35 func_abc.rb:17 method -> Object::func_b +0 146395 20 func_abc.rb:9 method -> Object::print +0 146395 12 func_abc.rb:9 method -> IO::write +0 146395 42 func_abc.rb:9 method <- IO::write +0 146395 11 func_abc.rb:9 method <- Object::print +0 146395 11 func_abc.rb:10 method -> Object::sleep +0 146395 1009976 func_abc.rb:10 method <- Object::sleep +0 146395 35 func_abc.rb:11 method -> Object::func_c +0 146395 20 func_abc.rb:4 method -> Object::print +0 146395 12 func_abc.rb:4 method -> IO::write +0 146395 38 func_abc.rb:4 method <- IO::write +0 146395 11 func_abc.rb:4 method <- Object::print +0 146395 11 func_abc.rb:5 method -> Object::sleep +0 146395 1009883 func_abc.rb:5 method <- Object::sleep +0 146395 29 func_abc.rb:5 method <- Object::func_c +0 146395 12 func_abc.rb:11 method <- Object::func_b +0 146395 11 func_abc.rb:17 method <- Object::func_a +^C + +As each method is entered, the last column is indented by 2 spaces. This +shows which method is calling which. + +The DELTA(us) column shows the change in time from the previous line to the +current line. + +The LINE column shows the line in the file what was being executed. Refer +to the source program to see what this line refers to. + +If the output looks shuffled, check the CPU "C" column - if it changes, +then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for +details and suggested workarounds. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_flowtime_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_flowtime_example.txt new file mode 100644 index 000000000000..27102da8ec35 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_flowtime_example.txt @@ -0,0 +1,56 @@ +The following are examples of rb_flowtime.d. + +This is a simple script to trace the flow of Ruby methods. +Here it traces the example program, Code/Ruby/func_abc.rb + +# rb_flowtime.d + C TIME(us) FILE DELTA(us) -- CLASS::METHOD + 0 3066547402640 func_abc.rb 2 -> Module::method_added + 0 3066547402662 func_abc.rb 22 <- Module::method_added + 0 3066547402683 func_abc.rb 20 -> Module::method_added + 0 3066547402693 func_abc.rb 9 <- Module::method_added + 0 3066547402707 func_abc.rb 14 -> Module::method_added + 0 3066547402716 func_abc.rb 9 <- Module::method_added + 0 3066547402729 func_abc.rb 12 -> Object::func_a + 0 3066547402740 func_abc.rb 10 -> Object::print + 0 3066547402759 func_abc.rb 18 -> IO::write + 0 3066547402860 func_abc.rb 101 <- IO::write + 0 3066547402871 func_abc.rb 10 <- Object::print + 0 3066547402881 func_abc.rb 10 -> Object::sleep + 0 3066548410630 func_abc.rb 1007749 <- Object::sleep + 0 3066548410660 func_abc.rb 30 -> Object::func_b + 0 3066548410679 func_abc.rb 18 -> Object::print + 0 3066548410689 func_abc.rb 10 -> IO::write + 0 3066548410730 func_abc.rb 40 <- IO::write + 0 3066548410740 func_abc.rb 9 <- Object::print + 0 3066548410749 func_abc.rb 9 -> Object::sleep + 0 3066549420724 func_abc.rb 1009974 <- Object::sleep + 0 3066549420755 func_abc.rb 30 -> Object::func_c + 0 3066549420773 func_abc.rb 18 -> Object::print + 0 3066549420783 func_abc.rb 10 -> IO::write + 0 3066549420825 func_abc.rb 41 <- IO::write + 0 3066549420835 func_abc.rb 9 <- Object::print + 0 3066549420844 func_abc.rb 9 -> Object::sleep + 0 3066550430611 func_abc.rb 1009766 <- Object::sleep + 0 3066550430635 func_abc.rb 24 <- Object::func_c + 0 3066550430645 func_abc.rb 10 <- Object::func_b + 0 3066550430655 func_abc.rb 9 <- Object::func_a +^C + +The fifth column is indented by 2 spaces to show when a new method begins. +This shows which method is calling which. + +The TIME(us) column shows time since boot. + +The DELTA(us) column shows time from that line to the previous line, and +so can be a bit tricky to read. For example, the seventh line of data output +(skipping the header) reads as "the time from func_a beginning to +calling the print method was 10 microseconds". + +The FILE column shows file that was being executed. + +If the output looks shuffled, check the CPU "C" and "TIME" columns, and +post sort based on TIME if necessary. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_funccalls_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_funccalls_example.txt new file mode 100644 index 000000000000..27c9c0c071e4 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_funccalls_example.txt @@ -0,0 +1,25 @@ +This is a list of examples of the usage of rb_funccalls.d. + +It reports method calls from all Ruby programs on the system that are +running with Ruby provider support. + +Here we run it while the program Code/Ruby/func_abc.rb is executing. + +# rb_funccalls.d +Tracing... Hit Ctrl-C to end. +^C + FILE CLASS METHOD CALLS + func_abc.rb Object func_a 1 + func_abc.rb Object func_b 1 + func_abc.rb Object func_c 1 + func_abc.rb IO write 3 + func_abc.rb Module method_added 3 + func_abc.rb Object print 3 + func_abc.rb Object sleep 3 + +We can see that during that one Ruby program, Our 3 user-defined methods, +func_a, func_b and func_c are called once each. Amongst other calls we can +see that a method from class IO - write, was called three times; probably by +the print method. If you look at the example program Code/Ruby/func_abc.rb, +you can see that 'print' is used three times, but IO::write is never directly +called. diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_lines_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_lines_example.txt new file mode 100644 index 000000000000..544b508f6282 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_lines_example.txt @@ -0,0 +1,30 @@ +This simple script uses the line probe to count how many times a line was +executed in a Ruby program. In this example you can see it running on the +Code/Ruby/func_slow.rb program. + +# rb_lines.d +Tracing... Hit Ctrl-C to end. +^C + FILE:LINE COUNT + func_slow.rb:3 1 + func_slow.rb:4 1 + func_slow.rb:5 1 + func_slow.rb:6 1 + func_slow.rb:12 1 + func_slow.rb:13 1 + func_slow.rb:14 1 + func_slow.rb:15 1 + func_slow.rb:19 1 + func_slow.rb:22 1 + func_slow.rb:23 1 + func_slow.rb:24 1 + func_slow.rb:25 1 + func_slow.rb:29 1 + func_slow.rb:32 1 + func_slow.rb:26 100000 + func_slow.rb:27 100000 + func_slow.rb:16 200000 + func_slow.rb:17 200000 + func_slow.rb:7 300000 + func_slow.rb:8 300000 + diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_malloc_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_malloc_example.txt new file mode 100644 index 000000000000..e0917c9af7cc --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_malloc_example.txt @@ -0,0 +1,120 @@ +The following is an example of rb_malloc.d. + +WARNING: This script is not 100% accurate; This prints graphical +representations of libc malloc() byte distributions by "recent" Ruby operation, +which we hope will be usually correct. This is an experimental script that may +be improved over time. + +Here we can see it running on Code/Ruby/func_abc.rb + +# rb_malloc.d -c ./func_abc.rb +Tracing... Hit Ctrl-C to end. +Function A +Function B +Function C +Ruby malloc byte distributions by recent Ruby operation, + func_abc.rb, method, Object::print + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@ 1 + 32 | 0 + + func_abc.rb, method, Module::method_added + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 32 | 0 + + ., objnew, fatal + value ------------- Distribution ------------- count + 1 | 0 + 2 |@ 1 + 4 |@ 1 + 8 |@@@ 2 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 22 + 32 |@@@@@@ 5 + 64 | 0 + + func_abc.rb, method, IO::write + value ------------- Distribution ------------- count + 2048 | 0 + 4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8192 | 0 + + ., objnew, SystemStackError + value ------------- Distribution ------------- count + 1 | 0 + 2 | 3 + 4 |@@@@ 32 + 8 |@@ 15 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 279 + 32 |@@@ 30 + 64 | 2 + 128 | 0 + + ., objnew, NoMemoryError + value ------------- Distribution ------------- count + 1 | 0 + 2 |@ 3 + 4 |@@@ 17 + 8 |@@@@@@ 37 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@ 146 + 32 |@@ 13 + 64 | 2 + 128 |@@@ 20 + 256 | 0 + 512 | 0 + 1024 | 1 + 2048 | 0 + + ., objnew, ThreadGroup + value ------------- Distribution ------------- count + 1 | 0 + 2 | 8 + 4 |@@@ 224 + 8 |@ 93 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1806 + 32 |@@@@@@@@ 496 + 64 | 3 + 128 | 2 + 256 | 0 + 512 | 1 + 1024 | 0 + + ., objnew, Object + value ------------- Distribution ------------- count + 1 | 0 + 2 | 35 + 4 |@@@ 291 + 8 |@@@ 300 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2679 + 32 |@@ 215 + 64 | 7 + 128 | 0 + + ruby, startup, - + value ------------- Distribution ------------- count + 1 | 0 + 2 |@ 10 + 4 |@@@ 34 + 8 |@@@ 38 + 16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 409 + 32 |@@ 30 + 64 | 1 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 2 + 2048 | 0 + 4096 | 0 + 8192 | 0 + 16384 | 0 + 32768 | 0 + 65536 | 0 + 131072 | 1 + 262144 | 0 + + diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_objcpu_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_objcpu_example.txt new file mode 100644 index 000000000000..48e8a78abbcb --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_objcpu_example.txt @@ -0,0 +1,51 @@ +The following are examples of running rb_objcpu.d. + +The rb_objnew.d script reports the on-CPU time for new Object creation in Ruby +while the script is tracing. Here we see it running while +Code/Ruby/func_abc.rb is executed. + +# rb_objcpu.d +Tracing... Hit Ctrl-C to end. +^C +Total object creation on-CPU time (ms): 0 + +Object creation on-CPU time distributions (us), + + NoMemoryError + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + SystemStackError + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + fatal + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + ThreadGroup + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 16 | 0 + + Object + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@ 1 + 2 |@@@@@@@@@@@@@ 1 + 4 | 0 + 8 |@@@@@@@@@@@@@ 1 + 16 | 0 + +We can see that there were several different types of Objects created +including three of type 'Object', one of which took 1 microsecond, one of +which took 2 to 3 microseconds, and the last of which took between 8 and 15 +microseconds. + diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_objnew_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_objnew_example.txt new file mode 100644 index 000000000000..340ac9a8cf11 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_objnew_example.txt @@ -0,0 +1,21 @@ +The following are examples of running rb_objnew.d. + +The rb_objnew.d script reports the new Ruby objects created (by filename and +class) while the script is tracing. Here we see it running while +Code/Ruby/func_abc.rb is executed. + +# rb_objnew.d +Tracing... Hit Ctrl-C to end. +^C + FILE CLASS COUNT + . NoMemoryError 1 + . SystemStackError 1 + . ThreadGroup 1 + . fatal 1 + . Object 3 + +Since this is a simple example, not many objects were allocated - a few +for the ruby engine, and three of class Object. No file was associated +with these allocations, as they may have been caused by Ruby engine startup, +and not necessarily lines of code in the example program. + diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_stat_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_stat_example.txt new file mode 100644 index 000000000000..706bf95b15cc --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_stat_example.txt @@ -0,0 +1,22 @@ +The following are examples of running rb_stat.d on Ruby programs. + +rb_stat.d shows you the number of events per second that have happened since +the last line output. The default interval is 1 second, but you can specify +other intervals as arguments to the script. + +This shows the rb_stat.d script reflecting the Code/Ruby/func_slow.rb script. + +# ./rb_stat.d +TIME EXEC/s METHOD/s OBJNEW/s OBJFRE/s RAIS/s RESC/s GC/s +2007 Sep 17 03:59:07 0 0 0 0 0 0 0 +2007 Sep 17 03:59:08 0 210426 7 0 0 0 0 +2007 Sep 17 03:59:09 0 724067 0 0 0 0 0 +2007 Sep 17 03:59:10 0 730877 0 0 0 0 0 +2007 Sep 17 03:59:11 0 134645 0 0 0 0 0 +2007 Sep 17 03:59:12 0 0 0 0 0 0 0 +2007 Sep 17 03:59:13 0 0 0 0 0 0 0 +^C + +We can see that at 2007 Sep 17 03:59:08 there were 0 new Ruby programs +executed, 210426 methods called, 7 objects created, 0 objects freed, 0 raises, +0 rescues and 0 garbage collects. diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_syscalls_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_syscalls_example.txt new file mode 100644 index 000000000000..869884b313c3 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_syscalls_example.txt @@ -0,0 +1,54 @@ +The following are examples of sh_syscalls.d. + +This is a simple script to count Ruby methods and system calls. Here we trace +an example program - Code/Ruby/func_abc.rb + +# rb_syscalls.d -c ./func_abc.rb +Tracing... Hit Ctrl-C to end. +Function A +Function B +Function C + +Calls for PID 146493, + + FILE TYPE NAME COUNT + func_abc.rb method Object::func_a 1 + func_abc.rb method Object::func_b 1 + func_abc.rb method Object::func_c 1 + func_abc.rb syscall getpid 1 + func_abc.rb syscall getrlimit 1 + func_abc.rb syscall getrlimit64 1 + func_abc.rb syscall mmap 1 + func_abc.rb syscall munmap 1 + func_abc.rb syscall rexit 1 + func_abc.rb syscall schedctl 1 + func_abc.rb syscall sigpending 1 + func_abc.rb syscall sysconfig 1 + func_abc.rb syscall sysi86 1 + func_abc.rb syscall write 1 + func_abc.rb syscall llseek 2 + func_abc.rb syscall read 2 + func_abc.rb syscall setcontext 2 + func_abc.rb method IO::write 3 + func_abc.rb method Module::method_added 3 + func_abc.rb method Object::print 3 + func_abc.rb method Object::sleep 3 + func_abc.rb syscall fstat64 3 + func_abc.rb syscall getgid 3 + func_abc.rb syscall getuid 3 + func_abc.rb syscall ioctl 3 + func_abc.rb syscall pollsys 3 + func_abc.rb syscall close 4 + func_abc.rb syscall lwp_sigmask 4 + func_abc.rb syscall open64 4 + func_abc.rb syscall gtime 6 + func_abc.rb syscall sigaction 12 + func_abc.rb syscall brk 56 + +While tracing, three user-defined functions were called - func_a, func_b and +func_c. There were 3 instances of the IO::write method being called. There +were also many system calls made, including 56 brk()'s, and 12 sigaction()'s. + +This script can provide an insight to how a Ruby program is interacting +with the system, by providing methods and system calls in the same output. + diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_syscolors_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_syscolors_example.txt new file mode 100644 index 000000000000..854016e07e9a --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_syscolors_example.txt @@ -0,0 +1,331 @@ +The following are examples of rb_syscolors.d. + +This is a simple script to trace the method flow of Ruby functions within a +program, and the system calls made. It renders the output in color ("colour") +using terminal escape sequences (which you can tweak by modifying the script). + +Here it traces the example program, Code/Ruby/func_abc.rb. + +WARNING: This output is full of terminal escape sequences, so if you are +trying to view this through an editor or web browser - it may look awful. +Try viewing this using "more" (although, depending on your terminal, it +still may look awful). + +# rb_syscolors.d -c ./func_abc.rb +C PID DELTA(us) FILE:LINE TYPE -- NAME +[2;32m0 146499 2 ":- syscall -> munmap[0m +[2;32m0 146499 35 ":- syscall <- munmap[0m +[2;32m0 146499 56 ":- syscall -> mmap[0m +[2;32m0 146499 18 ":- syscall <- mmap[0m +[2;32m0 146499 41 ":- syscall -> setcontext[0m +[2;32m0 146499 10 ":- syscall <- setcontext[0m +[2;32m0 146499 10 ":- syscall -> getrlimit[0m +[2;32m0 146499 11 ":- syscall <- getrlimit[0m +[2;32m0 146499 9 ":- syscall -> getpid[0m +[2;32m0 146499 8 ":- syscall <- getpid[0m +[2;32m0 146499 66 ":- syscall -> setcontext[0m +[2;32m0 146499 8 ":- syscall <- setcontext[0m +[2;32m0 146499 1125 ":- syscall -> sysi86[0m +[2;32m0 146499 12 ":- syscall <- sysi86[0m +[2;32m0 146499 86 ":- syscall -> open64[0m +[2;32m0 146499 89 ":- syscall <- open64[0m +[2;32m0 146499 13 ":- syscall -> ioctl[0m +[2;32m0 146499 35 ":- syscall <- ioctl[0m +[2;32m0 146499 15 ":- syscall -> close[0m +[2;32m0 146499 16 ":- syscall <- close[0m +[2;32m0 146499 141 ":- syscall -> getrlimit64[0m +[2;32m0 146499 10 ":- syscall <- getrlimit64[0m +[2;32m0 146499 37 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 9 ":- syscall -> brk[0m +[2;32m0 146499 17 ":- syscall <- brk[0m +[2;32m0 146499 19 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 11 ":- syscall <- brk[0m +[2;32m0 146499 495 ":- syscall -> brk[0m +[2;32m0 146499 11 ":- syscall <- brk[0m +[2;32m0 146499 9 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 55 ":- syscall -> sysconfig[0m +[2;32m0 146499 9 ":- syscall <- sysconfig[0m +[2;32m0 146499 109 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 189 ":- syscall -> brk[0m +[2;32m0 146499 9 ":- syscall <- brk[0m +[2;32m0 146499 9 ":- syscall -> brk[0m +[2;32m0 146499 9 ":- syscall <- brk[0m +[2;32m0 146499 161 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 9 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 144 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 9 ":- syscall <- brk[0m +[2;32m0 146499 184 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 9 ":- syscall -> brk[0m +[2;32m0 146499 9 ":- syscall <- brk[0m +[2;32m0 146499 129 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 174 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 9 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 145 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 129 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 9 ":- syscall <- brk[0m +[2;32m0 146499 134 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 135 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 9 ":- syscall <- brk[0m +[2;32m0 146499 136 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 98 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 9 ":- syscall -> brk[0m +[2;32m0 146499 9 ":- syscall <- brk[0m +[2;32m0 146499 132 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 125 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 9 ":- syscall <- brk[0m +[2;32m0 146499 189 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 413 ":- syscall -> brk[0m +[2;32m0 146499 11 ":- syscall <- brk[0m +[2;32m0 146499 9 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 171 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 9 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 137 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 188 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 9 ":- syscall -> brk[0m +[2;32m0 146499 9 ":- syscall <- brk[0m +[2;32m0 146499 135 ":- syscall -> sigaction[0m +[2;32m0 146499 10 ":- syscall <- sigaction[0m +[2;32m0 146499 10 ":- syscall -> sigaction[0m +[2;32m0 146499 7 ":- syscall <- sigaction[0m +[2;32m0 146499 8 ":- syscall -> sigaction[0m +[2;32m0 146499 7 ":- syscall <- sigaction[0m +[2;32m0 146499 8 ":- syscall -> sigaction[0m +[2;32m0 146499 7 ":- syscall <- sigaction[0m +[2;32m0 146499 8 ":- syscall -> sigaction[0m +[2;32m0 146499 7 ":- syscall <- sigaction[0m +[2;32m0 146499 8 ":- syscall -> sigaction[0m +[2;32m0 146499 8 ":- syscall <- sigaction[0m +[2;32m0 146499 8 ":- syscall -> sigaction[0m +[2;32m0 146499 7 ":- syscall <- sigaction[0m +[2;32m0 146499 9 ":- syscall -> sigaction[0m +[2;32m0 146499 7 ":- syscall <- sigaction[0m +[2;32m0 146499 8 ":- syscall -> sigaction[0m +[2;32m0 146499 7 ":- syscall <- sigaction[0m +[2;32m0 146499 12 ":- syscall -> sigpending[0m +[2;32m0 146499 8 ":- syscall <- sigpending[0m +[2;32m0 146499 15 ":- syscall -> schedctl[0m +[2;32m0 146499 44 ":- syscall <- schedctl[0m +[2;32m0 146499 17 ":- syscall -> lwp_sigmask[0m +[2;32m0 146499 8 ":- syscall <- lwp_sigmask[0m +[2;32m0 146499 9 ":- syscall -> sigaction[0m +[2;32m0 146499 8 ":- syscall <- sigaction[0m +[2;32m0 146499 11 ":- syscall -> lwp_sigmask[0m +[2;32m0 146499 8 ":- syscall <- lwp_sigmask[0m +[2;32m0 146499 9 ":- syscall -> lwp_sigmask[0m +[2;32m0 146499 7 ":- syscall <- lwp_sigmask[0m +[2;32m0 146499 8 ":- syscall -> sigaction[0m +[2;32m0 146499 7 ":- syscall <- sigaction[0m +[2;32m0 146499 8 ":- syscall -> lwp_sigmask[0m +[2;32m0 146499 7 ":- syscall <- lwp_sigmask[0m +[2;32m0 146499 65 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 11 ":- syscall <- brk[0m +[2;32m0 146499 149 ":- syscall -> getuid[0m +[2;32m0 146499 9 ":- syscall <- getuid[0m +[2;32m0 146499 12 ":- syscall -> getgid[0m +[2;32m0 146499 8 ":- syscall <- getgid[0m +[2;32m0 146499 29 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 184 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 9 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 171 ":- syscall -> brk[0m +[2;32m0 146499 9 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 10 ":- syscall <- brk[0m +[2;32m0 146499 48 ":- syscall -> getuid[0m +[2;32m0 146499 8 ":- syscall <- getuid[0m +[2;32m0 146499 9 ":- syscall -> getuid[0m +[2;32m0 146499 7 ":- syscall <- getuid[0m +[2;32m0 146499 10 ":- syscall -> getgid[0m +[2;32m0 146499 7 ":- syscall <- getgid[0m +[2;32m0 146499 8 ":- syscall -> getgid[0m +[2;32m0 146499 7 ":- syscall <- getgid[0m +[2;32m0 146499 79 ":- syscall -> open64[0m +[2;32m0 146499 31 ":- syscall <- open64[0m +[2;32m0 146499 14 ":- syscall -> llseek[0m +[2;32m0 146499 9 ":- syscall <- llseek[0m +[2;32m0 146499 9 ":- syscall -> close[0m +[2;32m0 146499 12 ":- syscall <- close[0m +[2;32m0 146499 15 ":- syscall -> open64[0m +[2;32m0 146499 13 ":- syscall <- open64[0m +[2;32m0 146499 21 ":- syscall -> fstat64[0m +[2;32m0 146499 11 ":- syscall <- fstat64[0m +[2;32m0 146499 22 ":- syscall -> read[0m +[2;32m0 146499 36 ":- syscall <- read[0m +[2;32m0 146499 153 ":- syscall -> read[0m +[2;32m0 146499 10 ":- syscall <- read[0m +[2;32m0 146499 11 ":- syscall -> llseek[0m +[2;32m0 146499 8 ":- syscall <- llseek[0m +[2;32m0 146499 8 ":- syscall -> close[0m +[2;32m0 146499 9 ":- syscall <- close[0m +[1;35m0 146499 23 func_abc.rb:3 line -- [0m +[2;35m0 146499 64 func_abc.rb:3 method -> Module::method_added[0m +[2;35m0 146499 24 func_abc.rb:3 method <- Module::method_added[0m +[1;35m0 146499 20 func_abc.rb:8 line -- [0m +[2;35m0 146499 15 func_abc.rb:8 method -> Module::method_added[0m +[2;35m0 146499 13 func_abc.rb:8 method <- Module::method_added[0m +[1;35m0 146499 13 func_abc.rb:14 line -- [0m +[2;35m0 146499 14 func_abc.rb:14 method -> Module::method_added[0m +[2;35m0 146499 13 func_abc.rb:14 method <- Module::method_added[0m +[1;35m0 146499 12 func_abc.rb:20 line -- [0m +[2;35m0 146499 13 func_abc.rb:20 method -> Object::func_a[0m +[1;35m0 146499 12 func_abc.rb:15 line -- [0m +[2;35m0 146499 10 func_abc.rb:15 method -> Object::print[0m +[2;35m0 146499 22 func_abc.rb:15 method -> IO::write[0m +[2;32m0 146499 38 ":- syscall -> ioctl[0m +[2;32m0 146499 11 ":- syscall <- ioctl[0m +[2;32m0 146499 20 ":- syscall -> fstat64[0m +[2;32m0 146499 9 ":- syscall <- fstat64[0m +[2;32m0 146499 9 ":- syscall -> brk[0m +[2;32m0 146499 8 ":- syscall <- brk[0m +[2;32m0 146499 8 ":- syscall -> brk[0m +[2;32m0 146499 11 ":- syscall <- brk[0m +[2;32m0 146499 25 ":- syscall -> fstat64[0m +[2;32m0 146499 8 ":- syscall <- fstat64[0m +[2;35m0 146499 10 func_abc.rb:15 method <- IO::write[0m +[2;35m0 146499 13 func_abc.rb:15 method <- Object::print[0m +[1;35m0 146499 12 func_abc.rb:16 line -- [0m +[2;35m0 146499 10 func_abc.rb:16 method -> Object::sleep[0m +[2;32m0 146499 20 ":- syscall -> gtime[0m +[2;32m0 146499 9 ":- syscall <- gtime[0m +[2;32m0 146499 24 ":- syscall -> pollsys[0m +[2;32m0 146499 1006964 ":- syscall <- pollsys[0m +[2;32m0 146499 26 ":- syscall -> gtime[0m +[2;32m0 146499 14 ":- syscall <- gtime[0m +[2;35m0 146499 18 func_abc.rb:16 method <- Object::sleep[0m +[1;35m0 146499 27 func_abc.rb:17 line -- [0m +[2;35m0 146499 21 func_abc.rb:17 method -> Object::func_b[0m +[1;35m0 146499 19 func_abc.rb:9 line -- [0m +[2;35m0 146499 12 func_abc.rb:9 method -> Object::print[0m +[2;35m0 146499 14 func_abc.rb:9 method -> IO::write[0m +[2;35m0 146499 15 func_abc.rb:9 method <- IO::write[0m +[2;35m0 146499 12 func_abc.rb:9 method <- Object::print[0m +[1;35m0 146499 12 func_abc.rb:10 line -- [0m +[2;35m0 146499 9 func_abc.rb:10 method -> Object::sleep[0m +[2;32m0 146499 12 ":- syscall -> gtime[0m +[2;32m0 146499 8 ":- syscall <- gtime[0m +[2;32m0 146499 11 ":- syscall -> pollsys[0m +[2;32m0 146499 1009739 ":- syscall <- pollsys[0m +[2;32m0 146499 26 ":- syscall -> gtime[0m +[2;32m0 146499 14 ":- syscall <- gtime[0m +[2;35m0 146499 18 func_abc.rb:10 method <- Object::sleep[0m +[1;35m0 146499 27 func_abc.rb:11 line -- [0m +[2;35m0 146499 21 func_abc.rb:11 method -> Object::func_c[0m +[1;35m0 146499 20 func_abc.rb:4 line -- [0m +[2;35m0 146499 12 func_abc.rb:4 method -> Object::print[0m +[2;35m0 146499 14 func_abc.rb:4 method -> IO::write[0m +[2;35m0 146499 15 func_abc.rb:4 method <- IO::write[0m +[2;35m0 146499 12 func_abc.rb:4 method <- Object::print[0m +[1;35m0 146499 12 func_abc.rb:5 line -- [0m +[2;35m0 146499 9 func_abc.rb:5 method -> Object::sleep[0m +[2;32m0 146499 12 ":- syscall -> gtime[0m +[2;32m0 146499 8 ":- syscall <- gtime[0m +[2;32m0 146499 11 ":- syscall -> pollsys[0m +Function A +Function B +Function C +[2;32m0 146499 1009762 ":- syscall <- pollsys[0m +[2;32m0 146499 25 ":- syscall -> gtime[0m +[2;32m0 146499 14 ":- syscall <- gtime[0m +[2;35m0 146499 19 func_abc.rb:5 method <- Object::sleep[0m +[2;35m0 146499 26 func_abc.rb:5 method <- Object::func_c[0m +[2;35m0 146499 13 func_abc.rb:11 method <- Object::func_b[0m +[2;35m0 146499 13 func_abc.rb:17 method <- Object::func_a[0m +[2;32m0 146499 33 ":- syscall -> sigaction[0m +[2;32m0 146499 10 ":- syscall <- sigaction[0m +[2;32m0 146499 100 ":- syscall -> open64[0m +[2;32m0 146499 107 ":- syscall <- open64[0m +[2;32m0 146499 10 ":- syscall -> ioctl[0m +[2;32m0 146499 10 ":- syscall <- ioctl[0m +[2;32m0 146499 11 ":- syscall -> close[0m +[2;32m0 146499 17 ":- syscall <- close[0m +[2;32m0 146499 28 ":- syscall -> write[0m +[2;32m0 146499 20 ":- syscall <- write[0m +[2;32m0 146499 11 ":- syscall -> rexit[0m + +Here you can see the output showing the path the program follows in its +execution. + +ie: +[2;35m0 146499 10 func_abc.rb:16 method -> Object::sleep[0m +[2;32m0 146499 20 ":- syscall -> gtime[0m +[2;32m0 146499 9 ":- syscall <- gtime[0m +[2;32m0 146499 24 ":- syscall -> pollsys[0m +[2;32m0 146499 1006964 ":- syscall <- pollsys[0m +[2;32m0 146499 26 ":- syscall -> gtime[0m +[2;32m0 146499 14 ":- syscall <- gtime[0m +[2;35m0 146499 18 func_abc.rb:16 method <- Object::sleep[0m +[1;35m0 146499 27 func_abc.rb:17 line -- [0m +[2;35m0 146499 21 func_abc.rb:17 method -> Object::func_b[0m +[1;35m0 146499 19 func_abc.rb:9 line -- [0m +[2;35m0 146499 12 func_abc.rb:9 method -> Object::print[0m +[2;35m0 146499 14 func_abc.rb:9 method -> IO::write[0m +[2;35m0 146499 15 func_abc.rb:9 method <- IO::write[0m +[2;35m0 146499 12 func_abc.rb:9 method <- Object::print[0m +[1;35m0 146499 12 func_abc.rb:10 line -- [0m + +shows that on cpu 0 the program is running a sleep command at line 16 of the +func_abc.rb program (the pollsys and gtime syscalls are used in the Ruby +engine to implement sleep). Then func_b runs, and prints a line +(using Object::print which uses IO::write). Notice that the 'write' syscall +does not happen until later. It is probably being buffered by Ruby - you can +confirm this through further DTracing. Notice also tht you can see the output +of the program: + +Function A +Function B +Function C + +in the file happening before the write syscall is run. DTrace does not do its +output in 'real time'. There is a slight delay due to buffering. diff --git a/cddl/contrib/dtracetoolkit/Examples/rb_who_example.txt b/cddl/contrib/dtracetoolkit/Examples/rb_who_example.txt new file mode 100644 index 000000000000..35c0bb70edef --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rb_who_example.txt @@ -0,0 +1,20 @@ +These are examples of the results after running the rb_who.d script. + +This script shows which UIDs and PIDs are running Ruby programs with Ruby +provider support, and how active they are. It lists the name of the program, +along with the number of lines executed per program as recorded by the line +provider. + +Here it runs as three Ruby programs are executed. Code/Ruby/func_abc.rb runs +twice and Code/Ruby/func_slow.rb once. + +# rb_who.d +Tracing... Hit Ctrl-C to end. +^C + PID UID LINES FILE + 146485 0 12 ./func_abc.rb + 146486 0 12 ./func_abc.rb + 146487 0 1200015 ./func_slow.rb + +You can see that func_abc.rb has twelve lines of executable Ruby code, and +that func_slow.rb has 100,000x that. diff --git a/cddl/contrib/dtracetoolkit/Examples/readbytes_example.txt b/cddl/contrib/dtracetoolkit/Examples/readbytes_example.txt new file mode 100644 index 000000000000..fa2923b1b649 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/readbytes_example.txt @@ -0,0 +1,22 @@ +The following is a demonstration of the readbytes.d script, + + +Here the readbytes.d script is run for a few seconds, then Ctrl-C is hit, + + # readbytes.d + dtrace: description 'sysinfo:::readch ' matched 4 probes + ^C + + mozilla-bin 16 + gnome-smproxy 64 + metacity 64 + dsdm 64 + wnck-applet 64 + xscreensaver 96 + gnome-terminal 900 + ttymon 5952 + Xorg 17544 + +In this interval the Xorg command has successfully read 17.5 Kb, while +ttymon has read 5952 bytes. + diff --git a/cddl/contrib/dtracetoolkit/Examples/readdist_example.txt b/cddl/contrib/dtracetoolkit/Examples/readdist_example.txt new file mode 100644 index 000000000000..42811d8d36ae --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/readdist_example.txt @@ -0,0 +1,35 @@ +The following is an example of the readdist.d script, + + +Here the readdist.d script is run for a few seconds, then Ctrl-C is hit, + + # readdist.d + dtrace: description 'sysinfo:::readch ' matched 4 probes + ^C + [...] + gnome-terminal + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 15 + 64 |@@@ 1 + 128 | 0 + + Xorg + value ------------- Distribution ------------- count + -1 | 0 + 0 |@@@@@@@@@@@@@@@@@@@ 26 + 1 | 0 + 2 | 0 + 4 | 0 + 8 |@@@@ 6 + 16 |@ 2 + 32 |@ 2 + 64 | 0 + 128 |@@@@@@@@ 11 + 256 |@@@ 4 + 512 | 0 + +This allows us to understand the read behaviour of each process. The +Xorg command has executed 26 reads that returned 0 bytes, through +to 4 reads that were at least 256 bytes (up to 511). + diff --git a/cddl/contrib/dtracetoolkit/Examples/rfileio_example.txt b/cddl/contrib/dtracetoolkit/Examples/rfileio_example.txt new file mode 100644 index 000000000000..dcce81ee4da7 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rfileio_example.txt @@ -0,0 +1,94 @@ +The following are demonstrations of the rfileio.d script. + + +rfileio.d prints file system statistics by file, + + # ./rfileio.d + + Read IOPS, top 20 (count) + /lib/ld.so.1 logical 2 + /devices/pseudo/clone@0:ptm logical 4 + /usr/bin/grep logical 4 + /devices/pseudo/pts@0:3 logical 4 + /extra1/contents physical 1700 + /extra1/contents logical 11582 + + Read Bandwidth, top 20 (bytes) + /devices/pseudo/pts@0:3 logical 3 + /devices/pseudo/clone@0:ptm logical 92 + /lib/ld.so.1 logical 212 + /usr/bin/grep logical 269 + /extra1/contents physical 48115712 + /extra1/contents logical 94865162 + + Total File System miss-rate: 50% + ^C + + $ ls -l /extra1/contents + -rw-r--r-- 1 root root 94865162 Nov 2 21:08 /extra1/contents + +The /extra1/contents file was read using the grep command. The output shows +that half of the contents was returned from the cache, the other half from disk +(50% miss-rate). It is 94,865,162 bytes in size, which can be seen both in +the ls -l output and the logical read() bytes reported by rfileio.d. There +were 11,582 logical read() calls, which the disk driver satisfied by using +1,700 disk events (aggregation). + + + +The following demonstrates many files being read. + + # ./rfileio.d + + Read IOPS, top 20 (count) + /usr/bin/amd64/glib-mkenums logical 4 + /usr/bin/amd64/glib-genmarshal physical 4 + /usr/bin/amd64/gdk-pixbuf-query-loaders logical 4 + /usr/bin/amd64/ls logical 5 + /usr/bin/amd64/pargs logical 5 + /usr/bin/amd64/ps logical 5 + /usr/bin/amd64/gconf-merge-tree physical 6 + /usr/bin/amd64/cputrack logical 6 + /usr/bin/amd64/gconftool-2 physical 6 + /usr/bin/amd64/prctl logical 6 + /usr/bin/amd64/prstat logical 6 + /usr/bin/amd64/glib-genmarshal logical 7 + /usr/bin/amd64/truss physical 8 + /usr/bin/amd64/sort logical 9 + /usr/bin/amd64/prex logical 10 + /usr/bin/amd64/gconf-merge-tree logical 13 + /usr/bin/amd64/mdb physical 15 + /usr/bin/amd64/gconftool-2 logical 15 + /usr/bin/amd64/truss logical 26 + /usr/bin/amd64/mdb logical 63 + + Read Bandwidth, top 20 (bytes) + /usr/bin/amd64/prctl logical 36784 + /usr/bin/amd64/prctl physical 36864 + /usr/bin/amd64/prstat logical 44760 + /usr/bin/amd64/prstat physical 45056 + /usr/bin/amd64/glib-genmarshal logical 46064 + /usr/bin/amd64/glib-genmarshal physical 46080 + /usr/bin/amd64/cputrack logical 46912 + /usr/bin/amd64/cputrack physical 47104 + /usr/bin/amd64/sort logical 65120 + /usr/bin/amd64/sort physical 65536 + /usr/bin/amd64/prex logical 80968 + /usr/bin/amd64/prex physical 81920 + /usr/bin/amd64/gconf-merge-tree logical 113592 + /usr/bin/amd64/gconf-merge-tree physical 122880 + /usr/bin/amd64/gconftool-2 logical 129208 + /usr/bin/amd64/gconftool-2 physical 139264 + /usr/bin/amd64/truss logical 246360 + /usr/bin/amd64/truss physical 262144 + /usr/bin/amd64/mdb logical 627456 + /usr/bin/amd64/mdb physical 638976 + + Total File System miss-rate: 81% + ^C + +The miss-rate was 81%, meaning we are returning around 20% of the data from +the cache. Details for the top 20 files read by-bytes and by-count are listed; +this shows the /usr/bin/amd64/mdb file was read() 63 times, causing 15 disk +reads, and while 627,456 bytes were requested, 638,976 bytes were read from +disk (the extra bytes are due to read-ahead and file system metadata). diff --git a/cddl/contrib/dtracetoolkit/Examples/rfsio_example.txt b/cddl/contrib/dtracetoolkit/Examples/rfsio_example.txt new file mode 100644 index 000000000000..858ddf840088 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rfsio_example.txt @@ -0,0 +1,82 @@ +The following are demonstrations of the rfsio.d script. + + + +Here we trace file read() activity that has fully missed the cache and +must be read from disk, + + # ./rfsio.d + + Read IOPS (count) + / logical 7 + /extra1 physical 162 + /boot logical 235 + /boot physical 410 + /extra1 logical 9514 + + Read Bandwidth (bytes) + / logical 533 + /boot logical 1502386 + /boot physical 1512960 + /extra1 physical 97153024 + /extra1 logical 97228668 + + Total File System miss-rate: 100% + ^C + +The miss rate of 100% means that all of the file system activity missed +the cache, and had to read from disk. + + + +The following demonstrates file read() activity to the root filesystem +that mostly returned from the file system cache. + + # ./rfsio.d + + Read IOPS (count) + / physical 1 + /extra1 physical 9 + /devices logical 9 + / logical 15 + /extra1 logical 4096 + + Read Bandwidth (bytes) + /devices logical 9 + / logical 949 + / physical 8192 + /extra1 physical 917504 + /extra1 logical 4194304 + + Total File System miss-rate: 22% + ^C + +The total miss-rate was 22%, which is based on the bytes transferred that +missed the cache. + + + + +Now for an unusual demonstration, + + # ./rfsio.d + + Read IOPS (count) + /devices logical 1 + / logical 10 + /extra1 physical 106 + /extra1 logical 6337 + + Read Bandwidth (bytes) + /devices logical 2 + / logical 961 + /extra1 logical 64846450 + /extra1 physical 66151424 + + Total File System miss-rate: 102% + ^C + +Here the miss-rate is 102%, which indicates that more data was read from +disk than was requested; this can occur due to UFS read-ahead, which +assists the performance of sequential disk activity at the small risk of +reading too much data. diff --git a/cddl/contrib/dtracetoolkit/Examples/runocc_example.txt b/cddl/contrib/dtracetoolkit/Examples/runocc_example.txt new file mode 100644 index 000000000000..53dcb5f96671 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/runocc_example.txt @@ -0,0 +1,53 @@ +The following are demonstrations of the runocc.d script. + + + +Here we run it on a single CPU server that is fairly busy, + + # ./runocc.d + + CPU %runocc + 0 86 + + CPU %runocc + 0 85 + + CPU %runocc + 0 82 + ^C + +The run queue occupancy is around 85%, meaning most of the time there +are runnable threads queued waiting for CPU. + + + +This script is more interesting on a multi-CPU server, + + # ./runocc.d + + CPU %runocc + 1 16 + 3 27 + 0 38 + 2 75 + + CPU %runocc + 0 25 + 2 41 + 3 42 + 1 50 + + CPU %runocc + 3 1 + 0 17 + 2 26 + 1 27 + + CPU %runocc + 3 2 + 2 5 + 0 24 + 1 25 + ^C + +Here there was some degree of saturation, especially on CPU 2 to start with. diff --git a/cddl/contrib/dtracetoolkit/Examples/rwbbypid_example.txt b/cddl/contrib/dtracetoolkit/Examples/rwbbypid_example.txt new file mode 100644 index 000000000000..9091adfef859 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rwbbypid_example.txt @@ -0,0 +1,26 @@ +The following is a demonstration of the rwbbypid.d script, + + +Here we run it for a few seconds then hit Ctrl-C, + + # rwbbypid.d + Tracing... Hit Ctrl-C to end. + ^C + PID CMD DIR BYTES + 20347 bash R 22 + 11053 dtrace W 32 + 1532 Xorg W 64 + 20317 sshd R 86 + 20347 bash W 87 + 20317 sshd W 137 + 1659 mozilla-bin R 213 + 20334 sshd R 1232 + 20334 sshd W 1282 + 11054 cp W 18652 + 11054 cp R 18652 + 1532 Xorg R 51112 + 1659 mozilla-bin W 51261 + +In the above output, we can see that mozilla-bin with PID 1659 has written +51261 bytes, while Xorg has read 51112 bytes. + diff --git a/cddl/contrib/dtracetoolkit/Examples/rwbypid_example.txt b/cddl/contrib/dtracetoolkit/Examples/rwbypid_example.txt new file mode 100644 index 000000000000..0c8559b45da9 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rwbypid_example.txt @@ -0,0 +1,19 @@ +The following is a demonstration of the rwbypid.d script, + + +Here we run it for a few seconds then hit Ctrl-C, + + # rwbypid.d + Tracing... Hit Ctrl-C to end. + ^C + PID CMD DIR COUNT + 11131 dtrace W 2 + 20334 sshd W 17 + 20334 sshd R 24 + 1532 Xorg W 69 + 1659 mozilla-bin R 852 + 1659 mozilla-bin W 1128 + 1532 Xorg R 1702 + +In the above output, we can see that Xorg with PID 1532 has made 1702 reads. + diff --git a/cddl/contrib/dtracetoolkit/Examples/rwbytype_example.txt b/cddl/contrib/dtracetoolkit/Examples/rwbytype_example.txt new file mode 100644 index 000000000000..118cf1657c64 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rwbytype_example.txt @@ -0,0 +1,37 @@ +The following is an example fo the rwbytype.d script. + + +We run rwbytype.d for a few seconds then hit Ctrl-C, + + # rwbytype.d + Tracing... Hit Ctrl-C to end. + ^C + PID CMD VTYPE DIR BYTES + 1545 sshd chr W 1 + 10357 more chr R 30 + 2357 sshd chr W 31 + 10354 dtrace chr W 32 + 1545 sshd chr R 34 + 6778 bash chr W 44 + 1545 sshd sock R 52 + 405 poold reg W 68 + 1545 sshd sock W 136 + 10357 bash reg R 481 + 10356 find reg R 481 + 10355 bash reg R 481 + 10357 more reg R 1652 + 2357 sshd sock R 1664 + 10357 more chr W 96925 + 10357 more fifo R 97280 + 2357 sshd chr R 98686 + 10356 grep fifo W 117760 + 2357 sshd sock W 118972 + 10356 grep reg R 147645 + +Here we can see that the grep process with PID 10356 read 147645 bytes +from "regular" files. These are I/O bytes at the application level, so +much of these read bytes would have been cached by the filesystem page cache. + +vnode file types are listed in /usr/include/sys/vnode.h, and give an idea of +what the file descriptor refers to. + diff --git a/cddl/contrib/dtracetoolkit/Examples/rwsnoop_example.txt b/cddl/contrib/dtracetoolkit/Examples/rwsnoop_example.txt new file mode 100644 index 000000000000..2ef26ababd94 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rwsnoop_example.txt @@ -0,0 +1,98 @@ +The following is a demonstration of the rwsnoop program, + + +Here we run it for about a second, + + # rwsnoop + UID PID CMD D BYTES FILE + 100 20334 sshd R 52 <unknown> + 100 20334 sshd W 1 /devices/pseudo/clone@0:ptm + 0 20320 bash W 1 /devices/pseudo/pts@0:12 + 100 20334 sshd R 2 /devices/pseudo/clone@0:ptm + 100 20334 sshd W 52 <unknown> + 0 2848 ls W 58 /devices/pseudo/pts@0:12 + 0 2848 ls W 68 /devices/pseudo/pts@0:12 + 0 2848 ls W 57 /devices/pseudo/pts@0:12 + 0 2848 ls W 67 /devices/pseudo/pts@0:12 + 0 2848 ls W 48 /devices/pseudo/pts@0:12 + 0 2848 ls W 49 /devices/pseudo/pts@0:12 + 0 2848 ls W 33 /devices/pseudo/pts@0:12 + 0 2848 ls W 41 /devices/pseudo/pts@0:12 + 100 20334 sshd R 429 /devices/pseudo/clone@0:ptm + 100 20334 sshd W 468 <unknown> + ^C + +The output scrolls rather fast. Above, we can see an ls command was run, +and we can see as ls writes each line. The "<unknown>" read/writes are +socket activity, which have no corresponding filename. + + +For a summary style output, use the rwtop program. + + + +If a particular program is of interest, the "-n" option can be used +to match on process name. Here we match on "bash" during a login where +the user uses the bash shell as their default, + + # rwsnoop -n bash + UID PID CMD D BYTES FILE + 100 2854 bash R 757 /etc/nsswitch.conf + 100 2854 bash R 0 /etc/nsswitch.conf + 100 2854 bash R 668 /etc/passwd + 100 2854 bash R 980 /etc/profile + 100 2854 bash W 15 /devices/pseudo/pts@0:14 + 100 2854 bash R 10 /export/home/brendan/.bash_profile + 100 2854 bash R 867 /export/home/brendan/.bashrc + 100 2854 bash R 980 /etc/profile + 100 2854 bash W 15 /devices/pseudo/pts@0:14 + 100 2854 bash R 8951 /export/home/brendan/.bash_history + 100 2854 bash R 8951 /export/home/brendan/.bash_history + 100 2854 bash R 1652 /usr/share/lib/terminfo/d/dtterm + 100 2854 bash W 41 /devices/pseudo/pts@0:14 + 100 2854 bash R 1 /devices/pseudo/pts@0:14 + 100 2854 bash W 1 /devices/pseudo/pts@0:14 + 100 2854 bash W 41 /devices/pseudo/pts@0:14 + 100 2854 bash R 1 /devices/pseudo/pts@0:14 + 100 2854 bash W 7 /devices/pseudo/pts@0:14 + +In the above, various bash related files such as ".bash_profile" and +".bash_history" can be seen. The ".bashrc" is also read, as it was sourced +from the .bash_profile. + + + +Extra options with rwsnoop allow us to print zone ID, project ID, timestamps, +etc. Here we use "-v" to see the time printed, and match on "ps" processes, + + # rwsnoop -vn ps + TIMESTR UID PID CMD D BYTES FILE + 2005 Jul 24 04:23:45 0 2804 ps R 168 /proc/2804/auxv + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/2804/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 1495 /etc/ttysrch + 2005 Jul 24 04:23:45 0 2804 ps W 28 /devices/pseudo/pts. + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/0/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/1/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/2/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/3/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/218/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/7/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/9/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/360/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/91/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/112/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/307/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/226/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/242/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/228/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/243/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/234/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/119/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/143/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/361/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/20314/psinfo + 2005 Jul 24 04:23:45 0 2804 ps R 336 /proc/116/psinfo + [...] + + + diff --git a/cddl/contrib/dtracetoolkit/Examples/rwtop_example.txt b/cddl/contrib/dtracetoolkit/Examples/rwtop_example.txt new file mode 100644 index 000000000000..728431243f87 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/rwtop_example.txt @@ -0,0 +1,59 @@ +The following is a demonstration of the rwtop program, + + +By default it will refresh the screen every 5 seconds, + + # rwtop + 2005 Jul 24 01:00:43, load: 1.02, app_r: 8 KB, app_w: 19 KB + + UID PID PPID CMD D BYTES + 0 20320 20347 bash R 10 + 0 20320 20347 bash W 95 + 100 20317 20314 sshd R 650 + 100 20317 20314 sshd W 733 + 0 2365 20320 ls W 1300 + 0 2364 20320 vi R 2323 + 0 2365 20320 ls R 2485 + 100 20334 20331 sshd R 3010 + 100 20334 20331 sshd W 3729 + 0 2364 20320 vi W 14128 + +In the above output, we can see that a "vi" process wrote 14 Kbytes and +read 2 Kbytes. + + + +In the following example, we print the top 5 processes in a scrolling +output by using "-C" to not clear the screen, + + # rwtop -C -t5 + Tracing... Please wait. + 2005 Jul 24 01:03:27, load: 1.05, app_r: 261 KB, app_w: 348 KB + + UID PID PPID CMD D BYTES + 0 2381 20320 svcs W 5801 + 0 9 1 svc.configd R 115712 + 0 2380 20320 find W 140003 + 100 20334 20331 sshd R 150740 + 100 20334 20331 sshd W 210773 + + 2005 Jul 24 01:03:32, load: 1.07, app_r: 110 KB, app_w: 233 KB + + UID PID PPID CMD D BYTES + 100 20317 20314 sshd R 419 + 100 20317 20314 sshd W 468 + 0 2382 20320 find W 110720 + 100 20334 20331 sshd R 112835 + 100 20334 20331 sshd W 128175 + + 2005 Jul 24 01:03:37, load: 1.07, app_r: 6 KB, app_w: 7 KB + + UID PID PPID CMD D BYTES + 0 2383 20320 df W 1154 + 0 2385 20320 ls W 1300 + 0 2385 20320 ls R 2485 + 100 20334 20331 sshd R 3929 + 100 20334 20331 sshd W 4339 + + ^C + diff --git a/cddl/contrib/dtracetoolkit/Examples/sampleproc_example.txt b/cddl/contrib/dtracetoolkit/Examples/sampleproc_example.txt new file mode 100644 index 000000000000..d60d44644b7e --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sampleproc_example.txt @@ -0,0 +1,62 @@ +The following is an example of the sampleproc program. + + +Here we run sampleproc for a few seconds on a workstation, + + # ./sampleproc + Sampling at 100 hertz... Hit Ctrl-C to end. + ^C + PID CMD COUNT + 1659 mozilla-bin 3 + 109 nscd 4 + 2197 prstat 23 + 2190 setiathome 421 + + PID CMD PERCENT + 1659 mozilla-bin 0 + 109 nscd 0 + 2197 prstat 5 + 2190 setiathome 93 + +The first table shows a count of how many times each process was sampled +on the CPU. The second table gives this as a percentage. + +setiathome was on the CPU 421 times, which is 93% of the samples. + + + + +The following is sampleproc running on a server with 4 CPUs. A bash shell +is running in an infinate loop, + + # ./sampleproc + Sampling at 100 hertz... Hit Ctrl-C to end. + ^C + PID CMD COUNT + 10140 dtrace 1 + 28286 java 1 + 29345 esd 2 + 29731 esd 3 + 2 pageout 4 + 29733 esd 6 + 10098 bash 1015 + 0 sched 3028 + + PID CMD PERCENT + 10140 dtrace 0 + 28286 java 0 + 29345 esd 0 + 29731 esd 0 + 2 pageout 0 + 29733 esd 0 + 10098 bash 24 + 0 sched 74 + +The bash shell was on the CPUs for 24% of the time, which is consistant +with a CPU bound single threaded application on a 4 CPU server. + +The above sample was around 10 seconds long. During this time, there were +around 4000 samples (checking the COUNT column), this is due to +4000 = CPUs (4) * Hertz (100) * Seconds (10). + + diff --git a/cddl/contrib/dtracetoolkit/Examples/sar-c_example.txt b/cddl/contrib/dtracetoolkit/Examples/sar-c_example.txt new file mode 100644 index 000000000000..7669eba5b61f --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sar-c_example.txt @@ -0,0 +1,55 @@ +The following is a demonstration of the sar-c.d script. + + +Here we run both sar-c.d and "sar -c 1 100" at the same time, to compare +outputs. + +The DTrace script, + + # ./sar-c.d + Time scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s + 2005 Jun 14 02:40:24 1556 82 71 0.00 0.00 10262 10508 + 2005 Jun 14 02:40:25 1553 88 75 0.00 0.00 15095 15341 + 2005 Jun 14 02:40:26 1596 89 76 0.00 0.00 14885 15131 + 2005 Jun 14 02:40:27 5395 290 154 9.00 10.00 185991 77219 + 2005 Jun 14 02:40:28 1755 91 98 1.00 1.00 15421 16788 + 2005 Jun 14 02:40:29 1757 100 91 1.00 1.00 17127 17462 + 2005 Jun 14 02:40:30 1603 95 80 0.00 0.00 16767 16634 + 2005 Jun 14 02:40:31 14380 83 2420 1.00 1.00 14556 126461 + 2005 Jun 14 02:40:32 10573 88 1586 0.00 0.00 14222 87888 + 2005 Jun 14 02:40:33 1645 87 76 0.00 0.00 15320 15608 + 2005 Jun 14 02:40:34 2099 167 130 0.00 0.00 126295 74281 + 2005 Jun 14 02:40:35 1559 79 67 0.00 0.00 11663 11977 + [...] + +The original command, + + $ sar -c 1 100 + + SunOS jupiter 5.10 Generic i86pc 06/14/2005 + + 02:40:23 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s + 02:40:24 1549 86 74 0.00 0.00 14799 15040 + 02:40:25 1552 85 73 0.00 0.00 14475 14719 + 02:40:26 5479 300 161 9.00 10.00 186755 77983 + 02:40:27 1725 86 94 0.99 0.99 14819 16172 + 02:40:28 1596 96 82 0.00 0.00 16521 16762 + 02:40:29 1716 93 85 1.00 1.00 16395 16730 + 02:40:30 1579 88 75 0.00 0.00 15324 15192 + 02:40:32 23036 79 3887 0.99 0.99 10113 193520 + 02:40:33 1756 94 83 0.00 0.00 14935 15300 + 02:40:34 2099 165 130 0.00 0.00 125051 73552 + 02:40:35 1560 82 69 0.00 0.00 15976 16287 + [...] + +We can see that both tools are producing similar data. + +The DTrace output lacks the "summary since boot" line, as it is not using +Kstat to fetch this data. + + +The sar-c.d script is not intended itself as a useful program, rather it +is intended as a starting point for other DTrace scripts; a starting point +of familiar statistics to provide the programmer with a "common ground" +of knowledge. + diff --git a/cddl/contrib/dtracetoolkit/Examples/seeksize_example.txt b/cddl/contrib/dtracetoolkit/Examples/seeksize_example.txt new file mode 100644 index 000000000000..ba41a87e847e --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/seeksize_example.txt @@ -0,0 +1,197 @@ +The following are examples of seeksize.d. + +seeksize.d records disk head seek size for each operation by process. +This allows up to identify processes that are causing "random" disk +access and those causing "sequential" disk access. + +It is desirable for processes to be accesing the disks in large +sequential operations. By using seeksize.d and bitesize.d we can +identify this behaviour. + + + +In this example we read through a large file by copying it to a +remote server. Most of the seek sizes are zero, indicating sequential +access - and we would expect good performance from the disks +under these conditions, + +# ./seeksize.d +Tracing... Hit Ctrl-C to end. +^C + + 22349 scp /dl/sol-10-b63-x86-v1.iso mars:\0 + + value ------------- Distribution ------------- count + -1 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 726 + 1 | 0 + 2 | 0 + 4 | 0 + 8 |@ 13 + 16 | 4 + 32 | 0 + 64 | 0 + 128 | 2 + 256 | 3 + 512 | 4 + 1024 | 4 + 2048 | 3 + 4096 | 0 + 8192 | 3 + 16384 | 0 + 32768 | 1 + 65536 | 0 + + + +In this example we run find. The disk operations are fairly scattered, +as illustrated below by the volume of non sequential reads, + +# ./seeksize.d +Tracing... Hit Ctrl-C to end. +^C + + 22399 find /var/sadm/pkg/\0 + + value ------------- Distribution ------------- count + -1 | 0 + 0 |@@@@@@@@@@@@@ 1475 + 1 | 0 + 2 | 44 + 4 |@ 77 + 8 |@@@ 286 + 16 |@@ 191 + 32 |@ 154 + 64 |@@ 173 + 128 |@@ 179 + 256 |@@ 201 + 512 |@@ 186 + 1024 |@@ 236 + 2048 |@@ 201 + 4096 |@@ 274 + 8192 |@@ 243 + 16384 |@ 154 + 32768 |@ 113 + 65536 |@@ 182 + 131072 |@ 81 + 262144 | 0 + + + + +I found the following interesting. This time I gzipp'd the large file. +While zipping, the process is reading from one location and writing +to another. One might expect that as the program toggles between +reading from one location and writing to another, that often the +distance would be the same (depending on where UFS puts the new file), + +# ./seeksize.d +Tracing... Hit Ctrl-C to end. +^C + + 22368 gzip sol-10-b63-x86-v1.iso\0 + + value ------------- Distribution ------------- count + -1 | 0 + 0 |@@@@@@@@@@@@ 353 + 1 | 0 + 2 | 0 + 4 | 0 + 8 | 7 + 16 | 4 + 32 | 2 + 64 | 4 + 128 | 14 + 256 | 3 + 512 | 3 + 1024 | 5 + 2048 | 1 + 4096 | 0 + 8192 | 3 + 16384 | 1 + 32768 | 1 + 65536 | 1 + 131072 | 1 + 262144 |@@@@@@@@ 249 + 524288 | 1 + 1048576 | 2 + 2097152 | 1 + 4194304 | 2 + 8388608 |@@@@@@@@@@@@@@@@@@ 536 + 16777216 | 0 + + + + +The following example compares the operation of "find" with "tar". +Both are reading from the same location, and we would expect that +both programs would generally need to do the same number of seeks +to navigate the direttory tree (depending on caching); and tar +causing extra operations as it reads the file contents as well, + +# ./seeksize.d +Tracing... Hit Ctrl-C to end. +^C + + PID CMD + 22278 find /etc\0 + + value ------------- Distribution ------------- count + -1 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@ 251 + 1 | 0 + 2 |@ 8 + 4 | 5 + 8 |@ 10 + 16 |@ 10 + 32 |@ 10 + 64 |@ 9 + 128 |@ 11 + 256 |@ 14 + 512 |@@ 20 + 1024 |@ 10 + 2048 | 6 + 4096 |@ 7 + 8192 |@ 10 + 16384 |@ 16 + 32768 |@@ 21 + 65536 |@@ 28 + 131072 |@ 7 + 262144 |@ 14 + 524288 | 6 + 1048576 |@ 15 + 2097152 |@ 7 + 4194304 | 0 + + + 22282 tar cf /dev/null /etc\0 + + value ------------- Distribution ------------- count + -1 | 0 + 0 |@@@@@@@@@@ 397 + 1 | 0 + 2 | 8 + 4 | 14 + 8 | 16 + 16 |@ 24 + 32 |@ 29 + 64 |@@ 99 + 128 |@@ 73 + 256 |@@ 78 + 512 |@@@ 109 + 1024 |@@ 62 + 2048 |@@ 69 + 4096 |@@ 73 + 8192 |@@@ 113 + 16384 |@@ 81 + 32768 |@@@ 111 + 65536 |@@@ 108 + 131072 |@ 49 + 262144 |@ 33 + 524288 | 20 + 1048576 | 13 + 2097152 | 7 + 4194304 | 5 + 8388608 |@ 30 + 16777216 | 0 + diff --git a/cddl/contrib/dtracetoolkit/Examples/setuids_example.txt b/cddl/contrib/dtracetoolkit/Examples/setuids_example.txt new file mode 100644 index 000000000000..be197bf4b566 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/setuids_example.txt @@ -0,0 +1,28 @@ +The following is an example of setuids.d. Login events in particular can +be seen, along with use of the "su" command. + + # ./setuids.d + UID SUID PPID PID PCMD CMD + 0 100 3037 3040 in.telnetd login -p -h mars -d /dev/pts/12 + 100 0 3040 3045 bash su - + 0 102 3045 3051 sh su - fred + 0 100 3055 3059 sshd /usr/lib/ssh/sshd + 0 100 3065 3067 in.rlogind login -d /dev/pts/12 -r mars + 0 100 3071 3073 in.rlogind login -d /dev/pts/12 -r mars + 0 102 3078 3081 in.telnetd login -p -h mars -d /dev/pts/12 + ^C + +The first line is a telnet login to the user brendan, UID 100. The parent +command is "in.telnetd", the telnet daemon spawned by inetd, and the +command that in.telnetd runs is "login". + +The second line shows UID 100 using the "su" command to become root. + +The third line has the root user using "su" to become fred, UID 102. + +The fourth line is an example of an ssh login. + +The fifth and sixth lines are examples of rsh and rlogin. + +The last line is another example of a telnet login for fred, UID 102. + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_calldist_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_calldist_example.txt new file mode 100644 index 000000000000..6c6a01faedb5 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_calldist_example.txt @@ -0,0 +1,309 @@ +The following are examples of sh_calldist.d. + +This script traces the elapsed time of Bourne shell functions and +prints a report containing distribution plots per function. Here it +traces the example program, Code/Shell/func_abc.sh. + + # sh_calldist.d + Tracing... Hit Ctrl-C to end. + ^C + + Elapsed times (us), + + func_abc.sh, builtin, echo + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@ 1 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + func_abc.sh, cmd, sleep + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 1048576 | 0 + + Exclusive function elapsed times (us), + + func_abc.sh, func, func_a + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + func_abc.sh, func, func_b + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + func_abc.sh, func, func_c + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + Inclusive function elapsed times (us), + + func_abc.sh, func, func_c + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + func_abc.sh, func, func_b + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + func_abc.sh, func, func_a + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + +The elapsed times show that the echo builtin takes between 16 and 64 us +to execute. + +The exclusive function elapsed times show that each function spent +between 2 and 4 ms. This exclusive time excludes the time spent in +other functions. + +The inclusive function elapsed times show that func_c() took between 0.5 and +1.0 seconds, func_b() took between 1.0 and 2.1 seconds, and func_a() took +between 2.1 and 4.2 seconds to execute. This inclusive time includes the +time spent in other functions and commands called, and since func_a() +calls func_b() which calls func_c(), and, each function is calling "sleep 1", +these times make sense. + +These elapsed times are the absolute time from when the function began to +when it completed - which includes off-CPU time due to other system events +such as I/O, scheduling, interrupts, etc. + +Elapsed times are useful for identifying where latencies are. +See Notes/ALLelapsed_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive function time. + + + +The following traces the firefox startup script. + +# sh_calldist.d +Tracing... Hit Ctrl-C to end. +^C + +Elapsed times (us), + + run-mozilla.sh, builtin, return + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + run-mozilla.sh, builtin, shift + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2 | 0 + + run-mozilla.sh, builtin, break + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + firefox, builtin, break + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8 | 0 + + run-mozilla.sh, builtin, export + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@ 1 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 4 | 0 + + firefox, builtin, export + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 4 |@@@@@@@@@@@@@ 1 + 8 | 0 + + firefox, builtin, : + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 2 | 0 + 4 |@@@@@@@ 1 + 8 | 0 + + firefox, builtin, pwd + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + firefox, builtin, test + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + firefox, builtin, cd + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@ 1 + 16 |@@@@@@@@@@@@@ 1 + 32 |@@@@@@@@@@@@@ 1 + 64 | 0 + + firefox, builtin, [ + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@ 3 + 2 |@@ 1 + 4 |@@ 1 + 8 |@@@@@@@ 3 + 16 |@@@@@@@@@@@ 5 + 32 |@@@@@@@ 3 + 64 |@@@@ 2 + 128 | 0 + + run-mozilla.sh, builtin, type + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + run-mozilla.sh, builtin, [ + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@ 4 + 2 |@@@@@@@@@@ 5 + 4 |@@@@ 2 + 8 |@@@@@@ 3 + 16 |@@@@@@@@@@ 5 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 |@@ 1 + 4096 | 0 + + firefox, builtin, echo + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@ 1 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + firefox, cmd, /usr/lib/firefox/run-mozilla.sh + value ------------- Distribution ------------- count + 2097152 | 0 + 4194304 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8388608 | 0 + + run-mozilla.sh, cmd, /usr/lib/firefox/firefox-bin + value ------------- Distribution ------------- count + 2097152 | 0 + 4194304 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8388608 | 0 + +Exclusive function elapsed times (us), + + run-mozilla.sh, func, moz_test_binary + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 64 | 0 + + firefox, func, moz_spc_verbose_echo + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@ 2 + 8 |@@@@@@@@@@@@@ 2 + 16 |@@@@@@@@@@@@@ 2 + 32 | 0 + + firefox, func, moz_pis_startstop_scripts + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 | 0 + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@ 1 + 65536 | 0 + + run-mozilla.sh, func, moz_run_program + value ------------- Distribution ------------- count + 65536 | 0 + 131072 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 262144 | 0 + +Inclusive function elapsed times (us), + + firefox, func, moz_spc_verbose_echo + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4 + 16 |@@@@@@@@@@@@@ 2 + 32 | 0 + + run-mozilla.sh, func, moz_test_binary + value ------------- Distribution ------------- count + 32 | 0 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + firefox, func, moz_pis_startstop_scripts + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 | 0 + 16384 | 0 + 32768 |@@@@@@@@@@@@@@@@@@@@ 1 + 65536 | 0 + + run-mozilla.sh, func, moz_run_program + value ------------- Distribution ------------- count + 2097152 | 0 + 4194304 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 8388608 | 0 + + +As an example of interpreting the output: the inclusive elapsed time for +the "[" (test) builtin, + + firefox, builtin, [ + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@ 3 + 2 |@@ 1 + 4 |@@ 1 + 8 |@@@@@@@ 3 + 16 |@@@@@@@@@@@ 5 + 32 |@@@@@@@ 3 + 64 |@@@@ 2 + 128 | 0 + +shows that it was called 17 times (after adding up the counts), 5 of which +took between 16 and 31 microseconds. + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_calls_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_calls_example.txt new file mode 100644 index 000000000000..064cf977936f --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_calls_example.txt @@ -0,0 +1,60 @@ +The following are examples of sh_calls.d. + +This is a simple script to count Bourne shell calls. Here it traces an +example program, Code/Perl/func_abc.sh. + + # sh_calls.d + Tracing... Hit Ctrl-C to end. + ^C + FILE TYPE NAME COUNT + func_abc.sh func func_a 1 + func_abc.sh func func_b 1 + func_abc.sh func func_c 1 + func_abc.sh builtin echo 3 + func_abc.sh cmd sleep 3 + +While tracing, function func_a() from the program "func_abc.sh" was executed +once, along with func_b() and func_c(). The "echo" builtin was called 3 +times, as was the "sleep" command. + + +The following traced the firefox start script, + + # sh_calls.d + Tracing... Hit Ctrl-C to end. + ^C + FILE TYPE NAME COUNT + firefox builtin . 1 + firefox builtin break 1 + firefox builtin exit 1 + firefox builtin pwd 1 + firefox builtin test 1 + firefox cmd /usr/lib/firefox/run-mozilla.sh 1 + run-mozilla.sh builtin break 1 + run-mozilla.sh builtin exit 1 + run-mozilla.sh builtin return 1 + run-mozilla.sh builtin shift 1 + run-mozilla.sh builtin type 1 + run-mozilla.sh cmd /usr/lib/firefox/firefox-bin 1 + run-mozilla.sh func moz_run_program 1 + run-mozilla.sh func moz_test_binary 1 + firefox builtin echo 2 + firefox func moz_pis_startstop_scripts 2 + firefox builtin cd 3 + firefox builtin export 3 + run-mozilla.sh builtin export 3 + firefox builtin : 6 + firefox func moz_spc_verbose_echo 6 + run-mozilla.sh subsh - 9 + firefox builtin [ 18 + firefox subsh - 20 + run-mozilla.sh builtin [ 20 + +The firefox start script called run-mozilla.sh, which can be seen both +as a "cmd" call in the above output from the "firefox" script, and as +additionall calls from the "run-mozilla.sh" script. + +The builtin called "[" is the test builtin, and was called 20 times by +"run-mozilla.sh" and 18 times by "firefox". The "firefox" script also called +20 subshells. + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_calltime_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_calltime_example.txt new file mode 100644 index 000000000000..5c39ae404f0d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_calltime_example.txt @@ -0,0 +1,144 @@ +The following are examples of sh_calltime.d. + +This script traces the elapsed time of Bourne shell functions and +prints a report. Here it traces the example program, Code/Shell/func_abc.sh. + + # sh_calltime.d + Tracing... Hit Ctrl-C to end. + ^C + + Counts, + FILE TYPE NAME COUNT + func_abc.sh func func_a 1 + func_abc.sh func func_b 1 + func_abc.sh func func_c 1 + func_abc.sh builtin echo 3 + func_abc.sh cmd sleep 3 + - total - 9 + + Elapsed times (us), + FILE TYPE NAME TOTAL + func_abc.sh builtin echo 108 + func_abc.sh cmd sleep 3023760 + - total - 3023868 + + Exclusive function elapsed times (us), + FILE TYPE NAME TOTAL + func_abc.sh func func_b 2629 + func_abc.sh func func_c 2822 + func_abc.sh func func_a 3249 + - total - 8702 + + Inclusive function elapsed times (us), + FILE TYPE NAME TOTAL + func_abc.sh func func_c 1009659 + func_abc.sh func func_b 2020077 + func_abc.sh func func_a 3032571 + +In total, three functions were called, one builtin and one command. + +The elapsed times show that 3.0 seconds was spent in the sleep command, +which is what would be expected based on the script. + +The exclusive function elapsed times show that each function spent around +2.7 milliseconds of time processing code - while not in other functions. + +The inclusive function elapsed times show that func_a() took around 3.0 +seconds to execute, followed by func_b() at 2.0 seconds, and func_c() at 1.0. +The inclusive time includes the time spent in other calls, and since +func_a() called func_b() which called func_c(), and they all call "sleep 1", +these times make sense. + +These elapsed times are the absolute time from when the function began to +when it completed - which includes off-CPU time due to other system events +such as I/O, scheduling, interrupts, etc. In particular, for this case it has +included the time waiting for the sleep commands. + +Elapsed times are useful for identifying where latencies are. +See Notes/ALLelapsed_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive function time. + +If you study the func_abc.sh program alongside the above output, the numbers +should make sense. + + + +The following traces the firefox start script. + +# sh_calltime.d +Tracing... Hit Ctrl-C to end. +^C + +Counts, + FILE TYPE NAME COUNT + firefox builtin break 1 + firefox builtin pwd 1 + firefox builtin test 1 + firefox cmd /usr/lib/firefox/run-mozilla.sh 1 + run-mozilla.sh builtin break 1 + run-mozilla.sh builtin return 1 + run-mozilla.sh builtin shift 1 + run-mozilla.sh builtin type 1 + run-mozilla.sh cmd /usr/lib/firefox/firefox-bin 1 + run-mozilla.sh func moz_run_program 1 + run-mozilla.sh func moz_test_binary 1 + firefox builtin echo 2 + firefox func moz_pis_startstop_scripts 2 + firefox builtin cd 3 + firefox builtin export 3 + run-mozilla.sh builtin export 3 + firefox builtin : 6 + firefox func moz_spc_verbose_echo 6 + firefox builtin [ 18 + run-mozilla.sh builtin [ 20 + - total - 103 + +Elapsed times (us), + FILE TYPE NAME TOTAL + run-mozilla.sh builtin return 1 + run-mozilla.sh builtin shift 1 + run-mozilla.sh builtin break 2 + firefox builtin break 4 + run-mozilla.sh builtin export 6 + firefox builtin export 10 + firefox builtin : 15 + firefox builtin pwd 50 + firefox builtin cd 72 + run-mozilla.sh builtin [ 210 + firefox builtin echo 323 + firefox builtin [ 480 + run-mozilla.sh builtin type 486 + firefox builtin test 15330 + run-mozilla.sh cmd /usr/lib/firefox/firefox-bin 8941269 + firefox cmd /usr/lib/firefox/run-mozilla.sh 9384335 + - total - 18342766 + +Exclusive function elapsed times (us), + FILE TYPE NAME TOTAL + run-mozilla.sh func moz_test_binary 54 + firefox func moz_spc_verbose_echo 136 + firefox func moz_pis_startstop_scripts 230221 + run-mozilla.sh func moz_run_program 402343 + - total - 632756 + +Inclusive function elapsed times (us), + FILE TYPE NAME TOTAL + run-mozilla.sh func moz_test_binary 91 + firefox func moz_spc_verbose_echo 151 + firefox func moz_pis_startstop_scripts 230587 + run-mozilla.sh func moz_run_program 9343826 + + + +The output showed that the most inclusive function elapsed time was in +moz_run_program() at 9.3 seconds, which comes as little suprise since +I let firefox run for several seconds before closing it. That same duration +explains the large command times in the elapsed times report. + +Of more interest are the exclusive function elapsed times, where +moz_pis_startstop_scripts() was the slowest at 230 ms. Other areas of the +report are also useful to sanity check your software - should it be calling +these things? Especially if there are any commands called that can be +builtins instead. + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_cpudist_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_cpudist_example.txt new file mode 100644 index 000000000000..272e9093d55f --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_cpudist_example.txt @@ -0,0 +1,92 @@ +The following are examples of sh_cpudist.d. + +This script traces the on-CPU time of Bourne shell functions and +prints a report containing distribution plots per function. Here it +traces the example program, Code/Shell/func_slow.sh. + + # sh_cpudist.d + Tracing... Hit Ctrl-C to end. + ^C + + On-CPU times (us), + + func_slow.sh, builtin, echo + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@ 1 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + + func_slow.sh, builtin, [ + value ------------- Distribution ------------- count + 0 | 0 + 1 | 1 + 2 | 1 + 4 |@ 22 + 8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 575 + 16 | 2 + 32 | 0 + 64 | 2 + 128 | 0 + + Exclusive function on-CPU times (us), + + func_slow.sh, func, func_a + value ------------- Distribution ------------- count + 65536 | 0 + 131072 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 262144 | 0 + + func_slow.sh, func, func_b + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + func_slow.sh, func, func_c + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + Inclusive function on-CPU times (us), + + func_slow.sh, func, func_b + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + func_slow.sh, func, func_c + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + func_slow.sh, func, func_a + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + +The on-CPU times should that the "[" builtin (test) usually took between +8 and 15 microseconds to execute, and was called over 500 times. + +The exclusive function on-CPU times show that func_a() spent between +131 ms and 262 ms on-CPU. + +The inclusive function on-CPU times show that both func_b() and func_c() +spent between 1.0 and 2.1 seconds on-CPU, and func_a() spent between 2.1 +and 4.2 seconds on-CPU. This inclusive time includes the time spent in other +functions called, and since func_a() called func_b() which called func_c(), +these times make sense. + +These on-CPU times are the time the thread spent running on a CPU, from when +the function began to when it completed. This does not include time +spent off-CPU time such as sleeping for I/O or waiting for scheduling. + +On-CPU times are useful for showing who is causing the CPUs to be busy. +See Notes/ALLoncpu_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive function time. + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_cputime_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_cputime_example.txt new file mode 100644 index 000000000000..d3ae5bc50b11 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_cputime_example.txt @@ -0,0 +1,131 @@ +The following are examples of sh_cputime.d. + +This script traces the on-CPU time of Bourne shell functions and +prints a report. Here it traces the example program, Code/Shell/func_slow.sh. + + # sh_cputime.d + Tracing... Hit Ctrl-C to end. + ^C + + Counts, + FILE TYPE NAME COUNT + func_slow.sh func func_a 1 + func_slow.sh func func_b 1 + func_slow.sh func func_c 1 + func_slow.sh builtin echo 3 + func_slow.sh builtin [ 603 + - total - 609 + + On-CPU times (us), + FILE TYPE NAME TOTAL + func_slow.sh builtin echo 162 + func_slow.sh builtin [ 6279 + - total - 6441 + + Exclusive function on-CPU times (us), + FILE TYPE NAME TOTAL + func_slow.sh func func_a 269465 + func_slow.sh func func_b 670372 + func_slow.sh func func_c 1259073 + - total - 2198911 + + Inclusive function on-CPU times (us), + FILE TYPE NAME TOTAL + func_slow.sh func func_c 1262209 + func_slow.sh func func_b 1934839 + func_slow.sh func func_a 2205352 + +In total, three functions were called, one builtin and one command. + +The exclusive function on-CPU times show that func_a() spent around 268.4 ms +on-CPU, func_b() spent 670.3 ms, and func_c() spent 1259 ms. This exclusive +times excludes time spent in other functions. + +The inclusive function on-CPU times show that func_c() spent around 1.3 +seconds on-CPU, func_b() spent around 1.9 seconds, and func_a() spent around +2.2 seconds. This inclusive time includes the time spent in other functions +called, and since func_a() called func_b() which called func_c(), these +times make sense. + +These on-CPU times are the time the thread spent running on a CPU, from when +the function began to when it completed. This does not include time +spent off-CPU time such as sleeping for I/O or waiting for scheduling. + +On-CPU times are useful for showing who is causing the CPUs to be busy. +See Notes/ALLoncpu_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive function time. + +If you study the func_slow.sh program alongside the above output, the numbers +should make sense. + + + +The following traced the firefox start script. + +# sh_cputime.d +Tracing... Hit Ctrl-C to end. +^C + +Counts, + FILE TYPE NAME COUNT + firefox builtin break 1 + firefox builtin pwd 1 + firefox builtin test 1 + firefox cmd run-mozilla.sh 1 + run-mozilla.sh builtin break 1 + run-mozilla.sh builtin return 1 + run-mozilla.sh builtin shift 1 + run-mozilla.sh builtin type 1 + run-mozilla.sh cmd firefox-bin 1 + run-mozilla.sh func moz_run_program 1 + run-mozilla.sh func moz_test_binary 1 + firefox builtin echo 2 + firefox func moz_pis_startstop_scripts 2 + firefox builtin cd 3 + firefox builtin export 3 + run-mozilla.sh builtin export 3 + firefox builtin : 6 + firefox func moz_spc_verbose_echo 6 + firefox builtin [ 18 + run-mozilla.sh builtin [ 20 + - total - 103 + +On-CPU times (us), + FILE TYPE NAME TOTAL + run-mozilla.sh builtin return 0 + run-mozilla.sh builtin shift 0 + run-mozilla.sh builtin break 1 + firefox builtin break 2 + run-mozilla.sh builtin export 4 + firefox builtin export 7 + firefox builtin : 9 + firefox builtin test 35 + firefox builtin pwd 49 + firefox builtin cd 64 + run-mozilla.sh builtin [ 176 + firefox builtin echo 309 + firefox builtin [ 357 + run-mozilla.sh builtin type 475 + firefox cmd run-mozilla.sh 17090 + run-mozilla.sh cmd firefox-bin 1932333 + - total - 1950979 + +Exclusive function on-CPU times (us), + FILE TYPE NAME TOTAL + run-mozilla.sh func moz_test_binary 21 + firefox func moz_spc_verbose_echo 22 + run-mozilla.sh func moz_run_program 9098 + firefox func moz_pis_startstop_scripts 12960 + - total - 22103 + +Inclusive function on-CPU times (us), + FILE TYPE NAME TOTAL + firefox func moz_spc_verbose_echo 31 + run-mozilla.sh func moz_test_binary 56 + run-mozilla.sh func moz_run_program 9243 + firefox func moz_pis_startstop_scripts 13133 + +The output showed that the most CPU time was spent in the firefox-bin command, +taking 1.9 seconds of on-CPU time. + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_flow_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_flow_example.txt new file mode 100644 index 000000000000..de7f22b88196 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_flow_example.txt @@ -0,0 +1,129 @@ +The following are examples of sh_flow.d. + +This is a simple script to trace the flow of Bourne shell functions, +builtins and external commands. Here it traces the example program, +Code/Shell/func_abc.sh. + + # sh_flow.d + C TIME(us) FILE -- NAME + 0 3060274370505 func_abc.sh -> func_a + 0 3060274370529 func_abc.sh > echo + 0 3060274372742 func_abc.sh | sleep + 0 3060275381634 func_abc.sh -> func_b + 0 3060275381660 func_abc.sh > echo + 0 3060275383852 func_abc.sh | sleep + 0 3060276391653 func_abc.sh -> func_c + 0 3060276391679 func_abc.sh > echo + 0 3060276393671 func_abc.sh | sleep + 0 3060277401753 func_abc.sh <- func_c + 0 3060277401767 func_abc.sh <- func_b + 0 3060277401775 func_abc.sh <- func_a + ^C + +As each function is entered, the third column is indented by 2 spaces. This +shows which function is calling who - the output abovebegins by showing that +func_a() began, and then called func_b(). + +If the output looks shuffled, check the CPU "C" and "TIME" columns, and +post sort based on TIME if necessary. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + + + +The following traces the firefox startup script. + +# sh_flow.d + C TIME(us) FILE -- NAME + 0 3060321598138 firefox > test + 0 3060321603730 firefox > [ + 0 3060321603796 firefox > cd + 0 3060321603878 firefox > [ + 0 3060321603900 firefox > [ + 0 3060321604099 firefox > [ + 0 3060321609050 firefox > echo + 0 3060321620601 firefox > echo + 0 3060321626369 firefox > [ + 0 3060321626432 firefox > export + 0 3060321626459 firefox -> moz_pis_startstop_scripts + 0 3060321626519 firefox > export + 0 3060321626966 firefox > [ + 0 3060321627031 firefox > . + 0 3060321628446 firefox -> moz_spc_verbose_echo + 0 3060321628458 firefox > : + 0 3060321628467 firefox <- moz_spc_verbose_echo + 0 3060321636461 firefox > [ + 0 3060321636738 firefox -> moz_spc_verbose_echo + 0 3060321636751 firefox > : + 0 3060321636760 firefox <- moz_spc_verbose_echo + 0 3060321636778 firefox > [ + 0 3060321636793 firefox > [ + 0 3060321636817 firefox > [ + 0 3060321637126 firefox -> moz_spc_verbose_echo + 0 3060321637136 firefox > : + 0 3060321637143 firefox <- moz_spc_verbose_echo + 0 3060321666922 firefox -> moz_spc_verbose_echo + 0 3060321666952 firefox > : + 0 3060321666964 firefox <- moz_spc_verbose_echo + 0 3060321674929 firefox > [ + 0 3060321680246 firefox > [ + 0 3060321680312 firefox -> moz_spc_verbose_echo + 0 3060321680323 firefox > : + 0 3060321680331 firefox <- moz_spc_verbose_echo + 0 3060321680356 firefox -> moz_spc_verbose_echo + 0 3060321680363 firefox > : + 0 3060321680370 firefox <- moz_spc_verbose_echo + 0 3060321680396 firefox > [ + 0 3060321680428 firefox <- moz_pis_startstop_scripts + 0 3060321680525 firefox > [ + 0 3060321680580 firefox > [ + 0 3060321685358 firefox | /usr/lib/firefox/run-mozilla.sh + 0 3060321700731 run-mozilla.sh > [ + 0 3060321700950 run-mozilla.sh > break + 0 3060321703259 run-mozilla.sh > [ + 0 3060321703292 run-mozilla.sh > shift + 0 3060321703382 run-mozilla.sh > [ + 0 3060321703421 run-mozilla.sh > [ + 0 3060321703493 run-mozilla.sh > [ + 0 3060321703642 run-mozilla.sh > [ + 0 3060321703669 run-mozilla.sh > export + 0 3060321703706 run-mozilla.sh > [ + 0 3060321703725 run-mozilla.sh > [ + 0 3060321703857 run-mozilla.sh > [ + 0 3060321703880 run-mozilla.sh > export + 0 3060321703925 run-mozilla.sh > export + 0 3060321703954 run-mozilla.sh > [ + 0 3060321703982 run-mozilla.sh -> moz_run_program + 0 3060321704013 run-mozilla.sh > [ + 0 3060321704049 run-mozilla.sh -> moz_test_binary + 0 3060321704065 run-mozilla.sh > [ + 0 3060321704097 run-mozilla.sh > [ + 0 3060321704127 run-mozilla.sh > return + 0 3060321704137 run-mozilla.sh <- moz_test_binary + 0 3060321704151 run-mozilla.sh > [ + 0 3060321709953 run-mozilla.sh > type + 0 3060321724260 run-mozilla.sh > [ + 0 3060321724559 run-mozilla.sh > [ + 0 3060321724574 run-mozilla.sh > [ + 0 3060321727396 run-mozilla.sh | /usr/lib/firefox/firefox-bin + 0 3060325513871 run-mozilla.sh > [ + 0 3060325513898 run-mozilla.sh > [ + 0 3060325513929 run-mozilla.sh > [ + 0 3060325513940 run-mozilla.sh <- moz_run_program + 0 3060325513967 run-mozilla.sh > exit + 0 3060325515113 firefox -> moz_pis_startstop_scripts + 0 3060325515189 firefox > export + 0 3060325515431 firefox > [ + 0 3060325515466 firefox > [ + 0 3060325515487 firefox <- moz_pis_startstop_scripts + 0 3060325515503 firefox > exit + +This shows the flow, incluing the handover between the "firefox" script +and the "run-mozilla.sh" script. + +There is a point in the output where flow appears to reverse (at time +3060321709953, with the entry "> type"). This is due to another instance +of the run-mozilla.sh script running, which is indistinguishable from +the other lines in the output. To confirm this for yourself, add a PID +column to the flow script (or use sh_flowinfo.d). + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_flowinfo_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_flowinfo_example.txt new file mode 100644 index 000000000000..1fb27cf4ea2d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_flowinfo_example.txt @@ -0,0 +1,242 @@ +The following are examples of sh_flowinfo.d. + +This is a simple script to trace the flow of Bourne shell functions, +builtins and external commands. Here it traces the example program, +Code/Shell/func_abc.sh. + + # sh_flowinfo.d + C PID DELTA(us) FILE:LINE TYPE -- NAME + 0 19634 2 func_abc.sh:23 func -> func_a + 0 19634 24 func_abc.sh:18 builtin -> echo + 0 19634 41 func_abc.sh:- builtin <- echo + 0 19634 5873 func_abc.sh:19 cmd -> sleep + 0 19634 999373 func_abc.sh:- cmd <- sleep + 0 19634 39 func_abc.sh:20 func -> func_b + 0 19634 22 func_abc.sh:11 builtin -> echo + 0 19634 40 func_abc.sh:- builtin <- echo + 0 19634 4661 func_abc.sh:12 cmd -> sleep + 0 19634 1005349 func_abc.sh:- cmd <- sleep + 0 19634 49 func_abc.sh:13 func -> func_c + 0 19634 22 func_abc.sh:5 builtin -> echo + 0 19634 38 func_abc.sh:- builtin <- echo + 0 19634 4949 func_abc.sh:6 cmd -> sleep + 0 19634 1004817 func_abc.sh:- cmd <- sleep + 0 19634 36 func_abc.sh:- func <- func_c + 0 19634 14 func_abc.sh:- func <- func_b + 0 19634 8 func_abc.sh:- func <- func_a + +As each function is entered, the third column is indented by 2 spaces. This +shows which function is calling who - the output abovebegins by showing that +func_a() began, and then called func_b(). + +The DELTA(us) column shows time from that line to the previous line, and +so can be a bit tricky to read. For example, the fifth line of data output +(skipping the header) reads as "the time from the command sleep beginning +to ending was 999373 us, or 1.0 seconds". + +The LINE column shows the line in the file what was being executed. Refer +to the source program to see what this line refers to. + +If the output looks shuffled, check the CPU "C" column - if it changes, +then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for +details and suggested workarounds. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + + +The following traces the firefox startup script. + +# sh_flowinfo.d + C PID DELTA(us) FILE:LINE TYPE -- NAME + 0 156789 1 firefox:- subsh -> pid 156790 + 0 156789 20 firefox:- subsh <- = 0 + 0 156789 31651 firefox:- subsh -> pid 156791 + 0 156789 20 firefox:- subsh <- = 0 + 0 156789 10502 firefox:109 builtin -> test + 0 156789 59 firefox:- builtin <- test + 0 156789 3804 firefox:- subsh -> pid 156792 + 0 156789 21 firefox:- subsh <- = 0 + 0 156789 22029 firefox:114 builtin -> [ + 0 156789 57 firefox:- builtin <- [ + 0 156789 90910 firefox:- subsh -> pid 156793 + 0 156789 22 firefox:- subsh <- = 0 + 0 156789 159492 firefox:- subsh -> pid 156794 + 0 156789 22 firefox:- subsh <- = 0 + 0 156789 127 firefox:116 builtin -> cd + 0 156789 54 firefox:- builtin <- cd + 0 156789 209757 firefox:- subsh -> pid 156795 + 0 156789 23 firefox:- subsh <- = 0 + 0 156795 206160 firefox:- subsh -> pid 156796 + 0 156795 9 firefox:- subsh <- = 0 + 0 156789 12115 firefox:118 builtin -> [ + 0 156789 61 firefox:- builtin <- [ + 0 156789 200529 firefox:- subsh -> pid 156797 + 0 156789 24 firefox:- subsh <- = 0 + 0 156789 136 firefox:123 builtin -> [ + 0 156789 58 firefox:- builtin <- [ + 0 156789 21 firefox:124 builtin -> cd + 0 156789 19 firefox:- builtin <- cd + 0 156798 175 firefox:1 builtin -> pwd + 0 156798 65 firefox:- builtin <- pwd + 0 156789 108835 firefox:- subsh -> pid 156798 + 0 156789 18 firefox:- subsh <- = 0 + 0 156789 119 firefox:128 builtin -> break + 0 156789 15 firefox:- builtin <- break + 0 156789 21 firefox:131 builtin -> cd + 0 156789 26 firefox:- builtin <- cd + 0 156789 61 firefox:133 builtin -> [ + 0 156789 9 firefox:- builtin <- [ + 0 156789 73508 firefox:147 builtin -> [ + 0 156789 25 firefox:- builtin <- [ + 0 156800 184 firefox:1 builtin -> echo + 0 156800 175 firefox:- builtin <- echo + 0 156789 15966 firefox:- subsh -> pid 156799 + 0 156789 22 firefox:- subsh <- = 0 + 0 156799 12091 firefox:- subsh -> pid 156800 + 0 156799 10 firefox:- subsh <- = 0 + 0 156802 178 firefox:1 builtin -> echo + 0 156802 167 firefox:- builtin <- echo + 0 156789 13822 firefox:- subsh -> pid 156801 + 0 156789 18 firefox:- subsh <- = 0 + 0 156801 81683 firefox:- subsh -> pid 156802 + 0 156801 21 firefox:- subsh <- = 0 + 0 156789 78324 firefox:158 builtin -> [ + 0 156789 37 firefox:- builtin <- [ + 0 156789 54 firefox:194 builtin -> export + 0 156789 9 firefox:- builtin <- export + 0 156789 26 firefox:197 func -> moz_pis_startstop_scripts + 0 156789 61 firefox:62 builtin -> export + 0 156789 9 firefox:- builtin <- export + 0 156789 413 firefox:67 builtin -> [ + 0 156789 34 firefox:- builtin <- [ + 0 156789 40 firefox:69 builtin -> . + 0 156789 20833 firefox:18 func -> moz_spc_verbose_echo + 0 156789 26 firefox:15 builtin -> : + 0 156789 16 firefox:- builtin <- : + 0 156789 15 firefox:- func <- moz_spc_verbose_echo + 0 156789 105106 firefox:- subsh -> pid 156803 + 0 156789 22 firefox:- subsh <- = 0 + 0 156789 129 firefox:19 builtin -> [ + 0 156789 17 firefox:- builtin <- [ + 0 156789 33 firefox:20 func -> moz_spc_verbose_echo + 0 156789 14 firefox:15 builtin -> : + 0 156789 7 firefox:- builtin <- : + 0 156789 9 firefox:- func <- moz_spc_verbose_echo + 0 156789 21 firefox:23 builtin -> [ + 0 156789 8 firefox:- builtin <- [ + 0 156789 16 firefox:26 builtin -> [ + 0 156789 8 firefox:- builtin <- [ + 0 156789 24 firefox:29 builtin -> [ + 0 156789 43 firefox:- builtin <- [ + 0 156789 77 firefox:36 func -> moz_spc_verbose_echo + 0 156789 9 firefox:15 builtin -> : + 0 156789 8 firefox:- builtin <- : + 0 156789 8 firefox:- func <- moz_spc_verbose_echo + 0 156789 158947 firefox:- subsh -> pid 156804 + 0 156789 22 firefox:- subsh <- = 0 + 0 156789 210112 firefox:- subsh -> pid 156805 + 0 156789 22 firefox:- subsh <- = 0 + 0 156805 205500 firefox:- subsh -> pid 156806 + 0 156805 10 firefox:- subsh <- = 0 + 0 156805 200987 firefox:- subsh -> pid 156807 + 0 156805 20 firefox:- subsh <- = 0 + 0 156789 363564 firefox:40 func -> moz_spc_verbose_echo + 0 156789 26 firefox:15 builtin -> : + 0 156789 17 firefox:- builtin <- : + 0 156789 15 firefox:- func <- moz_spc_verbose_echo + 0 156809 234 firefox:1 builtin -> [ + 0 156809 70 firefox:- builtin <- [ + 0 156789 46950 firefox:- subsh -> pid 156808 + 0 156789 22 firefox:- subsh <- = 0 + 0 156808 42371 firefox:- subsh -> pid 156809 + 0 156808 10 firefox:- subsh <- = 0 + 0 156789 27278 firefox:43 builtin -> [ + 0 156789 26 firefox:- builtin <- [ + 0 156789 62 firefox:44 func -> moz_spc_verbose_echo + 0 156789 15 firefox:15 builtin -> : + 0 156789 8 firefox:- builtin <- : + 0 156789 10 firefox:- func <- moz_spc_verbose_echo + 0 156789 30 firefox:67 func -> moz_spc_verbose_echo + 0 156789 9 firefox:15 builtin -> : + 0 156789 8 firefox:- builtin <- : + 0 156789 7 firefox:- func <- moz_spc_verbose_echo + 0 156789 8 firefox:- builtin <- . + 0 156789 28 firefox:67 builtin -> [ + 0 156789 31 firefox:- builtin <- [ + 0 156789 8 firefox:- func <- moz_pis_startstop_scripts + 0 156789 97 firefox:199 builtin -> [ + 0 156789 35 firefox:- builtin <- [ + 0 156789 29 firefox:205 builtin -> [ + 0 156789 9 firefox:- builtin <- [ + 0 156789 72519 firefox:209 cmd -> /usr/lib/firefox/run-mozilla.sh + 0 156810 1 run-mozilla.sh:- subsh -> pid 156811 + 0 156810 15 run-mozilla.sh:- subsh <- = 0 + 0 156810 129474 run-mozilla.sh:- subsh -> pid 156812 + 0 156810 24 run-mozilla.sh:- subsh <- = 0 + 0 156810 743 run-mozilla.sh:258 builtin -> [ + 0 156810 28 run-mozilla.sh:- builtin <- [ + 0 156810 212 run-mozilla.sh:275 builtin -> break + 0 156810 10 run-mozilla.sh:- builtin <- break + 0 156810 31 run-mozilla.sh:283 builtin -> [ + 0 156810 10 run-mozilla.sh:- builtin <- [ + 0 156810 16 run-mozilla.sh:286 builtin -> shift + 0 156810 9 run-mozilla.sh:- builtin <- shift + 0 156810 55 run-mozilla.sh:291 builtin -> [ + 0 156810 9 run-mozilla.sh:- builtin <- [ + 0 156810 36 run-mozilla.sh:317 builtin -> [ + 0 156810 34 run-mozilla.sh:- builtin <- [ + 0 156810 37 run-mozilla.sh:327 builtin -> [ + 0 156810 9 run-mozilla.sh:- builtin <- [ + 0 156810 142 run-mozilla.sh:362 builtin -> [ + 0 156810 9 run-mozilla.sh:- builtin <- [ + 0 156810 26 run-mozilla.sh:366 builtin -> export + 0 156810 9 run-mozilla.sh:- builtin <- export + 0 156810 37 run-mozilla.sh:369 builtin -> [ + 0 156810 9 run-mozilla.sh:- builtin <- [ + 0 156810 18 run-mozilla.sh:371 builtin -> [ + 0 156810 19 run-mozilla.sh:- builtin <- [ + 0 156810 112 run-mozilla.sh:379 builtin -> [ + 0 156810 10 run-mozilla.sh:- builtin <- [ + 0 156810 23 run-mozilla.sh:418 builtin -> export + 0 156810 9 run-mozilla.sh:- builtin <- export + 0 156810 45 run-mozilla.sh:419 builtin -> export + 0 156810 10 run-mozilla.sh:- builtin <- export + 0 156810 27 run-mozilla.sh:421 builtin -> [ + 0 156810 9 run-mozilla.sh:- builtin <- [ + 0 156810 29 run-mozilla.sh:425 func -> moz_run_program + 0 156810 32 run-mozilla.sh:137 builtin -> [ + 0 156810 25 run-mozilla.sh:- builtin <- [ + 0 156810 20 run-mozilla.sh:145 func -> moz_test_binary + 0 156810 17 run-mozilla.sh:97 builtin -> [ + 0 156810 23 run-mozilla.sh:- builtin <- [ + 0 156810 15 run-mozilla.sh:99 builtin -> [ + 0 156810 26 run-mozilla.sh:- builtin <- [ + 0 156810 13 run-mozilla.sh:101 builtin -> return + 0 156810 9 run-mozilla.sh:- builtin <- return + 0 156810 11 run-mozilla.sh:- func <- moz_test_binary + 0 156810 18 run-mozilla.sh:146 builtin -> [ + 0 156810 9 run-mozilla.sh:- builtin <- [ + 0 156814 185 run-mozilla.sh:1 builtin -> type + 0 156814 118188 run-mozilla.sh:- builtin <- type + 0 156810 167284 run-mozilla.sh:- subsh -> pid 156813 + 0 156810 23 run-mozilla.sh:- subsh <- = 0 + 0 156813 162135 run-mozilla.sh:- subsh -> pid 156814 + 0 156813 12 run-mozilla.sh:- subsh <- = 0 + 0 156813 200125 run-mozilla.sh:- subsh -> pid 156815 + 0 156813 22 run-mozilla.sh:- subsh <- = 0 + 0 156810 203465 run-mozilla.sh:152 builtin -> [ + 0 156810 51 run-mozilla.sh:- builtin <- [ + 0 156810 21 run-mozilla.sh:156 builtin -> [ + 0 156810 9 run-mozilla.sh:- builtin <- [ + 0 156810 15 run-mozilla.sh:159 builtin -> [ + 0 156810 14 run-mozilla.sh:- builtin <- [ + 0 156810 65752 run-mozilla.sh:- subsh -> pid 156816 + 0 156810 24 run-mozilla.sh:- subsh <- = 0 + 0 156816 251788 run-mozilla.sh:- subsh -> pid 156817 + 0 156816 22 run-mozilla.sh:- subsh <- = 0 + 0 156810 299677 run-mozilla.sh:167 cmd -> /usr/lib/firefox/firefox-bin + 0 156810 5124906 run-mozilla.sh:- cmd <- /usr/lib/firefox/firefox-bin + 0 156789 5993798 firefox:- cmd <- /usr/lib/firefox/run-mozilla.sh + +Now latencies can investigated by line number. + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_flowtime_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_flowtime_example.txt new file mode 100644 index 000000000000..03848de62d8e --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_flowtime_example.txt @@ -0,0 +1,131 @@ +The following are examples of sh_flowtime.d. + +This is a simple script to trace the flow of Bourne shell functions, +builtins and external commands. Here it traces the example program, +Code/Shell/func_abc.sh. + + # sh_flowtime.d + C TIME(us) FILE DELTA(us) -- NAME + 0 3060817866026 func_abc.sh 2 -> func_a + 0 3060817866086 func_abc.sh 60 > echo + 0 3060818871601 func_abc.sh 1005514 | sleep + 0 3060818871639 func_abc.sh 38 -> func_b + 0 3060818871684 func_abc.sh 44 > echo + 0 3060819881597 func_abc.sh 1009912 | sleep + 0 3060819881657 func_abc.sh 60 -> func_c + 0 3060819881717 func_abc.sh 60 > echo + 0 3060820891613 func_abc.sh 1009896 | sleep + 0 3060820891661 func_abc.sh 47 <- func_c + 0 3060820891675 func_abc.sh 14 <- func_b + 0 3060820891683 func_abc.sh 7 <- func_a + ^C + +As each function is entered, the third column is indented by 2 spaces. This +shows which function is calling who - the output above begins by showing that +func_a() began, and then called func_b(). + +The DELTA(us) column is interpreted as follows, + + -> previous line to the start of this function + <- previous line to the end of this function + > previous line to the end of this builtin + | previous line to the end of this command + +And so the above output shows that each sleep command is taking around 1.0 +seconds to execute. + +If the output looks shuffled, check the CPU "C" and "TIME" columns, and +post sort based on TIME if necessary. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + + + +The following traces the firefox start script. + +# sh_flowtime.d + C TIME(us) FILE DELTA(us) -- NAME + 0 3060994282580 firefox 2 > test + 0 3060994286921 firefox 4341 > [ + 0 3060994286955 firefox 34 > cd + 0 3060994287014 firefox 58 > [ + 0 3060994287059 firefox 45 > [ + 0 3060994287227 firefox 167 > [ + 0 3060994293793 firefox 2 > echo + 0 3060994305759 firefox 2 > echo + 0 3060994309613 firefox 22385 > [ + 0 3060994309665 firefox 52 > export + 0 3060994309691 firefox 25 -> moz_pis_startstop_scripts + 0 3060994309752 firefox 61 > export + 0 3060994310199 firefox 447 > [ + 0 3060994314462 firefox 4262 -> moz_spc_verbose_echo + 0 3060994314484 firefox 22 > : + 0 3060994314497 firefox 12 <- moz_spc_verbose_echo + 0 3060994322101 firefox 7604 > [ + 0 3060994322134 firefox 33 -> moz_spc_verbose_echo + 0 3060994322147 firefox 12 > : + 0 3060994322155 firefox 7 <- moz_spc_verbose_echo + 0 3060994322501 firefox 345 > [ + 0 3060994322518 firefox 17 > [ + 0 3060994322578 firefox 59 > [ + 0 3060994322641 firefox 62 -> moz_spc_verbose_echo + 0 3060994322650 firefox 9 > : + 0 3060994322656 firefox 6 <- moz_spc_verbose_echo + 0 3060994653794 firefox 331137 -> moz_spc_verbose_echo + 0 3060994653826 firefox 32 > : + 0 3060994653839 firefox 12 <- moz_spc_verbose_echo + 0 3060994659534 firefox 2 > [ + 0 3060994667539 firefox 13699 > [ + 0 3060994667604 firefox 65 -> moz_spc_verbose_echo + 0 3060994667617 firefox 13 > : + 0 3060994667625 firefox 8 <- moz_spc_verbose_echo + 0 3060994667653 firefox 27 -> moz_spc_verbose_echo + 0 3060994667661 firefox 7 > : + 0 3060994667668 firefox 6 <- moz_spc_verbose_echo + 0 3060994667675 firefox 7 > . + 0 3060994667725 firefox 49 > [ + 0 3060994667732 firefox 6 <- moz_pis_startstop_scripts + 0 3060994667853 firefox 121 > [ + 0 3060994667881 firefox 27 > [ + 0 3060994804329 run-mozilla.sh 2 > [ + 0 3060994804524 run-mozilla.sh 194 > break + 0 3060994804560 run-mozilla.sh 36 > [ + 0 3060994804580 run-mozilla.sh 20 > shift + 0 3060994804649 run-mozilla.sh 68 > [ + 0 3060994804710 run-mozilla.sh 61 > [ + 0 3060994804747 run-mozilla.sh 36 > [ + 0 3060994804889 run-mozilla.sh 142 > [ + 0 3060994804915 run-mozilla.sh 26 > export + 0 3060994804952 run-mozilla.sh 36 > [ + 0 3060994804981 run-mozilla.sh 28 > [ + 0 3060994805093 run-mozilla.sh 112 > [ + 0 3060994805116 run-mozilla.sh 22 > export + 0 3060994805160 run-mozilla.sh 44 > export + 0 3060994805187 run-mozilla.sh 27 > [ + 0 3060994805215 run-mozilla.sh 27 -> moz_run_program + 0 3060994805263 run-mozilla.sh 48 > [ + 0 3060994805283 run-mozilla.sh 19 -> moz_test_binary + 0 3060994805314 run-mozilla.sh 31 > [ + 0 3060994805346 run-mozilla.sh 31 > [ + 0 3060994805358 run-mozilla.sh 12 > return + 0 3060994805367 run-mozilla.sh 9 <- moz_test_binary + 0 3060994805385 run-mozilla.sh 17 > [ + 0 3060994964498 run-mozilla.sh 2 > type + 0 3060995520942 run-mozilla.sh 715556 > [ + 0 3060995520967 run-mozilla.sh 24 > [ + 0 3060995520987 run-mozilla.sh 20 > [ + 0 3061000622172 run-mozilla.sh 5101184 | /usr/lib/firefox/firefox-bin + 0 3061000622221 run-mozilla.sh 49 > [ + 0 3061000622252 run-mozilla.sh 30 > [ + 0 3061000622266 run-mozilla.sh 14 > [ + 0 3061000622275 run-mozilla.sh 9 <- moz_run_program + 0 3061000623686 firefox 5955805 | /usr/lib/firefox/run-mozilla.sh + 0 3061000623793 firefox 106 -> moz_pis_startstop_scripts + 0 3061000623864 firefox 71 > export + 0 3061000624108 firefox 244 > [ + 0 3061000624138 firefox 30 > [ + 0 3061000624147 firefox 8 <- moz_pis_startstop_scripts + +Points of latency during startup are visible in the output. For more details, +see Examples/sh_flowinfo_example.txt. + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_lines_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_lines_example.txt new file mode 100644 index 000000000000..f19487cc624b --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_lines_example.txt @@ -0,0 +1,32 @@ +The following are examples of sh_lines.d. + +This is a simple script to count Bourne shell line execution. Here it traces an +example program, Code/Shell/func_slow.sh. + + # sh_lines.d + Tracing... Hit Ctrl-C to end. + ^C + + FILE:LINE COUNT + func_slow.sh:5 1 + func_slow.sh:6 1 + func_slow.sh:15 1 + func_slow.sh:16 1 + func_slow.sh:21 1 + func_slow.sh:26 1 + func_slow.sh:27 1 + func_slow.sh:32 1 + func_slow.sh:35 1 + func_slow.sh:30 100 + func_slow.sh:28 101 + func_slow.sh:19 200 + func_slow.sh:17 201 + func_slow.sh:9 300 + func_slow.sh:7 301 + func_slow.sh:1 600 + +The most frequently executed line was line 1 of func_slow.sh - which is actually +line 1 of func_slow.sh subshells (command substitution, ` `). Apart from +this slight confusion, the rest of the output should make sense (and most +scripts only call one line in command substitution anyway). + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_pidcolors_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_pidcolors_example.txt new file mode 100644 index 000000000000..a6025e49078f --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_pidcolors_example.txt @@ -0,0 +1,574 @@ +The following are examples of sh_pidcolors.d. + +This is the same script as in sh_syscolors.d, except with additional tracing. +As well as the functions, lines and system calls traced in sh_syscolors.d, +this also adds some "pid" provider tracing as a starting point for deeper +analysis. In this case it adds the probes: + + pid$target:a.out:e*:entry, + pid$target:a.out:e*:return + +which means, all functions from the /usr/bin/sh binary that begin with +the letter "e". This adds about 34 probes, but you can customize it to be as +inclusive as you like. It renders the output in color ("colour") using terminal +escape sequences (which you can tweak by modifying the script). + +Here it traces the example program, Code/Shell/func_abc.sh. + +WARNING: This output is full of terminal escape sequences, so if you are +trying to view this through an editor or web browser - it may look awful. +Try viewing this using "more" (although, depending on your terminal, it +still may look awful). + +# sh_pidcolors.d -c ./func_abc.sh -o /tmp/out +Function A +Function B +Function C + +# cat /tmp/out +C PID DELTA(us) FILE:LINE TYPE -- NAME +[2;32m0 12312 2 func_abc.sh:- syscall -> munmap[0m +[2;32m0 12312 34 func_abc.sh:- syscall <- munmap[0m +[2;32m0 12312 53 func_abc.sh:- syscall -> mmap[0m +[2;32m0 12312 19 func_abc.sh:- syscall <- mmap[0m +[2;32m0 12312 43 func_abc.sh:- syscall -> setcontext[0m +[2;32m0 12312 11 func_abc.sh:- syscall <- setcontext[0m +[2;32m0 12312 11 func_abc.sh:- syscall -> getrlimit[0m +[2;32m0 12312 11 func_abc.sh:- syscall <- getrlimit[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> getpid[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- getpid[0m +[2;32m0 12312 63 func_abc.sh:- syscall -> setcontext[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- setcontext[0m +[2;32m0 12312 813 func_abc.sh:- syscall -> sysi86[0m +[2;32m0 12312 13 func_abc.sh:- syscall <- sysi86[0m +[2;32m0 12312 85 func_abc.sh:- syscall -> open64[0m +[2;32m0 12312 88 func_abc.sh:- syscall <- open64[0m +[2;32m0 12312 13 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 35 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 15 func_abc.sh:- syscall -> close[0m +[2;32m0 12312 17 func_abc.sh:- syscall <- close[0m +[2;32m0 12312 123 func_abc.sh:- syscall -> getpid[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- getpid[0m +[2;32m0 12312 17 func_abc.sh:- syscall -> setpgrp[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- setpgrp[0m +[2;32m0 12312 11 func_abc.sh:- syscall -> setpgrp[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- setpgrp[0m +[2;32m0 12312 11 func_abc.sh:- syscall -> access[0m +[2;32m0 12312 19 func_abc.sh:- syscall <- access[0m +[2;32m0 12312 14 func_abc.sh:- syscall -> brk[0m +[2;32m0 12312 11 func_abc.sh:- syscall <- brk[0m +[2;32m0 12312 15 func_abc.sh:- syscall -> sysconfig[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sysconfig[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sysconfig[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sysconfig[0m +[2;32m0 12312 11 func_abc.sh:- syscall -> sigaltstack[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaltstack[0m +[2;32m0 12312 16 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 12 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- sigaction[0m +[2;34m0 12312 18 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 18 func_abc.sh:- sh <- endstak[0m +[2;32m0 12312 60 func_abc.sh:- syscall -> brk[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- brk[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;32m0 12312 13 func_abc.sh:- syscall -> getuid[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- getuid[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> getuid[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- getuid[0m +[2;32m0 12312 11 func_abc.sh:- syscall -> getgid[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- getgid[0m +[2;32m0 12312 11 func_abc.sh:- syscall -> getgid[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- getgid[0m +[2;32m0 12312 16 func_abc.sh:- syscall -> open64[0m +[2;32m0 12312 20 func_abc.sh:- syscall <- open64[0m +[2;34m0 12312 11 func_abc.sh:- sh -> exfile[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> close[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- close[0m +[2;32m0 12312 24 func_abc.sh:- syscall -> fcntl[0m +[2;32m0 12312 23 func_abc.sh:- syscall <- fcntl[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> close[0m +[2;32m0 12312 10 func_abc.sh:- syscall <- close[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> fcntl[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- fcntl[0m +[2;32m0 12312 28 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 42 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 14 func_abc.sh:- syscall -> read[0m +[2;32m0 12312 33 func_abc.sh:- syscall <- read[0m +[2;32m0 12312 11 func_abc.sh:- syscall -> brk[0m +[2;32m0 12312 20 func_abc.sh:- syscall <- brk[0m +[2;34m0 12312 13 func_abc.sh:- sh -> execute[0m +[2;34m0 12312 11 func_abc.sh:- sh <- execute[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> brk[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- brk[0m +[2;34m0 12312 10 func_abc.sh:- sh -> execute[0m +[2;34m0 12312 9 func_abc.sh:- sh <- execute[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 29 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> execute[0m +[2;34m0 12312 10 func_abc.sh:- sh <- execute[0m +[2;34m0 12312 9 func_abc.sh:- sh -> execute[0m +[2;34m0 12312 9 func_abc.sh:- sh <- execute[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> brk[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- brk[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> execute[0m +[2;34m0 12312 10 func_abc.sh:- sh <- execute[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> brk[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- brk[0m +[2;34m0 12312 10 func_abc.sh:- sh -> execute[0m +[2;34m0 12312 9 func_abc.sh:- sh <- execute[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> read[0m +[2;32m0 12312 16 func_abc.sh:- syscall <- read[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 25 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> execute[0m +[2;34m0 12312 10 func_abc.sh:- sh <- execute[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> brk[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- brk[0m +[2;34m0 12312 10 func_abc.sh:- sh -> execute[0m +[2;34m0 12312 9 func_abc.sh:- sh <- execute[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> brk[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- brk[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> execute[0m +[1;35m0 12312 9 func_abc.sh:23 line -- [0m +[2;34m0 12312 14 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 10 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 18 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 12 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 10 func_abc.sh:- sh <- expand[0m +[2;35m0 12312 14 func_abc.sh:23 func -> func_a[0m +[2;34m0 12312 14 func_abc.sh:- sh -> execute[0m +[2;34m0 12312 9 func_abc.sh:- sh -> execute[0m +[1;35m0 12312 8 func_abc.sh:18 line -- [0m +[2;34m0 12312 8 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 8 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 9 func_abc.sh:- sh <- expand[0m +[2;34m0 12312 9 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 8 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 9 func_abc.sh:- sh <- expand[0m +[2;35m0 12312 13 func_abc.sh:18 builtin -> echo[0m +[2;34m0 12312 15 func_abc.sh:- sh -> echo[0m +[2;32m0 12312 14 func_abc.sh:- syscall -> write[0m +[2;32m0 12312 35 func_abc.sh:- syscall <- write[0m +[2;34m0 12312 321 func_abc.sh:- sh <- echo[0m +[2;35m0 12312 13 func_abc.sh:0 builtin <- echo[0m +[2;34m0 12312 17 func_abc.sh:- sh <- execute[0m +[2;34m0 12312 9 func_abc.sh:- sh -> execute[0m +[2;34m0 12312 9 func_abc.sh:- sh -> execute[0m +[1;35m0 12312 8 func_abc.sh:19 line -- [0m +[2;34m0 12312 8 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 9 func_abc.sh:- sh <- expand[0m +[2;34m0 12312 9 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 9 func_abc.sh:- sh <- expand[0m +[2;34m0 12312 11 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> getuid[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- getuid[0m +[2;32m0 12312 15 func_abc.sh:- syscall -> stat64[0m +[2;32m0 12312 27 func_abc.sh:- syscall <- stat64[0m +[2;32m0 12312 11 func_abc.sh:- syscall -> access[0m +[2;32m0 12312 15 func_abc.sh:- syscall <- access[0m +[2;32m0 12312 18 func_abc.sh:- syscall -> schedctl[0m +[2;32m0 12312 47 func_abc.sh:- syscall <- schedctl[0m +[2;32m0 12312 219 func_abc.sh:- syscall -> fork1[0m +[2;32m0 12312 234375 func_abc.sh:- syscall <- fork1[0m +[2;32m0 12312 277 func_abc.sh:- syscall -> lwp_sigmask[0m +[2;32m0 12312 13 func_abc.sh:- syscall <- lwp_sigmask[0m +[2;35m0 12312 33 func_abc.sh:19 cmd -> sleep[0m +[2;32m0 12312 59 func_abc.sh:- syscall -> waitsys[0m +[2;32m0 12312 870257 func_abc.sh:- syscall <- waitsys[0m +[2;32m0 12312 36 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 16 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 13 func_abc.sh:- syscall -> setpgrp[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- setpgrp[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 11 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 33 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 12 func_abc.sh:- syscall -> waitsys[0m +[2;32m0 12312 25 func_abc.sh:- syscall <- waitsys[0m +[2;35m0 12312 15 func_abc.sh:0 cmd <- sleep[0m +[2;34m0 12312 20 func_abc.sh:- sh <- execute[0m +[2;34m0 12312 15 func_abc.sh:- sh -> execute[0m +[1;35m0 12312 14 func_abc.sh:20 line -- [0m +[2;34m0 12312 13 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 10 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 11 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 12 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 11 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 10 func_abc.sh:- sh <- expand[0m +[2;35m0 12312 17 func_abc.sh:20 func -> func_b[0m +[2;34m0 12312 14 func_abc.sh:- sh -> execute[0m +[2;34m0 12312 9 func_abc.sh:- sh -> execute[0m +[1;35m0 12312 8 func_abc.sh:11 line -- [0m +[2;34m0 12312 8 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 9 func_abc.sh:- sh <- expand[0m +[2;34m0 12312 9 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 9 func_abc.sh:- sh <- expand[0m +[2;35m0 12312 13 func_abc.sh:11 builtin -> echo[0m +[2;34m0 12312 15 func_abc.sh:- sh -> echo[0m +[2;32m0 12312 12 func_abc.sh:- syscall -> write[0m +[2;32m0 12312 32 func_abc.sh:- syscall <- write[0m +[2;34m0 12312 320 func_abc.sh:- sh <- echo[0m +[2;35m0 12312 12 func_abc.sh:0 builtin <- echo[0m +[2;34m0 12312 16 func_abc.sh:- sh <- execute[0m +[2;34m0 12312 9 func_abc.sh:- sh -> execute[0m +[2;34m0 12312 9 func_abc.sh:- sh -> execute[0m +[1;35m0 12312 8 func_abc.sh:12 line -- [0m +[2;34m0 12312 8 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 9 func_abc.sh:- sh <- expand[0m +[2;34m0 12312 9 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 9 func_abc.sh:- sh <- expand[0m +[2;32m0 12312 225 func_abc.sh:- syscall -> fork1[0m +[2;32m0 12312 60940 func_abc.sh:- syscall <- fork1[0m +[2;32m0 12312 243 func_abc.sh:- syscall -> lwp_sigmask[0m +[2;32m0 12312 15 func_abc.sh:- syscall <- lwp_sigmask[0m +[2;35m0 12312 31 func_abc.sh:12 cmd -> sleep[0m +[2;32m0 12312 31 func_abc.sh:- syscall -> waitsys[0m +[2;32m0 12312 1007422 func_abc.sh:- syscall <- waitsys[0m +[2;32m0 12312 28 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 17 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 11 func_abc.sh:- syscall -> setpgrp[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- setpgrp[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 38 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 12 func_abc.sh:- syscall -> waitsys[0m +[2;32m0 12312 26 func_abc.sh:- syscall <- waitsys[0m +[2;35m0 12312 15 func_abc.sh:0 cmd <- sleep[0m +[2;34m0 12312 32 func_abc.sh:- sh <- execute[0m +[2;34m0 12312 15 func_abc.sh:- sh -> execute[0m +[1;35m0 12312 14 func_abc.sh:13 line -- [0m +[2;34m0 12312 13 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 10 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 12 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 12 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 10 func_abc.sh:- sh <- expand[0m +[2;35m0 12312 17 func_abc.sh:13 func -> func_c[0m +[2;34m0 12312 13 func_abc.sh:- sh -> execute[0m +[2;34m0 12312 9 func_abc.sh:- sh -> execute[0m +[1;35m0 12312 8 func_abc.sh:5 line -- [0m +[2;34m0 12312 8 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 9 func_abc.sh:- sh <- expand[0m +[2;34m0 12312 9 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 10 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 9 func_abc.sh:- sh <- expand[0m +[2;35m0 12312 13 func_abc.sh:5 builtin -> echo[0m +[2;34m0 12312 15 func_abc.sh:- sh -> echo[0m +[2;32m0 12312 12 func_abc.sh:- syscall -> write[0m +[2;32m0 12312 32 func_abc.sh:- syscall <- write[0m +[2;34m0 12312 309 func_abc.sh:- sh <- echo[0m +[2;35m0 12312 12 func_abc.sh:0 builtin <- echo[0m +[2;34m0 12312 16 func_abc.sh:- sh <- execute[0m +[2;34m0 12312 9 func_abc.sh:- sh -> execute[0m +[1;35m0 12312 9 func_abc.sh:6 line -- [0m +[2;34m0 12312 8 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 22 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 11 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 9 func_abc.sh:- sh <- expand[0m +[2;34m0 12312 9 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 9 func_abc.sh:- sh <- expand[0m +[2;32m0 12312 220 func_abc.sh:- syscall -> fork1[0m +[2;32m0 12312 60982 func_abc.sh:- syscall <- fork1[0m +[2;32m0 12312 239 func_abc.sh:- syscall -> lwp_sigmask[0m +[2;32m0 12312 15 func_abc.sh:- syscall <- lwp_sigmask[0m +[2;35m0 12312 30 func_abc.sh:6 cmd -> sleep[0m +[2;32m0 12312 30 func_abc.sh:- syscall -> waitsys[0m +[2;32m0 12312 1007259 func_abc.sh:- syscall <- waitsys[0m +[2;32m0 12312 29 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 17 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 11 func_abc.sh:- syscall -> setpgrp[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- setpgrp[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 9 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 35 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 12 func_abc.sh:- syscall -> waitsys[0m +[2;32m0 12312 25 func_abc.sh:- syscall <- waitsys[0m +[2;35m0 12312 15 func_abc.sh:0 cmd <- sleep[0m +[2;34m0 12312 31 func_abc.sh:- sh <- execute[0m +[2;34m0 12312 13 func_abc.sh:- sh <- execute[0m +[2;35m0 12312 11 func_abc.sh:- func <- func_c[0m +[2;34m0 12312 14 func_abc.sh:- sh <- execute[0m +[2;34m0 12312 9 func_abc.sh:- sh <- execute[0m +[2;34m0 12312 9 func_abc.sh:- sh <- execute[0m +[2;35m0 12312 9 func_abc.sh:- func <- func_b[0m +[2;34m0 12312 10 func_abc.sh:- sh <- execute[0m +[2;34m0 12312 18 func_abc.sh:- sh <- execute[0m +[2;34m0 12312 9 func_abc.sh:- sh <- execute[0m +[2;35m0 12312 9 func_abc.sh:- func <- func_a[0m +[2;34m0 12312 9 func_abc.sh:- sh <- execute[0m +[2;32m0 12312 12 func_abc.sh:- syscall -> brk[0m +[2;32m0 12312 11 func_abc.sh:- syscall <- brk[0m +[2;32m0 12312 12 func_abc.sh:- syscall -> read[0m +[2;32m0 12312 16 func_abc.sh:- syscall <- read[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 9 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 10 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 8 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 11 func_abc.sh:- syscall -> close[0m +[2;32m0 12312 13 func_abc.sh:- syscall <- close[0m +[2;34m0 12312 12 func_abc.sh:- sh -> endjobs[0m +[2;34m0 12312 14 func_abc.sh:- sh <- endjobs[0m +[2;34m0 12312 10 func_abc.sh:- sh <- exfile[0m +[2;34m0 12312 11 func_abc.sh:- sh -> endjobs[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endjobs[0m +[2;32m0 12312 37 func_abc.sh:- syscall -> open64[0m +[2;32m0 12312 103 func_abc.sh:- syscall <- open64[0m +[2;32m0 12312 11 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12312 11 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12312 11 func_abc.sh:- syscall -> close[0m +[2;32m0 12312 15 func_abc.sh:- syscall <- close[0m +[2;32m0 12312 32 func_abc.sh:- syscall -> rexit[0m + +Here you can see the output showing the path the script follows as it is +executed. + +At the end of the sh_syscolor_example.txt file, you can see the steps that the +script goes through when it runs func_a. The output contains the two +consecutive lines: + +[1;35m0 12979 14 func_abc.sh:23 line -- [0m +[2;35m0 12979 32 func_abc.sh:23 func -> func_a[0m + +Here we trace many more events that happen in between these two lines, as seen +below: + +[1;35m0 12312 9 func_abc.sh:23 line -- [0m +[2;34m0 12312 14 func_abc.sh:- sh -> estabf[0m +[2;34m0 12312 10 func_abc.sh:- sh <- estabf[0m +[2;34m0 12312 10 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 18 func_abc.sh:- sh -> endstak[0m +[2;34m0 12312 9 func_abc.sh:- sh <- endstak[0m +[2;34m0 12312 12 func_abc.sh:- sh -> expand[0m +[2;34m0 12312 10 func_abc.sh:- sh <- expand[0m +[2;35m0 12312 14 func_abc.sh:23 func -> func_a[0m +[2;34m0 12312 14 func_abc.sh:- sh -> execute[0m +[2;34m0 12312 9 func_abc.sh:- sh -> execute[0m + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_stat_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_stat_example.txt new file mode 100644 index 000000000000..a44a5638f66a --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_stat_example.txt @@ -0,0 +1,44 @@ +Following are examples of running sh_stat.d on Shell scripts. + +sh_stat.d shows you the number of events per second that have happened since +the last line output. The default interval is 1 second, but you can specify +other intervals as arguments to the script. + +This shows the sh_stat.d script reflecting the Code/Shell/func_slow.sh script. + + # sh_stat.d + TIME EXEC/s FUNCS/s BLTINS/s SUB-SH/s CMD/s + 2007 Sep 17 03:29:02 1 1 50 96 0 + 2007 Sep 17 03:29:03 0 1 151 300 0 + 2007 Sep 17 03:29:04 0 1 142 280 0 + 2007 Sep 17 03:29:05 0 0 132 262 0 + 2007 Sep 17 03:29:06 0 0 122 245 0 + 2007 Sep 17 03:29:07 0 0 9 17 0 + 2007 Sep 17 03:29:08 0 0 0 0 0 + 2007 Sep 17 03:29:09 0 0 0 0 0 + ^C + +We can see that at 2007 Sep 17 03:29:04 there were 0 Bourne shells executed, +one function called, 142 built-in commands called, 280 sub-shells created and +0 external commands called. + + +Here the script runs when Mozilla Firefox is started. + + # sh_stat.d + TIME EXEC/s FUNCS/s BLTINS/s SUB-SH/s CMD/s + 2007 Sep 17 03:29:52 1 9 52 38 2 + 2007 Sep 17 03:29:53 0 0 0 0 0 + 2007 Sep 17 03:29:54 0 0 0 0 0 + 2007 Sep 17 03:29:55 0 0 0 0 0 + 2007 Sep 17 03:29:56 0 0 0 0 0 + 2007 Sep 17 03:29:57 0 0 0 0 0 + 2007 Sep 17 03:29:58 0 0 0 0 0 + 2007 Sep 17 03:29:59 0 0 0 0 0 + 2007 Sep 17 03:30:00 0 0 0 0 0 + 2007 Sep 17 03:30:01 1 1 8 0 0 + 2007 Sep 17 03:30:02 0 0 0 0 0 + 2007 Sep 17 03:30:03 0 0 0 0 0 + 2007 Sep 17 03:30:04 0 0 0 0 0 + ^C + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_syscalls_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_syscalls_example.txt new file mode 100644 index 000000000000..fbda09525d30 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_syscalls_example.txt @@ -0,0 +1,59 @@ +The following are examples of sh_syscalls.d. + +This is a simple script to count Shell functions, built-ins, external command +executions and system calls. Here we trace an example program - +Code/Shell/func_abc.sh. + +# sh_syscalls.d -c ./func_abc.sh -o /tmp/out +Function A +Function B +Function C + +# cat /tmp/out +Tracing... Hit Ctrl-C to end. + +Calls for PID 12966, + + FILE TYPE NAME COUNT + func_abc.sh func func_a 1 + func_abc.sh func func_b 1 + func_abc.sh func func_c 1 + func_abc.sh syscall getrlimit 1 + func_abc.sh syscall mmap 1 + func_abc.sh syscall munmap 1 + func_abc.sh syscall rexit 1 + func_abc.sh syscall schedctl 1 + func_abc.sh syscall sigaltstack 1 + func_abc.sh syscall stat64 1 + func_abc.sh syscall sysi86 1 + func_abc.sh syscall access 2 + func_abc.sh syscall fcntl 2 + func_abc.sh syscall getgid 2 + func_abc.sh syscall getpid 2 + func_abc.sh syscall setcontext 2 + func_abc.sh syscall sysconfig 2 + func_abc.sh builtin echo 3 + func_abc.sh cmd sleep 3 + func_abc.sh syscall fork1 3 + func_abc.sh syscall getuid 3 + func_abc.sh syscall lwp_sigmask 3 + func_abc.sh syscall open64 3 + func_abc.sh syscall read 3 + func_abc.sh syscall write 3 + func_abc.sh syscall close 5 + func_abc.sh syscall setpgrp 5 + func_abc.sh syscall waitsys 6 + func_abc.sh syscall brk 9 + func_abc.sh syscall ioctl 15 + func_abc.sh syscall sigaction 53 + +While tracing, three functions were called - func_a(), func_b() and +func_c(). There were 3 instances of the shell built-in 'echo' being called, +and 3 executions of the sleep command (which is probably /usr/bin/sleep - use +the syscall provider to confirm). There were numerous system calls made, +including 9 brk()'s, 15 ioctl()'s and 53 sigaction()'s. + +This script can provide an insight to how a script is interacting +with the system, by providing function calls, commands, built-ins and system +calls in the same output. + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_syscolors_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_syscolors_example.txt new file mode 100644 index 000000000000..ccc722a825ba --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_syscolors_example.txt @@ -0,0 +1,328 @@ +The following are examples of sh_syscolors.d. + +This is a simple script to trace the flow of Shell functions, lines, and +system calls made. It renders the output in color ("colour") using terminal +escape sequences (which you can tweak by modifying the script). + +Here it traces the example program, Code/Shell/func_abc.sh. + +WARNING: This output is full of terminal escape sequences, so if you are +trying to view this through an editor or web browser - it may look awful. +Try viewing this using "more" (although, depending on your terminal, it +still may look awful). + +# sh_syscolors.d -c ./func_abc.sh -o /tmp/out +Function A +Function B +Function C + +# cat /tmp/out +C PID DELTA(us) FILE:LINE TYPE -- NAME +[2;32m0 12979 2 func_abc.sh:- syscall -> munmap[0m +[2;32m0 12979 35 func_abc.sh:- syscall <- munmap[0m +[2;32m0 12979 56 func_abc.sh:- syscall -> mmap[0m +[2;32m0 12979 18 func_abc.sh:- syscall <- mmap[0m +[2;32m0 12979 40 func_abc.sh:- syscall -> setcontext[0m +[2;32m0 12979 11 func_abc.sh:- syscall <- setcontext[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> getrlimit[0m +[2;32m0 12979 11 func_abc.sh:- syscall <- getrlimit[0m +[2;32m0 12979 10 func_abc.sh:- syscall -> getpid[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- getpid[0m +[2;32m0 12979 61 func_abc.sh:- syscall -> setcontext[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- setcontext[0m +[2;32m0 12979 865 func_abc.sh:- syscall -> sysi86[0m +[2;32m0 12979 14 func_abc.sh:- syscall <- sysi86[0m +[2;32m0 12979 84 func_abc.sh:- syscall -> open64[0m +[2;32m0 12979 89 func_abc.sh:- syscall <- open64[0m +[2;32m0 12979 14 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 35 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 15 func_abc.sh:- syscall -> close[0m +[2;32m0 12979 16 func_abc.sh:- syscall <- close[0m +[2;32m0 12979 119 func_abc.sh:- syscall -> getpid[0m +[2;32m0 12979 10 func_abc.sh:- syscall <- getpid[0m +[2;32m0 12979 17 func_abc.sh:- syscall -> setpgrp[0m +[2;32m0 12979 10 func_abc.sh:- syscall <- setpgrp[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> setpgrp[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- setpgrp[0m +[2;32m0 12979 12 func_abc.sh:- syscall -> access[0m +[2;32m0 12979 20 func_abc.sh:- syscall <- access[0m +[2;32m0 12979 15 func_abc.sh:- syscall -> brk[0m +[2;32m0 12979 11 func_abc.sh:- syscall <- brk[0m +[2;32m0 12979 15 func_abc.sh:- syscall -> sysconfig[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sysconfig[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sysconfig[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sysconfig[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> sigaltstack[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaltstack[0m +[2;32m0 12979 16 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 10 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 12 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 10 func_abc.sh:- syscall -> sigaction[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- sigaction[0m +[2;32m0 12979 61 func_abc.sh:- syscall -> brk[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- brk[0m +[2;32m0 12979 13 func_abc.sh:- syscall -> getuid[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- getuid[0m +[2;32m0 12979 10 func_abc.sh:- syscall -> getuid[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- getuid[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> getgid[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- getgid[0m +[2;32m0 12979 10 func_abc.sh:- syscall -> getgid[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- getgid[0m +[2;32m0 12979 15 func_abc.sh:- syscall -> open64[0m +[2;32m0 12979 19 func_abc.sh:- syscall <- open64[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> close[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- close[0m +[2;32m0 12979 24 func_abc.sh:- syscall -> fcntl[0m +[2;32m0 12979 23 func_abc.sh:- syscall <- fcntl[0m +[2;32m0 12979 10 func_abc.sh:- syscall -> close[0m +[2;32m0 12979 10 func_abc.sh:- syscall <- close[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> fcntl[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- fcntl[0m +[2;32m0 12979 28 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 42 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 10 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 14 func_abc.sh:- syscall -> read[0m +[2;32m0 12979 33 func_abc.sh:- syscall <- read[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> brk[0m +[2;32m0 12979 21 func_abc.sh:- syscall <- brk[0m +[2;32m0 12979 12 func_abc.sh:- syscall -> brk[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- brk[0m +[2;32m0 12979 19 func_abc.sh:- syscall -> brk[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- brk[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> brk[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- brk[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> read[0m +[2;32m0 12979 15 func_abc.sh:- syscall <- read[0m +[2;32m0 12979 28 func_abc.sh:- syscall -> brk[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- brk[0m +[2;32m0 12979 10 func_abc.sh:- syscall -> brk[0m +[2;32m0 12979 8 func_abc.sh:- syscall <- brk[0m +[1;35m0 12979 14 func_abc.sh:23 line -- [0m +[2;35m0 12979 32 func_abc.sh:23 func -> func_a[0m +[1;35m0 12979 16 func_abc.sh:18 line -- [0m +[2;35m0 12979 18 func_abc.sh:18 builtin -> echo[0m +[2;32m0 12979 21 func_abc.sh:- syscall -> write[0m +[2;32m0 12979 33 func_abc.sh:- syscall <- write[0m +[2;35m0 12979 311 func_abc.sh:0 builtin <- echo[0m +[1;35m0 12979 65 func_abc.sh:19 line -- [0m +[2;32m0 12979 17 func_abc.sh:- syscall -> getuid[0m +[2;32m0 12979 10 func_abc.sh:- syscall <- getuid[0m +[2;32m0 12979 15 func_abc.sh:- syscall -> stat64[0m +[2;32m0 12979 25 func_abc.sh:- syscall <- stat64[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> access[0m +[2;32m0 12979 15 func_abc.sh:- syscall <- access[0m +[2;32m0 12979 18 func_abc.sh:- syscall -> schedctl[0m +[2;32m0 12979 46 func_abc.sh:- syscall <- schedctl[0m +[2;32m0 12979 220 func_abc.sh:- syscall -> fork1[0m +[2;32m0 12979 258957 func_abc.sh:- syscall <- fork1[0m +[2;32m0 12979 244 func_abc.sh:- syscall -> lwp_sigmask[0m +[2;32m0 12979 16 func_abc.sh:- syscall <- lwp_sigmask[0m +[2;35m0 12979 31 func_abc.sh:19 cmd -> sleep[0m +[2;32m0 12979 53 func_abc.sh:- syscall -> waitsys[0m +[2;32m0 12979 1008036 func_abc.sh:- syscall <- waitsys[0m +[2;32m0 12979 38 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 18 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 12 func_abc.sh:- syscall -> setpgrp[0m +[2;32m0 12979 10 func_abc.sh:- syscall <- setpgrp[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 37 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 12 func_abc.sh:- syscall -> waitsys[0m +[2;32m0 12979 26 func_abc.sh:- syscall <- waitsys[0m +[2;35m0 12979 14 func_abc.sh:0 cmd <- sleep[0m +[1;35m0 12979 21 func_abc.sh:20 line -- [0m +[2;35m0 12979 28 func_abc.sh:20 func -> func_b[0m +[1;35m0 12979 15 func_abc.sh:11 line -- [0m +[2;35m0 12979 17 func_abc.sh:11 builtin -> echo[0m +[2;32m0 12979 19 func_abc.sh:- syscall -> write[0m +[2;32m0 12979 33 func_abc.sh:- syscall <- write[0m +[2;35m0 12979 310 func_abc.sh:0 builtin <- echo[0m +[1;35m0 12979 16 func_abc.sh:12 line -- [0m +[2;32m0 12979 226 func_abc.sh:- syscall -> fork1[0m +[2;32m0 12979 64931 func_abc.sh:- syscall <- fork1[0m +[2;32m0 12979 262 func_abc.sh:- syscall -> lwp_sigmask[0m +[2;32m0 12979 16 func_abc.sh:- syscall <- lwp_sigmask[0m +[2;35m0 12979 31 func_abc.sh:12 cmd -> sleep[0m +[2;32m0 12979 31 func_abc.sh:- syscall -> waitsys[0m +[2;32m0 12979 1003941 func_abc.sh:- syscall <- waitsys[0m +[2;32m0 12979 30 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 19 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> setpgrp[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- setpgrp[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 38 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> waitsys[0m +[2;32m0 12979 26 func_abc.sh:- syscall <- waitsys[0m +[2;35m0 12979 14 func_abc.sh:0 cmd <- sleep[0m +[1;35m0 12979 33 func_abc.sh:13 line -- [0m +[2;35m0 12979 27 func_abc.sh:13 func -> func_c[0m +[1;35m0 12979 15 func_abc.sh:5 line -- [0m +[2;35m0 12979 17 func_abc.sh:5 builtin -> echo[0m +[2;32m0 12979 20 func_abc.sh:- syscall -> write[0m +[2;32m0 12979 33 func_abc.sh:- syscall <- write[0m +[2;35m0 12979 309 func_abc.sh:0 builtin <- echo[0m +[1;35m0 12979 17 func_abc.sh:6 line -- [0m +[2;32m0 12979 267 func_abc.sh:- syscall -> fork1[0m +[2;32m0 12979 64649 func_abc.sh:- syscall <- fork1[0m +[2;32m0 12979 257 func_abc.sh:- syscall -> lwp_sigmask[0m +[2;32m0 12979 16 func_abc.sh:- syscall <- lwp_sigmask[0m +[2;35m0 12979 31 func_abc.sh:6 cmd -> sleep[0m +[2;32m0 12979 31 func_abc.sh:- syscall -> waitsys[0m +[2;32m0 12979 1004183 func_abc.sh:- syscall <- waitsys[0m +[2;32m0 12979 31 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 18 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> setpgrp[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- setpgrp[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 9 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 38 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 12 func_abc.sh:- syscall -> waitsys[0m +[2;32m0 12979 27 func_abc.sh:- syscall <- waitsys[0m +[2;35m0 12979 14 func_abc.sh:0 cmd <- sleep[0m +[2;35m0 12979 32 func_abc.sh:- func <- func_c[0m +[2;35m0 12979 16 func_abc.sh:- func <- func_b[0m +[2;35m0 12979 10 func_abc.sh:- func <- func_a[0m +[2;32m0 12979 13 func_abc.sh:- syscall -> brk[0m +[2;32m0 12979 12 func_abc.sh:- syscall <- brk[0m +[2;32m0 12979 12 func_abc.sh:- syscall -> read[0m +[2;32m0 12979 16 func_abc.sh:- syscall <- read[0m +[2;32m0 12979 10 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 10 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 9 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> close[0m +[2;32m0 12979 13 func_abc.sh:- syscall <- close[0m +[2;32m0 12979 37 func_abc.sh:- syscall -> open64[0m +[2;32m0 12979 105 func_abc.sh:- syscall <- open64[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> ioctl[0m +[2;32m0 12979 11 func_abc.sh:- syscall <- ioctl[0m +[2;32m0 12979 11 func_abc.sh:- syscall -> close[0m +[2;32m0 12979 15 func_abc.sh:- syscall <- close[0m +[2;32m0 12979 31 func_abc.sh:- syscall -> rexit[0m + +Here you can see the output showing the path the script follows as it is +executed. + +ie: +[1;35m0 12979 14 func_abc.sh:23 line -- [0m +[2;35m0 12979 32 func_abc.sh:23 func -> func_a[0m +[1;35m0 12979 16 func_abc.sh:18 line -- [0m +[2;35m0 12979 18 func_abc.sh:18 builtin -> echo[0m +[2;32m0 12979 21 func_abc.sh:- syscall -> write[0m +[2;32m0 12979 33 func_abc.sh:- syscall <- write[0m +[2;35m0 12979 311 func_abc.sh:0 builtin <- echo[0m +[1;35m0 12979 65 func_abc.sh:19 line -- [0m + +shows that on CPU 0 we run func_a (which is line 23 of the example script), +where it uses the shell built-in echo command (on line 18 of the example +script) to write a line of text to the screen. You can see in column 3 (the +delta time) it takes 311 microseconds from when the write syscall finishes to +when the echo built-in completes its clean-up and finishes. + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_wasted_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_wasted_example.txt new file mode 100644 index 000000000000..b11f9523db39 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_wasted_example.txt @@ -0,0 +1,45 @@ +Many shell programmers are in the habit of using calls to external commands +instead of using shell built-in commands (an example of this is a call to +usr/bin/echo instead of using the echo command built into the shell. + +This script shows sh_wasted.d tracing a shell script that calls /usr/bin/echo +instead of using the built-in. + +# sh_wasted.d -c ./func_waste.sh +Tracing... Hit Ctrl-C to end. +Function A +Function B +Function C +Script duration: 3101631 us + +External command elapsed times, + FILE NAME TIME(us) + func_waste.sh sleep 3019573 + +Wasted command elapsed times, + FILE NAME TIME(us) + func_waste.sh /usr/bin/echo 26510 + +You can see that the calls to /usr/bin/echo took around 26 thousand +microseconds; time wasted by the shell having to access an external command. + + +Here we trace the same script, except it uses the shell built-in echo command. + +# sh_wasted.d -c ./func_abc.sh +Function A +Tracing... Hit Ctrl-C to end. +Function B +Function C +Script duration: 3032616 us + +External command elapsed times, + FILE NAME TIME(us) + func_abc.sh sleep 3012920 + +Wasted command elapsed times, + FILE NAME TIME(us) + +The total time here is less and there are no 'wasted' calls to external +commands. + diff --git a/cddl/contrib/dtracetoolkit/Examples/sh_who_example.txt b/cddl/contrib/dtracetoolkit/Examples/sh_who_example.txt new file mode 100644 index 000000000000..b35e8e4531d9 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sh_who_example.txt @@ -0,0 +1,45 @@ +These are examples of the results after running the sh_who.d script. + +This script shows which UIDs and PIDs are running shell scripts, and how +active they are. It measures the number of lines executed according to +the line probe - which is a useful, but rough measure of shell activity. + +Here it runs as a script executes three times. + +# sh_who.d +Tracing... Hit Ctrl-C to end. +^C + PID UID LINES FILE + 13663 0 9 ./func_abc.sh + 13667 0 9 ./func_abc.sh + 13671 0 9 ./func_abc.sh + +We see func_abc.sh ran three seperate times, each with nine lines of shell +activity. + + +Here we trace an instance of starting Mozilla Firefox. + +# sh_who.d +Tracing... Hit Ctrl-C to end. +^C + PID UID LINES FILE + 13678 100 1 firefox + 13679 100 1 firefox + 13680 100 1 firefox + 13681 100 1 firefox + 13683 100 1 firefox + 13685 100 1 firefox + 13686 100 1 firefox + 13687 100 1 firefox + 13690 100 1 firefox + 13693 100 1 /usr/lib/firefox/run-mozilla.sh + 13694 100 1 /usr/lib/firefox/run-mozilla.sh + 13695 100 1 /usr/lib/firefox/run-mozilla.sh + 13692 100 55 /usr/lib/firefox/run-mozilla.sh + 13677 100 75 firefox + +Firefox itself (PID 13677) ran 75 lines of code. There are also instances of +firefox running a single line of code with a different PID each time. These +are probably calls to subshells. Use the sh provider to confirm. + diff --git a/cddl/contrib/dtracetoolkit/Examples/shellsnoop_example.txt b/cddl/contrib/dtracetoolkit/Examples/shellsnoop_example.txt new file mode 100644 index 000000000000..be307f80f63e --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/shellsnoop_example.txt @@ -0,0 +1,112 @@ +shellsnoop captures the text input and output from shells running on the +system. In the following example shellsnoop was run in one window, while +in another several commands were run: date, cal, uname -a, uptime and find. +shellsnoop has successfully captured the text that was displayed on the +other window. + + +# shellsnoop + PID PPID CMD DIR TEXT + 4724 3762 ksh R + 4724 3762 ksh W date + + 4741 4724 date W Sun Mar 28 23:10:06 EST 2004 + 4724 3762 ksh R + 4724 3762 ksh W jupiter:/etc/init.d> + 4724 3762 ksh R + 4724 3762 ksh R + 4724 3762 ksh W cal + + 4742 4724 cal W March 2004 + 4742 4724 cal W S M Tu W Th F S + 4742 4724 cal W 1 2 3 4 5 6 + 4742 4724 cal W 7 8 9 10 11 12 13 + 4742 4724 cal W 14 15 16 17 18 19 20 + 4742 4724 cal W 21 22 23 24 25 26 27 + 4742 4724 cal W 28 29 30 31 + 4742 4724 cal W + 4724 3762 ksh R + 4724 3762 ksh W jupiter:/etc/init.d> + 4724 3762 ksh R + 4724 3762 ksh R + 4724 3762 ksh W uname -a + + 4743 4724 uname W SunOS jupiter 5.10 s10_51 i86pc i386 i86pc + 4724 3762 ksh R + 4724 3762 ksh W jupiter:/etc/init.d> + 4724 3762 ksh R + 4724 3762 ksh R + 4724 3762 ksh W uptime + + 4744 4724 uptime W 11:10pm up 4 day(s), 11:15, 4 users, load average: 0.05, 0.02, 0.02 + 4724 3762 ksh R + 4724 3762 ksh W jupiter:/etc/init.d> + 4724 3762 ksh R + 4724 3762 ksh R + 4724 3762 ksh R + 4724 3762 ksh W jupiter:/etc/init.d> + 4724 3762 ksh R + 4724 3762 ksh R + 4724 3762 ksh W ls -l d* + + 4745 4724 ls W -rwxr--r-- 3 root sys 1292 Jan 14 16:24 devfsadm + 4745 4724 ls W -rwxr--r-- 1 root sys 904 Jan 14 16:24 devlinks + 4745 4724 ls W -rwxr--r-- 6 root sys 621 Jan 14 16:17 dhcp + 4745 4724 ls W -rwxr--r-- 2 root sys 494 Jan 14 16:17 dhcpagent + 4745 4724 ls W -rwxr--r-- 5 root sys 1050 Jan 16 2002 directory + 4745 4724 ls W -rwxr--r-- 2 root sys 779 Jan 14 16:17 domainname + 4745 4724 ls W -rwxr--r-- 1 root sys 469 Jan 14 16:24 drvconfig + 4745 4724 ls W -r-xr-xr-x 4 root other 2804 Mar 27 13:37 dtlogin + 4724 3762 ksh R + 4724 3762 ksh W jupiter:/etc/init.d> + 4724 3762 ksh R + 4724 3762 ksh R + 4724 3762 ksh W find /etc/default + + 4746 4724 find W /etc/default + 4746 4724 find W /etc/default/cron + 4746 4724 find W /etc/default/devfsadm + 4746 4724 find W /etc/default/dhcpagent + 4746 4724 find W /etc/default/fs + 4746 4724 find W /etc/default/inetd + 4746 4724 find W /etc/default/inetinit + 4746 4724 find W /etc/default/kbd + 4746 4724 find W /etc/default/keyserv + 4746 4724 find W /etc/default/ipsec + 4746 4724 find W /etc/default/nss + 4746 4724 find W /etc/default/passwd + 4746 4724 find W /etc/default/syslogd + 4746 4724 find W /etc/default/tar + 4746 4724 find W /etc/default/utmpd + 4746 4724 find W /etc/default/init + 4746 4724 find W /etc/default/login + 4746 4724 find W /etc/default/su + 4746 4724 find W /etc/default/power + 4746 4724 find W /etc/default/sys-suspend + 4746 4724 find W /etc/default/rpc.nisd + 4746 4724 find W /etc/default/nfs +[...] + + + +shellsnoop has a "-q" option for running in "quiet" mode - the previous +columns are not printed, so only shell output is seen, + + # shellsnoop -q + # date + Wed Nov 30 16:19:48 EST 2005 + # + # cal + November 2005 + S M Tu W Th F S + 1 2 3 4 5 + 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 + 20 21 22 23 24 25 26 + 27 28 29 30 + + # + +The output appears somewhat boring, this is something you need to see +in realtime. + diff --git a/cddl/contrib/dtracetoolkit/Examples/shortlived_example.txt b/cddl/contrib/dtracetoolkit/Examples/shortlived_example.txt new file mode 100644 index 000000000000..ebe46925095a --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/shortlived_example.txt @@ -0,0 +1,57 @@ +The following is an example of the shortlived.d program. +It can measure time spent processing short lived processes, +that may be responsible for heavy load on the system but +are usually difficult to see with sampling tools like prstat. + + + +Here we run in for a few seconds on a server, + + # shortlived.d + Tracing... Hit Ctrl-C to stop. + ^C + short lived processes: 0.456 secs + total sample duration: 9.352 secs + + Total time by process name, + date 12 ms + df 20 ms + ls 40 ms + perl 380 ms + + Total time by PPID, + 3279 452 ms + +In the above output, around 5% of the CPU was lost to short +lived processes - mostly perl. This may be many perl processes, +here we are aggregating on the process name not the instance. + + + +Now shortlived.d is run on a server with a performance problem, + + # uptime + 10:58pm up 5 day(s), 1:28, 1 user, load average: 2.20, 1.81, 1.04 + # + # shortlived.d + Tracing... Hit Ctrl-C to stop. + ^C + short lived processes: 4.546 secs + total sample duration: 9.858 secs + + Total time by process name, + expr 4122 ms + + Total time by PPID, + 3279 4122 ms + # + # ps -p 3279 + PID TTY TIME CMD + 3279 pts/10 0:45 report.sh + +shortlived.d showed that 50% of the CPU was consumed by short lived +processes, all of them the "expr" command, and all having the +parent proccess-ID 3279. We finished by checking PID 3279 to find +it is a Bourne shell script called "report.sh". + + diff --git a/cddl/contrib/dtracetoolkit/Examples/sigdist_example.txt b/cddl/contrib/dtracetoolkit/Examples/sigdist_example.txt new file mode 100644 index 000000000000..88b9df461f32 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sigdist_example.txt @@ -0,0 +1,18 @@ +The following is a demonstration of the sigdist.d script. + + +Here we run sigdist.d, and in another window we kill -9 a sleep process, + + # ./sigdist.d + Tracing... Hit Ctrl-C to end. + ^C + SENDER RECIPIENT SIG COUNT + sched dtrace 2 1 + sched bash 18 1 + bash sleep 9 1 + sched Xorg 14 55 + +We can see the signal sent from bash to sleep. We can also see that Xorg +has recieved 55 signal 14s. a "man -s3head signal" may help explain what +signal 14 is (alarm clock). + diff --git a/cddl/contrib/dtracetoolkit/Examples/stacksize_example.txt b/cddl/contrib/dtracetoolkit/Examples/stacksize_example.txt new file mode 100644 index 000000000000..156f351d8684 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/stacksize_example.txt @@ -0,0 +1,87 @@ +The following is a domonstration of the stacksize.d script. + + +Here it is run for a few seconds then Ctrl-C is hit. The output prints +distrubition plots of the size of the user stack as the value, and the +number of times sampled at that size as the count. + + # ./stacksize.d + Sampling... Hit Ctrl-C to end + + + automountd + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + nscd + value ------------- Distribution ------------- count + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 256 | 0 + + svc.startd + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 512 | 0 + + sshd + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 4096 | 0 + + dtrace + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5 + 2048 | 0 + + nautilus + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 4096 | 0 + + Xvnc + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 4096 | 0 + + gnome-vfs-daemon + value ------------- Distribution ------------- count + 2048 | 0 + 4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 8192 | 0 + + Xorg + value ------------- Distribution ------------- count + 2048 | 0 + 4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6 + 8192 | 0 + + gnome-terminal + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@ 7 + 4096 |@@@@@@@@@@@@@@@@@@@@@@@@ 11 + 8192 | 0 + + acroread + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 92 + 4096 | 0 + + perl + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1945 + 2048 | 0 + + + Errors: + diff --git a/cddl/contrib/dtracetoolkit/Examples/statsnoop_example.txt b/cddl/contrib/dtracetoolkit/Examples/statsnoop_example.txt new file mode 100644 index 000000000000..842017ea4331 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/statsnoop_example.txt @@ -0,0 +1,94 @@ +The following is an example of the statsnoop tool. + + +statsnoop is a companion to opensnoop, which traces a variety of stat() +calls rather than open() calls. + +Here I run statsnoop on my idle laptop for about 3 seconds, + + # statsnoop + UID PID COMM FD PATH + 0 1485 dtrace 0 /devices/pseudo/pts@0:6 + 100 791 dtwm -1 /usr/mail/brendan + 100 791 dtwm -1 /usr/mail/brendan + 100 791 dtwm -1 /usr/mail/brendan + 100 791 dtwm -1 /usr/mail/brendan + 100 795 sdtperfmeter 0 /devices/pseudo/mm@0:null + 0 803 rpc.rstatd 0 /devices/pseudo/udp@0:udp + 0 803 rpc.rstatd 0 /devices/pseudo/udp@0:udp + 100 795 sdtperfmeter 0 /devices/pseudo/mm@0:null + 100 791 dtwm 0 /export/home/brendan/.dt/Trash/.trashinfo + 100 791 dtwm 0 /export/home/brendan/.dt/Trash/.trashinfo + 100 791 dtwm 0 /devices/pseudo/mm@0:null + 100 783 ttsession 0 /devices/pseudo/pts@0:3 + 100 783 ttsession 0 /devices/pseudo/pts@0:3 + 100 783 ttsession 0 /devices/pseudo/pts@0:3 + 100 791 dtwm 0 /devices/pseudo/mm@0:null + 100 783 ttsession 0 /devices/pseudo/pts@0:3 + 100 783 ttsession 0 /devices/pseudo/pts@0:3 + 100 791 dtwm 0 /devices/pseudo/mm@0:null + 100 791 dtwm 0 /devices/pseudo/mm@0:null + 100 792 dtfile 0 /devices/pseudo/mm@0:null + 100 783 ttsession 0 /devices/pseudo/pts@0:3 + ^C + +It is interesting what turns up. In the above output, a "dtwm" process +with process ID 791 called stat on /usr/mail/brendan and received -1 as +a return value - as this file does not exist. (when were mailboxes ever +stored in /usr/mail??). + + +statsnoop has a variety of options, as opensnoop does. Here I trace stat()s +from processes called "bash", while a new bash shell is executed, + + # statsnoop -n bash + UID PID COMM FD PATH + 100 1493 bash 0 /usr/bin/bash + 100 1493 bash 0 /devices/pseudo/pts@0:8 + 100 1493 bash 0 /lib/libcurses.so.1 + 100 1493 bash 0 /lib/libsocket.so.1 + 100 1493 bash 0 /lib/libnsl.so.1 + 100 1493 bash 0 /lib/libdl.so.1 + 100 1493 bash 0 /lib/libc.so.1 + 100 1493 bash 0 /devices/pseudo/pts@0:8 + 100 1493 bash 0 /devices/pseudo/pts@0:8 + 100 1493 bash 0 /export/home/brendan + 100 1493 bash 0 . + 100 1493 bash 0 /export/home/brendan/.bashrc + 100 1493 bash -1 /usr/mail/brendan + 100 1493 bash 0 /export/home/brendan/.bash_history + 100 1493 bash 0 /export/home/brendan/.bash_history + 100 1493 bash 0 /export/home/brendan/.bash_history + 100 1493 bash -1 /export/home/brendan/.inputrc + 100 1493 bash 0 . + ^C + +bash also checked /usr/mail/brendan? hmm... + + $ echo $MAIL + /usr/mail/brendan + +hmmmmm... + + $ cat .profile + # This is the default standard profile provided to a user. + # They are expected to edit it to meet their own needs. + + MAIL=/usr/mail/${LOGNAME:?} + +huh? + + $ cat /etc/skel/.profile + # This is the default standard profile provided to a user. + # They are expected to edit it to meet their own needs. + + MAIL=/usr/mail/${LOGNAME:?} + + $ cat /var/sadm/pkg/SUNWcsr/save/pspool/SUNWcsr/reloc/etc/skel/.profile + # This is the default standard profile provided to a user. + # They are expected to edit it to meet their own needs. + + MAIL=/usr/mail/${LOGNAME:?} + +oh. + diff --git a/cddl/contrib/dtracetoolkit/Examples/swapinfo_example.txt b/cddl/contrib/dtracetoolkit/Examples/swapinfo_example.txt new file mode 100644 index 000000000000..e8697660f9c7 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/swapinfo_example.txt @@ -0,0 +1,22 @@ +The following is a demonstration of the swapinfo.d script, + + # ./swapinfo.d + RAM _______Total 511 MB + RAM Unusable 8 MB + RAM Kernel 128 MB + RAM Locked 0 MB + RAM Used 256 MB + RAM Free 118 MB + + Disk _______Total 1023 MB + Disk Resv 626 MB + Disk Avail 397 MB + + Swap _______Total 1335 MB + Swap Resv 626 MB + Swap Avail 709 MB + Swap (Minfree) 62 MB + +The output above gives a summary of the state of virtual memory (swap) +on the system. + diff --git a/cddl/contrib/dtracetoolkit/Examples/sysbypid_example.txt b/cddl/contrib/dtracetoolkit/Examples/sysbypid_example.txt new file mode 100644 index 000000000000..2858c5147c66 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/sysbypid_example.txt @@ -0,0 +1,45 @@ +The following is a demonstration of the sysbypid.d command, + + # sysbypid.d + Tracing... Hit Ctrl-C to end. + ^C + EXEC PID SYS VALUE + xterm 24030 rawch 1 + sched 0 rcvint 1 + fsflush 3 pswitch 1 + dtrace 19235 inv_swtch 1 + xterm 24030 syswrite 2 + Xorg 3597 syswrite 2 + xterm 24030 inv_swtch 2 + dtrace 19235 pswitch 2 + dtrace 19235 syswrite 2 + soffice.bin 4019 pswitch 3 + xterm 24030 pswitch 3 + mozilla-bin 3730 inv_swtch 4 + xterm 24030 sysread 4 + mozilla-bin 3730 readch 9 + mozilla-bin 3730 sysread 9 + Xorg 3597 pswitch 10 + Xorg 3597 sysread 11 + mozilla-bin 3730 syswrite 13 + java_vm 28209 pswitch 13 + sched 0 pswitch 15 + mozilla-bin 3730 pswitch 25 + setiathome 3929 trap 26 + setiathome 3929 pswitch 26 + setiathome 3929 inv_swtch 26 + dtrace 19235 writech 32 + dtrace 19235 outch 34 + dtrace 19235 trap 53 + Xorg 3597 writech 64 + xterm 24030 readch 96 + xterm 24030 writech 133 + mozilla-bin 3730 writech 905 + Xorg 3597 readch 1044 + +In the above output, the Xorg command with PID 3597 read 1044 bytes, as +indicated by readch. + +mozilla-bin with PID 3730 wrote 905 bytes, as indicated by the writech. + + diff --git a/cddl/contrib/dtracetoolkit/Examples/syscallbypid_example.txt b/cddl/contrib/dtracetoolkit/Examples/syscallbypid_example.txt new file mode 100644 index 000000000000..e51bb14cf0fa --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/syscallbypid_example.txt @@ -0,0 +1,50 @@ +The following is a demonstration of the syscallbypid.d script, + + +Here we run syscallbypid.d for a few seconds then hit Ctrl-C, + + # syscallbypid.d + Tracing... Hit Ctrl-C to end. + ^C + PID CMD SYSCALL COUNT + 11039 dtrace setcontext 1 + 11039 dtrace lwp_sigmask 1 + 7 svc.startd portfs 1 + 357 poold lwp_cond_wait 1 + 27328 java_vm lwp_cond_wait 1 + 1532 Xorg writev 1 + 11039 dtrace lwp_park 1 + 11039 dtrace schedctl 1 + 11039 dtrace mmap 1 + 361 sendmail pollsys 1 + 11039 dtrace fstat64 1 + 11039 dtrace sigaction 2 + 11039 dtrace write 2 + 361 sendmail lwp_sigmask 2 + 1659 mozilla-bin yield 2 + 11039 dtrace sysconfig 3 + 361 sendmail pset 3 + 20317 sshd read 4 + 361 sendmail gtime 4 + 20317 sshd write 4 + 27328 java_vm ioctl 6 + 11039 dtrace brk 8 + 1532 Xorg setcontext 8 + 1532 Xorg lwp_sigmask 8 + 20317 sshd pollsys 8 + 357 poold pollsys 13 + 1659 mozilla-bin read 16 + 20317 sshd lwp_sigmask 16 + 1532 Xorg setitimer 17 + 27328 java_vm pollsys 18 + 1532 Xorg pollsys 19 + 11039 dtrace p_online 21 + 1532 Xorg read 22 + 1659 mozilla-bin write 25 + 1659 mozilla-bin lwp_park 26 + 11039 dtrace ioctl 36 + 1659 mozilla-bin pollsys 155 + 1659 mozilla-bin ioctl 306 + +In the above output, we can see that "mozilla-bin" with PID 1659 made the +most system calls - 306 ioctl()s. diff --git a/cddl/contrib/dtracetoolkit/Examples/syscallbyproc_example.txt b/cddl/contrib/dtracetoolkit/Examples/syscallbyproc_example.txt new file mode 100644 index 000000000000..7469b79cc88b --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/syscallbyproc_example.txt @@ -0,0 +1,17 @@ +The following is an example of the syscallbyproc.d script, + + # syscallbyproc.d + dtrace: description 'syscall:::entry ' matched 228 probes + ^C + snmpd 1 + utmpd 2 + inetd 2 + nscd 7 + svc.startd 11 + sendmail 31 + poold 133 + dtrace 1720 + +The above output shows that dtrace made the most system calls in this sample, +1720 syscalls. + diff --git a/cddl/contrib/dtracetoolkit/Examples/syscallbysysc_example.txt b/cddl/contrib/dtracetoolkit/Examples/syscallbysysc_example.txt new file mode 100644 index 000000000000..d131a176c10a --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/syscallbysysc_example.txt @@ -0,0 +1,24 @@ +The following is a demonstration of the syscallbysysc.d script, + + # syscallbysysc.d + dtrace: description 'syscall:::entry ' matched 228 probes + ^C + fstat 1 + setcontext 1 + lwp_park 1 + schedctl 1 + mmap 1 + sigaction 2 + pset 2 + lwp_sigmask 2 + gtime 3 + sysconfig 3 + write 4 + brk 6 + pollsys 7 + p_online 558 + ioctl 579 + +In the above output, the ioctl system call was the most common, occuring +579 times. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_calldist_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_calldist_example.txt new file mode 100644 index 000000000000..3388963411e5 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_calldist_example.txt @@ -0,0 +1,166 @@ +The following are examples of tcl_calldist.d. + +This script traces the elapsed time of Tcl procedures and commands and +prints a report containing distribution plots per function. Here it traces the +example program, Code/Tcl/func_abc.tcl + +# tcl_calldist.d +Tracing... Hit Ctrl-C to end. +^C + +Top 10 exclusive elapsed times (us), + PID=16033, cmd, namespace + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@ 1 + 4 |@@@@@@@@@@@@@ 1 + 8 | 0 + 16 | 0 + 32 | 0 + 64 | 0 + 128 |@@@@@@@@@@@@@ 1 + 256 | 0 + + PID=16033, cmd, puts + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + 128 |@@@@@@@@@@@@@ 1 + 256 | 0 + + PID=16033, cmd, tclInit + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + PID=16033, proc, func_a + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + PID=16033, proc, func_b + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + PID=16033, proc, func_c + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + PID=16033, cmd, file + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@ 4 + 8 |@@@@@@@ 2 + 16 |@@@@@@@ 2 + 32 |@@@ 1 + 64 |@@@@@@@@@@ 3 + 128 | 0 + + PID=16033, cmd, source + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + PID=16033, cmd, if + value ------------- Distribution ------------- count + 8 | 0 + 16 |@@@@@@@@@@@@@@@@@@@@ 4 + 32 |@@@@@@@@@@@@@@@ 3 + 64 | 0 + 128 | 0 + 256 | 0 + 512 |@@@@@ 1 + 1024 | 0 + + PID=16033, cmd, after + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 1048576 | 0 + + +Top 10 inclusive elapsed times (us), + PID=16033, cmd, uplevel + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + PID=16033, cmd, tclInit + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + PID=16033, proc, tclInit + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + PID=16033, cmd, func_c + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + PID=16033, proc, func_c + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + PID=16033, cmd, func_b + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + PID=16033, proc, func_b + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + PID=16033, cmd, after + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3 + 1048576 | 0 + + PID=16033, cmd, func_a + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + + PID=16033, proc, func_a + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + +The exclusive function elapsed times show that each func_a took between 256 +and 511 microseconds. This time excludes the time spent in any other functions. + +The inclusive elapsed times section shows that each func_a spent +took between 2.1 and 4.2 seconds. This time also includes the time spent in +any other commands or procedures called by func_a. + +These elapsed times are the absolute time from when the function began to +when it completed - which includes off-CPU time due to other system events +such as I/O, scheduling, interrupts, etc. + +Elapsed times are useful for identifying where latencies are. +See Notes/ALLelapsed_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive function time. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_calls_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_calls_example.txt new file mode 100644 index 000000000000..5ffada4957a0 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_calls_example.txt @@ -0,0 +1,41 @@ +The following are examples of the results of running the tcl_calls.d script. + +In this example we see it running while the Code/Tcl/func_abc.tcl script is run. + +# tcl_calls.d Tracing... Hit Ctrl-C to end. +^C + PID TYPE NAME COUNT + 16021 cmd concat 1 + 16021 cmd exit 1 + 16021 cmd func_a 1 + 16021 cmd func_b 1 + 16021 cmd func_c 1 + 16021 cmd list 1 + 16021 cmd rename 1 + 16021 cmd source 1 + 16021 cmd tclInit 1 + 16021 cmd unset 1 + 16021 cmd uplevel 1 + 16021 cmd variable 1 + 16021 proc func_a 1 + 16021 proc func_b 1 + 16021 proc func_c 1 + 16021 proc tclInit 1 + 16021 cmd foreach 2 + 16021 cmd global 2 + 16021 cmd interp 2 + 16021 cmd package 2 + 16021 cmd set 2 + 16021 cmd after 3 + 16021 cmd namespace 3 + 16021 cmd puts 3 + 16021 cmd lappend 4 + 16021 cmd lsearch 4 + 16021 cmd if 8 + 16021 cmd info 11 + 16021 cmd file 12 + 16021 cmd proc 12 + +You can see that PID 16021 made quite a few different types of command and +procedure calls during its execution. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_calltime_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_calltime_example.txt new file mode 100644 index 000000000000..56d100af93ef --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_calltime_example.txt @@ -0,0 +1,61 @@ +The following are examples of tcl_calltime.d. + +This script traces the total elapsed time of different Tcl commands and +procedures and prints a report. Here it traces the example program, +Code/Tcl/func_abc.tcl + +# tcl_calltime.d +Tracing... Hit Ctrl-C to end. +^C + +Top 10 counts, + PID TYPE NAME COUNT + 16028 cmd after 3 + 16028 cmd namespace 3 + 16028 cmd puts 3 + 16028 cmd lappend 4 + 16028 cmd lsearch 4 + 16028 cmd if 8 + 16028 cmd info 11 + 16028 cmd file 12 + 16028 cmd proc 12 + 0 total - 85 + +Top 10 exclusive elapsed times (us), + PID TYPE NAME TOTAL + 16028 cmd tclInit 253 + 16028 cmd namespace 272 + 16028 proc func_c 330 + 16028 proc func_b 357 + 16028 proc func_a 363 + 16028 cmd file 416 + 16028 cmd if 852 + 16028 cmd source 929 + 16028 cmd after 3025152 + 0 total - 3030001 + +Top 10 inclusive elapsed times (us), + PID TYPE NAME TOTAL + 16028 cmd uplevel 1849 + 16028 proc tclInit 2519 + 16028 cmd tclInit 2772 + 16028 proc func_c 1010031 + 16028 cmd func_c 1010088 + 16028 proc func_b 2020059 + 16028 cmd func_b 2020106 + 16028 cmd after 3025152 + 16028 proc func_a 3026545 + 16028 cmd func_a 3026572 + +The output is in three sections. The first shows the top ten most executed +commands while the script is tracing. + +The second (Top 10 exclusive elapsed times) shows us the top ten slowest +commands or procedures, this number excludes any subroutines called during +command execution. + +The third (Top 10 inclusive elapsed times) shows us the top ten slowest +commands or procedures including any time spent in subroutines. You can see +that func_a took the most amount of time all up. This makes sense if you +compare the code at Code/Tcl/func_abc.tcl with the results. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_cpudist_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_cpudist_example.txt new file mode 100644 index 000000000000..09126f603abc --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_cpudist_example.txt @@ -0,0 +1,164 @@ +The following are examples of tcl_cpudist.d. + +This script traces the on-CPU time of Tcl commands and procedures and +prints a report containing distribution plots per subroutine. Here it +traces the example program, Code/Tcl/func_slow.tcl. + +# tcl_cpudist.d +Tracing... Hit Ctrl-C to end. +^C + +Top 10 exclusive on-CPU times (us), + PID=16043, cmd, info + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@ 1 + 2 |@@@@@@@@@@@@@@@ 4 + 4 |@@@@ 1 + 8 |@@@@ 1 + 16 |@@@@@@@@@@@ 3 + 32 |@@@@ 1 + 64 | 0 + + PID=16043, cmd, namespace + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@@@@@@@@@@@ 1 + 2 |@@@@@@@@@@@@@ 1 + 4 | 0 + 8 | 0 + 16 | 0 + 32 | 0 + 64 | 0 + 128 |@@@@@@@@@@@@@ 1 + 256 | 0 + + PID=16043, cmd, puts + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 + 64 | 0 + 128 |@@@@@@@@@@@@@ 1 + 256 | 0 + + PID=16043, cmd, if + value ------------- Distribution ------------- count + 4 | 0 + 8 |@@@@@@@@@@ 2 + 16 |@@@@@@@@@@@@@@@@@@@@ 4 + 32 |@@@@@ 1 + 64 | 0 + 128 |@@@@@ 1 + 256 | 0 + + PID=16043, cmd, tclInit + value ------------- Distribution ------------- count + 128 | 0 + 256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 512 | 0 + + PID=16043, cmd, file + value ------------- Distribution ------------- count + 2 | 0 + 4 |@@@@@@@@@@@@@ 4 + 8 |@@@@@@@@@@@@@ 4 + 16 | 0 + 32 |@@@ 1 + 64 |@@@@@@@@@@ 3 + 128 | 0 + + PID=16043, cmd, source + value ------------- Distribution ------------- count + 256 | 0 + 512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1024 | 0 + + PID=16043, proc, func_a + value ------------- Distribution ------------- count + 262144 | 0 + 524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 1048576 | 0 + + PID=16043, proc, func_b + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + PID=16043, proc, func_c + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + +Top 10 inclusive on-CPU times (us), + PID=16043, cmd, source + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + PID=16043, cmd, uplevel + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + PID=16043, proc, tclInit + value ------------- Distribution ------------- count + 512 | 0 + 1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2048 | 0 + + PID=16043, cmd, tclInit + value ------------- Distribution ------------- count + 1024 | 0 + 2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4096 | 0 + + PID=16043, cmd, func_c + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + PID=16043, proc, func_c + value ------------- Distribution ------------- count + 524288 | 0 + 1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 2097152 | 0 + + PID=16043, cmd, func_a + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + + PID=16043, cmd, func_b + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + + PID=16043, proc, func_a + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + + PID=16043, proc, func_b + value ------------- Distribution ------------- count + 1048576 | 0 + 2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 4194304 | 0 + +These on-CPU times are the time the thread spent running on a CPU, from when +the subroutine began to when it completed. This does not include time +spent off-CPU time such as sleeping for I/O or waiting for scheduling. + +On-CPU times are useful for showing who is causing the CPUs to be busy. +See Notes/ALLoncpu_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive subroutine time. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_cputime_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_cputime_example.txt new file mode 100644 index 000000000000..c736201e262d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_cputime_example.txt @@ -0,0 +1,67 @@ +Following are examples of running tcl_cputime.d. + +Here it runs while we execute Code/Tcl/func_slow.tcl + +# tcl_cputime.d +Tracing... Hit Ctrl-C to end. +^C + +Top 10 counts, + PID TYPE NAME COUNT + 16038 cmd set 2 + 16038 cmd namespace 3 + 16038 cmd puts 3 + 16038 cmd lappend 4 + 16038 cmd lsearch 4 + 16038 cmd if 8 + 16038 cmd info 11 + 16038 cmd file 12 + 16038 cmd proc 12 + 0 total - 82 + +Top 10 exclusive on-CPU times (us), + PID TYPE NAME TOTAL + 16038 cmd namespace 130 + 16038 cmd puts 232 + 16038 cmd if 310 + 16038 cmd tclInit 315 + 16038 cmd file 411 + 16038 cmd source 760 + 16038 proc func_a 535521 + 16038 proc func_b 1071082 + 16038 proc func_c 1619323 + 0 total - 3228670 + +Top 10 inclusive on-CPU times (us), + PID TYPE NAME TOTAL + 16038 cmd source 1359 + 16038 cmd uplevel 1367 + 16038 proc tclInit 1865 + 16038 cmd tclInit 2180 + 16038 proc func_c 1619360 + 16038 cmd func_c 1619404 + 16038 proc func_b 2690525 + 16038 cmd func_b 2690568 + 16038 proc func_a 3226247 + 16038 cmd func_a 3226275 + +We can see that the output is in three sections. The first section represents +the ten most commonly executed commands while the script is tracing. + +The exclusive function on-CPU times show that func_a spent around 0.5 seconds +on-CPU, func_b spent about 1.0 seconds, and func_c, 1.6 seconds. This excludes +time spent in other procedures or commands. + +The inclusive function on-CPU times show the time spent by these procedures in +total, including the time spent in other functions called, and since func_a +called func_b which called func_c, these times make sense. + +These on-CPU times are the time the thread spent running on a CPU, from when +the function began to when it completed. This does not include time +spent off-CPU time such as sleeping for I/O or waiting for scheduling. + +On-CPU times are useful for showing who is causing the CPUs to be busy. +See Notes/ALLoncpu_notes.txt for more details. Also see +Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a +detailed explanation of exclusive vs inclusive function time. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_flow_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_flow_example.txt new file mode 100644 index 000000000000..dd2dcd60c772 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_flow_example.txt @@ -0,0 +1,195 @@ +The following are examples of running tcl_flow.d. + +Here the script is tracing the execution of Code/Tcl/func_abc.tcl + +# tcl_flow.d + C PID TIME(us) -- CALL + 0 16068 3904942506169 > if + 0 16068 3904942506261 > info + 0 16068 3904942506286 < info + 0 16068 3904942506350 > proc + 0 16068 3904942506363 < proc + 0 16068 3904942506369 < if + 0 16068 3904942506383 > tclInit + 0 16068 3904942506605 -> tclInit + 0 16068 3904942506614 > global + 0 16068 3904942506626 < global + 0 16068 3904942506632 > global + 0 16068 3904942506638 < global + 0 16068 3904942506643 > rename + 0 16068 3904942506666 < rename + 0 16068 3904942506675 > info + 0 16068 3904942506685 < info + 0 16068 3904942506694 > info + 0 16068 3904942506721 < info + 0 16068 3904942506728 > unset + 0 16068 3904942506741 < unset + 0 16068 3904942506746 > concat + 0 16068 3904942506760 < concat + 0 16068 3904942506774 > file + 0 16068 3904942506792 < file + 0 16068 3904942506797 > file + 0 16068 3904942506880 < file + 0 16068 3904942506885 > file + 0 16068 3904942506895 < file + 0 16068 3904942506901 > file + 0 16068 3904942507009 < file + 0 16068 3904942507015 > file + 0 16068 3904942507025 < file + 0 16068 3904942507031 > file + 0 16068 3904942507118 < file + 0 16068 3904942507124 > file + 0 16068 3904942507133 < file + 0 16068 3904942507139 > file + 0 16068 3904942507193 < file + 0 16068 3904942507200 > uplevel + 0 16068 3904942507209 > source + 0 16068 3904942507649 > if + 0 16068 3904942507664 > info + 0 16068 3904942507673 < info + 0 16068 3904942507681 < if + 0 16068 3904942507691 > package + 0 16068 3904942507700 < package + 0 16068 3904942507712 > if + 0 16068 3904942507722 > info + 0 16068 3904942507728 < info + 0 16068 3904942507749 > info + 0 16068 3904942507773 < info + 0 16068 3904942507780 < if + 0 16068 3904942507797 > namespace + 0 16068 3904942507898 > variable + 0 16068 3904942507905 < variable + 0 16068 3904942507911 > info + 0 16068 3904942507923 < info + 0 16068 3904942507928 > info + 0 16068 3904942507934 < info + 0 16068 3904942507939 > info + 0 16068 3904942507947 < info + 0 16068 3904942507952 > file + 0 16068 3904942507971 < file + 0 16068 3904942507977 > list + 0 16068 3904942507991 < list + 0 16068 3904942507996 > foreach + 0 16068 3904942508020 > lsearch + 0 16068 3904942508028 < lsearch + 0 16068 3904942508034 > lappend + 0 16068 3904942508041 < lappend + 0 16068 3904942508051 > lsearch + 0 16068 3904942508056 < lsearch + 0 16068 3904942508061 > lappend + 0 16068 3904942508068 < lappend + 0 16068 3904942508073 < foreach + 0 16068 3904942508078 > info + 0 16068 3904942508086 < info + 0 16068 3904942508090 > file + 0 16068 3904942508108 < file + 0 16068 3904942508113 > file + 0 16068 3904942508129 < file + 0 16068 3904942508134 > file + 0 16068 3904942508142 < file + 0 16068 3904942508148 > lsearch + 0 16068 3904942508153 < lsearch + 0 16068 3904942508158 > lappend + 0 16068 3904942508166 < lappend + 0 16068 3904942508170 > info + 0 16068 3904942508176 < info + 0 16068 3904942508181 > foreach + 0 16068 3904942508190 > lsearch + 0 16068 3904942508195 < lsearch + 0 16068 3904942508200 > lappend + 0 16068 3904942508206 < lappend + 0 16068 3904942508211 < foreach + 0 16068 3904942508217 < namespace + 0 16068 3904942508243 > if + 0 16068 3904942508261 > interp + 0 16068 3904942508276 < interp + 0 16068 3904942508283 < if + 0 16068 3904942508296 > package + 0 16068 3904942508302 < package + 0 16068 3904942508312 > if + 0 16068 3904942508322 > interp + 0 16068 3904942508328 < interp + 0 16068 3904942508369 < if + 0 16068 3904942508387 > if + 0 16068 3904942508398 > namespace + 0 16068 3904942508406 < namespace + 0 16068 3904942508412 < if + 0 16068 3904942508424 > set + 0 16068 3904942508430 < set + 0 16068 3904942508437 > set + 0 16068 3904942508443 < set + 0 16068 3904942508451 > if + 0 16068 3904942508463 > namespace + 0 16068 3904942508469 < namespace + 0 16068 3904942508479 > proc + 0 16068 3904942508488 < proc + 0 16068 3904942508493 < if + 0 16068 3904942508573 > proc + 0 16068 3904942508582 < proc + 0 16068 3904942508599 > proc + 0 16068 3904942508609 < proc + 0 16068 3904942508638 > proc + 0 16068 3904942508645 < proc + 0 16068 3904942508664 > proc + 0 16068 3904942508673 < proc + 0 16068 3904942508686 > proc + 0 16068 3904942508693 < proc + 0 16068 3904942508737 > if + 0 16068 3904942508760 > proc + 0 16068 3904942508782 < proc + 0 16068 3904942508788 < if + 0 16068 3904942508826 > proc + 0 16068 3904942508837 < proc + 0 16068 3904942508843 < source + 0 16068 3904942508848 < uplevel + 0 16068 3904942508857 <- tclInit + 0 16068 3904942508871 < tclInit + 0 16068 3904942509050 > proc + 0 16068 3904942509059 < proc + 0 16068 3904942509067 > proc + 0 16068 3904942509074 < proc + 0 16068 3904942509081 > proc + 0 16068 3904942509088 < proc + 0 16068 3904942509094 > func_a + 0 16068 3904942509110 -> func_a + 0 16068 3904942509116 > puts + 0 16068 3904942509256 < puts + 0 16068 3904942509262 > after + 0 16068 3904943510998 < after + 0 16068 3904943511016 > func_b + 0 16068 3904943511050 -> func_b + 0 16068 3904943511058 > puts + 0 16068 3904943511090 < puts + 0 16068 3904943511094 > after + 0 16068 3904944520994 < after + 0 16068 3904944521013 > func_c + 0 16068 3904944521043 -> func_c + 0 16068 3904944521051 > puts + 0 16068 3904944521092 < puts + 0 16068 3904944521097 > after + 0 16068 3904945530993 < after + 0 16068 3904945531012 <- func_c + 0 16068 3904945531020 < func_c + 0 16068 3904945531025 <- func_b + 0 16068 3904945531029 < func_b + 0 16068 3904945531034 <- func_a + 0 16068 3904945531039 < func_a + 0 16068 3904945531064 > exit +^C + +You can see the output is in five columns. + +The first column is CPU-id, the second is PID, third is the time since boot in +microseconds since the previous action. The fourth and fifth columns +represent the action happening. The Tcl command or procedure name is prefixed +by an indicator reprenting what is happening. These may be -> (procedure +entry), <- (procedure return), > (command entry), or < (command return). + +As each action is taken, the fourth and fifth columns are indented by 2 spaces. +This shows which procedure or command is calling which. + +If the output looks shuffled, check the CPU "C" and "TIME" columns, and +post sort based on TIME if necessary. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_flowtime_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_flowtime_example.txt new file mode 100644 index 000000000000..8e07238e1303 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_flowtime_example.txt @@ -0,0 +1,197 @@ +Following are examples of running tcl_flowtime.d. + +Here the tcl_flowtime.d script is running on the program +Code/Tcl/func_abc.tcl. + + +# tcl_flowtime.d + C PID TIME(us) DELTA(us) -- CALL + 0 17901 4436098007906 2 > if + 0 17901 4436098007976 70 > info + 0 17901 4436098007998 21 < info + 0 17901 4436098008050 52 > proc + 0 17901 4436098008063 12 < proc + 0 17901 4436098008069 6 < if + 0 17901 4436098008085 15 > tclInit + 0 17901 4436098008286 201 -> tclInit + 0 17901 4436098008295 8 > global + 0 17901 4436098008305 10 < global + 0 17901 4436098008311 6 > global + 0 17901 4436098008318 6 < global + 0 17901 4436098008323 5 > rename + 0 17901 4436098008342 18 < rename + 0 17901 4436098008353 10 > info + 0 17901 4436098008362 9 < info + 0 17901 4436098008369 6 > info + 0 17901 4436098008395 25 < info + 0 17901 4436098008403 8 > unset + 0 17901 4436098008410 6 < unset + 0 17901 4436098008416 5 > concat + 0 17901 4436098008425 8 < concat + 0 17901 4436098008440 15 > file + 0 17901 4436098008459 18 < file + 0 17901 4436098008465 6 > file + 0 17901 4436098008543 78 < file + 0 17901 4436098008550 7 > file + 0 17901 4436098008560 9 < file + 0 17901 4436098008567 7 > file + 0 17901 4436098008671 104 < file + 0 17901 4436098008678 7 > file + 0 17901 4436098008688 9 < file + 0 17901 4436098008695 6 > file + 0 17901 4436098008780 84 < file + 0 17901 4436098008787 6 > file + 0 17901 4436098008796 9 < file + 0 17901 4436098008803 6 > file + 0 17901 4436098008854 51 < file + 0 17901 4436098008862 7 > uplevel + 0 17901 4436098008872 10 > source + 0 17901 4436098009290 417 > if + 0 17901 4436098009304 14 > info + 0 17901 4436098009311 7 < info + 0 17901 4436098009319 7 < if + 0 17901 4436098009331 11 > package + 0 17901 4436098009340 9 < package + 0 17901 4436098009353 12 > if + 0 17901 4436098009363 10 > info + 0 17901 4436098009369 6 < info + 0 17901 4436098009390 20 > info + 0 17901 4436098009413 22 < info + 0 17901 4436098009421 7 < if + 0 17901 4436098009439 18 > namespace + 0 17901 4436098009530 90 > variable + 0 17901 4436098009537 7 < variable + 0 17901 4436098009544 6 > info + 0 17901 4436098009554 10 < info + 0 17901 4436098009561 6 > info + 0 17901 4436098009567 6 < info + 0 17901 4436098009573 5 > info + 0 17901 4436098009579 6 < info + 0 17901 4436098009586 6 > file + 0 17901 4436098009605 19 < file + 0 17901 4436098009611 6 > list + 0 17901 4436098009627 15 < list + 0 17901 4436098009633 6 > foreach + 0 17901 4436098009658 24 > lsearch + 0 17901 4436098009665 7 < lsearch + 0 17901 4436098009673 7 > lappend + 0 17901 4436098009680 7 < lappend + 0 17901 4436098009689 9 > lsearch + 0 17901 4436098009694 5 < lsearch + 0 17901 4436098009700 6 > lappend + 0 17901 4436098009707 6 < lappend + 0 17901 4436098009712 5 < foreach + 0 17901 4436098009719 6 > info + 0 17901 4436098009726 7 < info + 0 17901 4436098009732 5 > file + 0 17901 4436098009749 17 < file + 0 17901 4436098009756 6 > file + 0 17901 4436098009772 16 < file + 0 17901 4436098009778 6 > file + 0 17901 4436098009787 9 < file + 0 17901 4436098009795 7 > lsearch + 0 17901 4436098009800 5 < lsearch + 0 17901 4436098009806 6 > lappend + 0 17901 4436098009812 5 < lappend + 0 17901 4436098009818 5 > info + 0 17901 4436098009823 5 < info + 0 17901 4436098009830 6 > foreach + 0 17901 4436098009840 9 > lsearch + 0 17901 4436098009845 5 < lsearch + 0 17901 4436098009851 6 > lappend + 0 17901 4436098009857 5 < lappend + 0 17901 4436098009862 5 < foreach + 0 17901 4436098009868 5 < namespace + 0 17901 4436098009896 27 > if + 0 17901 4436098009915 18 > interp + 0 17901 4436098009922 7 < interp + 0 17901 4436098009930 8 < if + 0 17901 4436098009943 12 > package + 0 17901 4436098009949 5 < package + 0 17901 4436098009960 10 > if + 0 17901 4436098009970 10 > interp + 0 17901 4436098009976 5 < interp + 0 17901 4436098010018 41 < if + 0 17901 4436098010036 18 > if + 0 17901 4436098010049 12 > namespace + 0 17901 4436098010057 7 < namespace + 0 17901 4436098010063 6 < if + 0 17901 4436098010074 11 > set + 0 17901 4436098010081 6 < set + 0 17901 4436098010089 8 > set + 0 17901 4436098010095 5 < set + 0 17901 4436098010104 9 > if + 0 17901 4436098010116 12 > namespace + 0 17901 4436098010122 6 < namespace + 0 17901 4436098010133 10 > proc + 0 17901 4436098010142 8 < proc + 0 17901 4436098010148 5 < if + 0 17901 4436098010228 79 > proc + 0 17901 4436098010237 8 < proc + 0 17901 4436098010255 18 > proc + 0 17901 4436098010264 9 < proc + 0 17901 4436098010293 29 > proc + 0 17901 4436098010301 7 < proc + 0 17901 4436098010320 18 > proc + 0 17901 4436098010329 9 < proc + 0 17901 4436098010342 13 > proc + 0 17901 4436098010350 7 < proc + 0 17901 4436098010394 44 > if + 0 17901 4436098010418 23 > proc + 0 17901 4436098010437 18 < proc + 0 17901 4436098010443 6 < if + 0 17901 4436098010563 120 > proc + 0 17901 4436098010575 12 < proc + 0 17901 4436098010582 7 < source + 0 17901 4436098010588 5 < uplevel + 0 17901 4436098010596 8 <- tclInit + 0 17901 4436098010610 13 < tclInit + 0 17901 4436098010800 190 > proc + 0 17901 4436098010809 8 < proc + 0 17901 4436098010818 9 > proc + 0 17901 4436098010825 6 < proc + 0 17901 4436098010833 8 > proc + 0 17901 4436098010840 6 < proc + 0 17901 4436098010847 7 > func_a + 0 17901 4436098010863 15 -> func_a + 0 17901 4436098010870 6 > puts + 0 17901 4436098011006 136 < puts + 0 17901 4436098011014 7 > after + 0 17901 4436099020588 1009573 < after + 0 17901 4436099020611 23 > func_b + 0 17901 4436099020646 34 -> func_b + 0 17901 4436099020655 8 > puts + 0 17901 4436099020697 41 < puts + 0 17901 4436099020703 6 > after + 0 17901 4436100030614 1009910 < after + 0 17901 4436100030638 24 > func_c + 0 17901 4436100030671 32 -> func_c + 0 17901 4436100030680 9 > puts + 0 17901 4436100030723 42 < puts + 0 17901 4436100030729 6 > after + 0 17901 4436101040600 1009870 < after + 0 17901 4436101040623 22 <- func_c + 0 17901 4436101040633 10 < func_c + 0 17901 4436101040639 6 <- func_b + 0 17901 4436101040645 5 < func_b + 0 17901 4436101040651 5 <- func_a + 0 17901 4436101040656 5 < func_a + 0 17901 4436101040682 25 > exit + +You can see the output is in six columns. + +The first column is CPU-id, the second is PID, third is the time since boot in +microseconds, fourth is the elapsed time since the previous action. The fifth +and sixth columns represent the action. The Tcl command or procedure name is +prefixed by an indicator reprenting what is happening. These may be -> +(procedure entry), <- (procedure return), > (command entry), or < (command +return). + +As each action is taken, the fifth and sixth columns are indented by 2 spaces. +This shows which procedure or command is calling which. + +If the output looks shuffled, check the CPU "C" and "TIME" columns, and +post sort based on TIME if necessary. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_ins_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_ins_example.txt new file mode 100644 index 000000000000..6f1ba9a3d137 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_ins_example.txt @@ -0,0 +1,46 @@ +The following are examples of running the script tcl_ins.d + +Here it traces as Code/Tcl/func_slow.tcl executes. + +# tcl_ins.d +Tracing... Hit Ctrl-C to end. +^C + PID TYPE NAME COUNT + 16005 inst foreach_start4 1 + 16005 inst jumpTrue1 1 + 16005 inst lappendScalar1 1 + 16005 inst list 1 + 16005 inst strneq 1 + 16005 inst beginCatch4 2 + 16005 inst dup 2 + 16005 inst endCatch 2 + 16005 inst eq 2 + 16005 inst land 2 + 16005 inst storeScalarStk 2 + 16005 inst foreach_step4 4 + 16005 inst not 4 + 16005 inst loadArrayStk 5 + 16005 inst streq 7 + 16005 inst tryCvtToNumeric 8 + 16005 inst jumpFalse1 12 + 16005 inst loadScalarStk 13 + 16005 inst jump1 14 + 16005 inst pop 18 + 16005 inst invokeStk1 53 + 16005 inst add 600000 + 16005 inst concat1 600000 + 16005 inst exprStk 600000 + 16005 inst lt 600007 + 16005 inst storeScalar1 600016 + 16005 inst done 600021 + 16005 inst loadScalar1 1200020 + 16005 inst push1 4200193 + +It is showing the instructions called by Tcl as the program executes. The +larger counts toward the bottom of the display are from the looping construct +used in Code/Tcl/func_slow.tcl. + +Tracing the instructions is quite low-level and slow the target application +considerably and would probably be used only as a last resort if you have no +other indication of why CPUs are busy. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_insflow_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_insflow_example.txt new file mode 100644 index 000000000000..2919f8eb72fd --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_insflow_example.txt @@ -0,0 +1,997 @@ +The following are examples of running tcl_insflow.d + +Here you can see the script running while tracing Code/Tcl/func_abc.tcl + +# tcl_insflow.d + C PID TIME(us) DELTA(us) TYPE -- CALL + 0 174829 4436207514685 3 cmd -> if + 0 174829 4436207514793 107 inst -> push1 + 0 174829 4436207514805 11 inst <- push1 + 0 174829 4436207514814 8 inst -> push1 + 0 174829 4436207514820 5 inst <- push1 + 0 174829 4436207514826 5 inst -> push1 + 0 174829 4436207514832 5 inst <- push1 + 0 174829 4436207514838 5 inst -> invokeStk1 + 0 174829 4436207514845 6 cmd -> info + 0 174829 4436207514883 38 cmd <- info + 0 174829 4436207514895 11 inst <- invokeStk1 + 0 174829 4436207514901 6 inst -> push1 + 0 174829 4436207514907 5 inst <- push1 + 0 174829 4436207514913 5 inst -> eq + 0 174829 4436207514927 14 inst <- eq + 0 174829 4436207514933 6 inst -> done + 0 174829 4436207514940 6 inst <- done + 0 174829 4436207514978 38 inst -> push1 + 0 174829 4436207514985 6 inst <- push1 + 0 174829 4436207514991 5 inst -> push1 + 0 174829 4436207514996 5 inst <- push1 + 0 174829 4436207515002 5 inst -> push1 + 0 174829 4436207515007 5 inst <- push1 + 0 174829 4436207515013 5 inst -> push1 + 0 174829 4436207515019 5 inst <- push1 + 0 174829 4436207515024 5 inst -> invokeStk1 + 0 174829 4436207515031 6 cmd -> proc + 0 174829 4436207515045 13 cmd <- proc + 0 174829 4436207515051 6 inst <- invokeStk1 + 0 174829 4436207515057 6 inst -> done + 0 174829 4436207515063 5 inst <- done + 0 174829 4436207515069 6 cmd <- if + 0 174829 4436207515086 16 cmd -> tclInit + 0 174829 4436207515295 208 proc -> tclInit + 0 174829 4436207515305 10 inst -> push1 + 0 174829 4436207515311 5 inst <- push1 + 0 174829 4436207515317 6 inst -> push1 + 0 174829 4436207515323 5 inst <- push1 + 0 174829 4436207515328 5 inst -> push1 + 0 174829 4436207515334 5 inst <- push1 + 0 174829 4436207515340 5 inst -> push1 + 0 174829 4436207515345 5 inst <- push1 + 0 174829 4436207515351 5 inst -> invokeStk1 + 0 174829 4436207515357 6 cmd -> global + 0 174829 4436207515369 11 cmd <- global + 0 174829 4436207515375 6 inst <- invokeStk1 + 0 174829 4436207515381 5 inst -> pop + 0 174829 4436207515387 5 inst <- pop + 0 174829 4436207515393 5 inst -> push1 + 0 174829 4436207515398 5 inst <- push1 + 0 174829 4436207515404 5 inst -> push1 + 0 174829 4436207515410 5 inst <- push1 + 0 174829 4436207515415 5 inst -> push1 + 0 174829 4436207515421 5 inst <- push1 + 0 174829 4436207515427 5 inst -> invokeStk1 + 0 174829 4436207515433 6 cmd -> global + 0 174829 4436207515440 7 cmd <- global + 0 174829 4436207515446 6 inst <- invokeStk1 + 0 174829 4436207515452 5 inst -> pop + 0 174829 4436207515458 5 inst <- pop + 0 174829 4436207515463 5 inst -> push1 + 0 174829 4436207515469 5 inst <- push1 + 0 174829 4436207515475 5 inst -> push1 + 0 174829 4436207515480 5 inst <- push1 + 0 174829 4436207515486 5 inst -> push1 + 0 174829 4436207515492 5 inst <- push1 + 0 174829 4436207515497 5 inst -> invokeStk1 + 0 174829 4436207515504 6 cmd -> rename + 0 174829 4436207515553 49 cmd <- rename + 0 174829 4436207515560 6 inst <- invokeStk1 + 0 174829 4436207515566 6 inst -> pop + 0 174829 4436207515571 5 inst <- pop + 0 174829 4436207515577 5 inst -> push1 + 0 174829 4436207515583 5 inst <- push1 + 0 174829 4436207515589 5 inst -> storeScalar1 + 0 174829 4436207515598 9 inst <- storeScalar1 + 0 174829 4436207515605 6 inst -> push1 + 0 174829 4436207515610 5 inst <- push1 + 0 174829 4436207515616 5 inst -> storeScalar1 + 0 174829 4436207515622 5 inst <- storeScalar1 + 0 174829 4436207515628 5 inst -> push1 + 0 174829 4436207515633 5 inst <- push1 + 0 174829 4436207515639 5 inst -> push1 + 0 174829 4436207515645 5 inst <- push1 + 0 174829 4436207515650 5 inst -> push1 + 0 174829 4436207515656 5 inst <- push1 + 0 174829 4436207515662 5 inst -> invokeStk1 + 0 174829 4436207515668 6 cmd -> info + 0 174829 4436207515679 10 cmd <- info + 0 174829 4436207515685 6 inst <- invokeStk1 + 0 174829 4436207515691 5 inst -> tryCvtToNumeric + 0 174829 4436207515701 10 inst <- tryCvtToNumeric + 0 174829 4436207515708 6 inst -> jumpFalse1 + 0 174829 4436207515714 5 inst <- jumpFalse1 + 0 174829 4436207515719 5 inst -> push1 + 0 174829 4436207515725 5 inst <- push1 + 0 174829 4436207515731 5 inst -> push1 + 0 174829 4436207515736 5 inst <- push1 + 0 174829 4436207515742 5 inst -> push1 + 0 174829 4436207515747 5 inst <- push1 + 0 174829 4436207515753 5 inst -> invokeStk1 + 0 174829 4436207515760 6 cmd -> info + 0 174829 4436207515787 27 cmd <- info + 0 174829 4436207515793 6 inst <- invokeStk1 + 0 174829 4436207515799 5 inst -> tryCvtToNumeric + 0 174829 4436207515805 5 inst <- tryCvtToNumeric + 0 174829 4436207515811 5 inst -> jumpFalse1 + 0 174829 4436207515817 5 inst <- jumpFalse1 + 0 174829 4436207515823 5 inst -> push1 + 0 174829 4436207515828 5 inst <- push1 + 0 174829 4436207515834 5 inst -> pop + 0 174829 4436207515839 5 inst <- pop + 0 174829 4436207515845 5 inst -> beginCatch4 + 0 174829 4436207515851 5 inst <- beginCatch4 + 0 174829 4436207515857 5 inst -> loadScalar1 + 0 174829 4436207515863 5 inst <- loadScalar1 + 0 174829 4436207515868 5 inst -> lappendScalar1 + 0 174829 4436207515877 8 inst <- lappendScalar1 + 0 174829 4436207515883 6 inst -> push1 + 0 174829 4436207515889 5 inst <- push1 + 0 174829 4436207515895 5 inst -> push1 + 0 174829 4436207515900 5 inst <- push1 + 0 174829 4436207515906 5 inst -> invokeStk1 + 0 174829 4436207515912 6 cmd -> unset + 0 174829 4436207515920 7 cmd <- unset + 0 174829 4436207515926 6 inst <- invokeStk1 + 0 174829 4436207515932 5 inst -> pop + 0 174829 4436207515938 5 inst <- pop + 0 174829 4436207515943 5 inst -> push1 + 0 174829 4436207515949 5 inst <- push1 + 0 174829 4436207515955 5 inst -> jump1 + 0 174829 4436207515960 5 inst <- jump1 + 0 174829 4436207515966 5 inst -> endCatch + 0 174829 4436207515972 5 inst <- endCatch + 0 174829 4436207515977 5 inst -> pop + 0 174829 4436207515983 5 inst <- pop + 0 174829 4436207515989 5 inst -> push1 + 0 174829 4436207515994 5 inst <- push1 + 0 174829 4436207516000 5 inst -> loadScalar1 + 0 174829 4436207516006 5 inst <- loadScalar1 + 0 174829 4436207516012 5 inst -> loadScalar1 + 0 174829 4436207516017 5 inst <- loadScalar1 + 0 174829 4436207516023 5 inst -> invokeStk1 + 0 174829 4436207516029 6 cmd -> concat + 0 174829 4436207516049 19 cmd <- concat + 0 174829 4436207516055 6 inst <- invokeStk1 + 0 174829 4436207516061 5 inst -> storeScalar1 + 0 174829 4436207516068 6 inst <- storeScalar1 + 0 174829 4436207516074 6 inst -> loadScalar1 + 0 174829 4436207516080 5 inst <- loadScalar1 + 0 174829 4436207516085 5 inst -> storeScalar1 + 0 174829 4436207516091 5 inst <- storeScalar1 + 0 174829 4436207516097 5 inst -> foreach_start4 + 0 174829 4436207516104 6 inst <- foreach_start4 + 0 174829 4436207516110 6 inst -> foreach_step4 + 0 174829 4436207516125 14 inst <- foreach_step4 + 0 174829 4436207516131 5 inst -> loadScalar1 + 0 174829 4436207516137 5 inst <- loadScalar1 + 0 174829 4436207516143 5 inst -> storeScalar1 + 0 174829 4436207516148 5 inst <- storeScalar1 + 0 174829 4436207516154 5 inst -> push1 + 0 174829 4436207516160 5 inst <- push1 + 0 174829 4436207516165 5 inst -> push1 + 0 174829 4436207516171 5 inst <- push1 + 0 174829 4436207516177 5 inst -> loadScalar1 + 0 174829 4436207516182 5 inst <- loadScalar1 + 0 174829 4436207516188 5 inst -> push1 + 0 174829 4436207516194 5 inst <- push1 + 0 174829 4436207516200 5 inst -> invokeStk1 + 0 174829 4436207516206 6 cmd -> file + 0 174829 4436207516218 12 cmd <- file + 0 174829 4436207516224 6 inst <- invokeStk1 + 0 174829 4436207516230 5 inst -> storeScalar1 + 0 174829 4436207516236 5 inst <- storeScalar1 + 0 174829 4436207516242 5 inst -> push1 + 0 174829 4436207516247 5 inst <- push1 + 0 174829 4436207516253 5 inst -> push1 + 0 174829 4436207516258 5 inst <- push1 + 0 174829 4436207516264 5 inst -> loadScalar1 + 0 174829 4436207516270 5 inst <- loadScalar1 + 0 174829 4436207516276 5 inst -> invokeStk1 + 0 174829 4436207516282 6 cmd -> file + 0 174829 4436207516368 86 cmd <- file + 0 174829 4436207516375 6 inst <- invokeStk1 + 0 174829 4436207516381 6 inst -> tryCvtToNumeric + 0 174829 4436207516387 5 inst <- tryCvtToNumeric + 0 174829 4436207516393 5 inst -> jumpFalse1 + 0 174829 4436207516398 5 inst <- jumpFalse1 + 0 174829 4436207516404 5 inst -> push1 + 0 174829 4436207516410 5 inst <- push1 + 0 174829 4436207516416 5 inst -> pop + 0 174829 4436207516421 5 inst <- pop + 0 174829 4436207516427 5 inst -> jump1 + 0 174829 4436207516432 5 inst <- jump1 + 0 174829 4436207516438 5 inst -> foreach_step4 + 0 174829 4436207516444 5 inst <- foreach_step4 + 0 174829 4436207516450 5 inst -> loadScalar1 + 0 174829 4436207516456 5 inst <- loadScalar1 + 0 174829 4436207516462 6 inst -> storeScalar1 + 0 174829 4436207516468 5 inst <- storeScalar1 + 0 174829 4436207516473 5 inst -> push1 + 0 174829 4436207516479 5 inst <- push1 + 0 174829 4436207516485 5 inst -> push1 + 0 174829 4436207516490 5 inst <- push1 + 0 174829 4436207516496 5 inst -> loadScalar1 + 0 174829 4436207516502 5 inst <- loadScalar1 + 0 174829 4436207516508 5 inst -> push1 + 0 174829 4436207516513 5 inst <- push1 + 0 174829 4436207516519 5 inst -> invokeStk1 + 0 174829 4436207516525 6 cmd -> file + 0 174829 4436207516536 10 cmd <- file + 0 174829 4436207516542 6 inst <- invokeStk1 + 0 174829 4436207516548 5 inst -> storeScalar1 + 0 174829 4436207516555 6 inst <- storeScalar1 + 0 174829 4436207516561 6 inst -> push1 + 0 174829 4436207516566 5 inst <- push1 + 0 174829 4436207516572 5 inst -> push1 + 0 174829 4436207516578 5 inst <- push1 + 0 174829 4436207516583 5 inst -> loadScalar1 + 0 174829 4436207516589 5 inst <- loadScalar1 + 0 174829 4436207516595 5 inst -> invokeStk1 + 0 174829 4436207516601 6 cmd -> file + 0 174829 4436207516709 107 cmd <- file + 0 174829 4436207516716 6 inst <- invokeStk1 + 0 174829 4436207516722 6 inst -> tryCvtToNumeric + 0 174829 4436207516728 5 inst <- tryCvtToNumeric + 0 174829 4436207516733 5 inst -> jumpFalse1 + 0 174829 4436207516739 5 inst <- jumpFalse1 + 0 174829 4436207516745 5 inst -> push1 + 0 174829 4436207516751 5 inst <- push1 + 0 174829 4436207516756 5 inst -> pop + 0 174829 4436207516762 5 inst <- pop + 0 174829 4436207516768 5 inst -> jump1 + 0 174829 4436207516773 5 inst <- jump1 + 0 174829 4436207516779 5 inst -> foreach_step4 + 0 174829 4436207516785 5 inst <- foreach_step4 + 0 174829 4436207516791 5 inst -> loadScalar1 + 0 174829 4436207516796 5 inst <- loadScalar1 + 0 174829 4436207516802 5 inst -> storeScalar1 + 0 174829 4436207516808 5 inst <- storeScalar1 + 0 174829 4436207516814 5 inst -> push1 + 0 174829 4436207516820 5 inst <- push1 + 0 174829 4436207516825 5 inst -> push1 + 0 174829 4436207516831 5 inst <- push1 + 0 174829 4436207516837 5 inst -> loadScalar1 + 0 174829 4436207516842 5 inst <- loadScalar1 + 0 174829 4436207516848 5 inst -> push1 + 0 174829 4436207516854 5 inst <- push1 + 0 174829 4436207516859 5 inst -> invokeStk1 + 0 174829 4436207516866 6 cmd -> file + 0 174829 4436207516876 10 cmd <- file + 0 174829 4436207516882 6 inst <- invokeStk1 + 0 174829 4436207516888 5 inst -> storeScalar1 + 0 174829 4436207516895 6 inst <- storeScalar1 + 0 174829 4436207516901 6 inst -> push1 + 0 174829 4436207516906 5 inst <- push1 + 0 174829 4436207516912 5 inst -> push1 + 0 174829 4436207516918 5 inst <- push1 + 0 174829 4436207516923 5 inst -> loadScalar1 + 0 174829 4436207516929 5 inst <- loadScalar1 + 0 174829 4436207516935 5 inst -> invokeStk1 + 0 174829 4436207516941 6 cmd -> file + 0 174829 4436207517027 86 cmd <- file + 0 174829 4436207517034 6 inst <- invokeStk1 + 0 174829 4436207517040 6 inst -> tryCvtToNumeric + 0 174829 4436207517046 5 inst <- tryCvtToNumeric + 0 174829 4436207517052 5 inst -> jumpFalse1 + 0 174829 4436207517057 5 inst <- jumpFalse1 + 0 174829 4436207517063 5 inst -> push1 + 0 174829 4436207517069 5 inst <- push1 + 0 174829 4436207517075 5 inst -> pop + 0 174829 4436207517080 5 inst <- pop + 0 174829 4436207517086 5 inst -> jump1 + 0 174829 4436207517091 5 inst <- jump1 + 0 174829 4436207517097 5 inst -> foreach_step4 + 0 174829 4436207517103 5 inst <- foreach_step4 + 0 174829 4436207517109 5 inst -> loadScalar1 + 0 174829 4436207517115 5 inst <- loadScalar1 + 0 174829 4436207517121 5 inst -> storeScalar1 + 0 174829 4436207517127 5 inst <- storeScalar1 + 0 174829 4436207517132 5 inst -> push1 + 0 174829 4436207517138 5 inst <- push1 + 0 174829 4436207517144 5 inst -> push1 + 0 174829 4436207517149 5 inst <- push1 + 0 174829 4436207517155 5 inst -> loadScalar1 + 0 174829 4436207517161 5 inst <- loadScalar1 + 0 174829 4436207517167 5 inst -> push1 + 0 174829 4436207517172 5 inst <- push1 + 0 174829 4436207517178 5 inst -> invokeStk1 + 0 174829 4436207517184 6 cmd -> file + 0 174829 4436207517194 10 cmd <- file + 0 174829 4436207517201 6 inst <- invokeStk1 + 0 174829 4436207517206 5 inst -> storeScalar1 + 0 174829 4436207517213 6 inst <- storeScalar1 + 0 174829 4436207517219 5 inst -> push1 + 0 174829 4436207517225 5 inst <- push1 + 0 174829 4436207517231 5 inst -> push1 + 0 174829 4436207517236 5 inst <- push1 + 0 174829 4436207517242 5 inst -> loadScalar1 + 0 174829 4436207517247 5 inst <- loadScalar1 + 0 174829 4436207517253 5 inst -> invokeStk1 + 0 174829 4436207517260 6 cmd -> file + 0 174829 4436207517313 53 cmd <- file + 0 174829 4436207517319 6 inst <- invokeStk1 + 0 174829 4436207517325 5 inst -> tryCvtToNumeric + 0 174829 4436207517331 6 inst <- tryCvtToNumeric + 0 174829 4436207517337 5 inst -> jumpFalse1 + 0 174829 4436207517343 5 inst <- jumpFalse1 + 0 174829 4436207517348 5 inst -> beginCatch4 + 0 174829 4436207517354 5 inst <- beginCatch4 + 0 174829 4436207517360 6 inst -> push1 + 0 174829 4436207517366 5 inst <- push1 + 0 174829 4436207517371 5 inst -> push1 + 0 174829 4436207517377 5 inst <- push1 + 0 174829 4436207517383 5 inst -> push1 + 0 174829 4436207517388 5 inst <- push1 + 0 174829 4436207517394 5 inst -> loadScalar1 + 0 174829 4436207517400 5 inst <- loadScalar1 + 0 174829 4436207517405 5 inst -> list + 0 174829 4436207517412 6 inst <- list + 0 174829 4436207517418 5 inst -> invokeStk1 + 0 174829 4436207517424 6 cmd -> uplevel + 0 174829 4436207517436 11 cmd -> source + 0 174829 4436207517878 441 cmd -> if + 0 174829 4436207517897 18 inst -> push1 + 0 174829 4436207517903 6 inst <- push1 + 0 174829 4436207517910 6 inst -> push1 + 0 174829 4436207517915 5 inst <- push1 + 0 174829 4436207517921 5 inst -> push1 + 0 174829 4436207517927 5 inst <- push1 + 0 174829 4436207517932 5 inst -> invokeStk1 + 0 174829 4436207517939 6 cmd -> info + 0 174829 4436207517947 8 cmd <- info + 0 174829 4436207517954 6 inst <- invokeStk1 + 0 174829 4436207517960 5 inst -> push1 + 0 174829 4436207517965 5 inst <- push1 + 0 174829 4436207517971 5 inst -> eq + 0 174829 4436207517979 7 inst <- eq + 0 174829 4436207517985 5 inst -> done + 0 174829 4436207517991 5 inst <- done + 0 174829 4436207517997 6 cmd <- if + 0 174829 4436207518010 12 cmd -> package + 0 174829 4436207518021 10 cmd <- package + 0 174829 4436207518034 13 cmd -> if + 0 174829 4436207518046 11 inst -> push1 + 0 174829 4436207518051 5 inst <- push1 + 0 174829 4436207518057 5 inst -> push1 + 0 174829 4436207518063 5 inst <- push1 + 0 174829 4436207518068 5 inst -> push1 + 0 174829 4436207518074 5 inst <- push1 + 0 174829 4436207518080 5 inst -> invokeStk1 + 0 174829 4436207518086 6 cmd -> info + 0 174829 4436207518094 7 cmd <- info + 0 174829 4436207518099 5 inst <- invokeStk1 + 0 174829 4436207518105 5 inst -> not + 0 174829 4436207518111 6 inst <- not + 0 174829 4436207518117 5 inst -> done + 0 174829 4436207518123 5 inst <- done + 0 174829 4436207518147 24 inst -> push1 + 0 174829 4436207518153 5 inst <- push1 + 0 174829 4436207518159 5 inst -> push1 + 0 174829 4436207518164 5 inst <- push1 + 0 174829 4436207518170 5 inst -> push1 + 0 174829 4436207518175 5 inst <- push1 + 0 174829 4436207518181 5 inst -> invokeStk1 + 0 174829 4436207518187 6 cmd -> info + 0 174829 4436207518212 25 cmd <- info + 0 174829 4436207518218 6 inst <- invokeStk1 + 0 174829 4436207518224 5 inst -> tryCvtToNumeric + 0 174829 4436207518230 5 inst <- tryCvtToNumeric + 0 174829 4436207518236 5 inst -> jumpFalse1 + 0 174829 4436207518242 5 inst <- jumpFalse1 + 0 174829 4436207518248 5 inst -> push1 + 0 174829 4436207518253 5 inst <- push1 + 0 174829 4436207518259 5 inst -> push1 + 0 174829 4436207518264 5 inst <- push1 + 0 174829 4436207518270 5 inst -> storeScalarStk + 0 174829 4436207518278 7 inst <- storeScalarStk + 0 174829 4436207518284 5 inst -> done + 0 174829 4436207518289 5 inst <- done + 0 174829 4436207518295 6 cmd <- if + 0 174829 4436207518315 19 cmd -> namespace + 0 174829 4436207518421 106 inst -> push1 + 0 174829 4436207518428 6 inst <- push1 + 0 174829 4436207518434 5 inst -> push1 + 0 174829 4436207518440 5 inst <- push1 + 0 174829 4436207518445 5 inst -> invokeStk1 + 0 174829 4436207518452 6 cmd -> variable + 0 174829 4436207518460 8 cmd <- variable + 0 174829 4436207518466 6 inst <- invokeStk1 + 0 174829 4436207518472 5 inst -> pop + 0 174829 4436207518477 5 inst <- pop + 0 174829 4436207518483 5 inst -> push1 + 0 174829 4436207518489 5 inst <- push1 + 0 174829 4436207518494 5 inst -> push1 + 0 174829 4436207518500 5 inst <- push1 + 0 174829 4436207518506 5 inst -> invokeStk1 + 0 174829 4436207518513 7 cmd -> info + 0 174829 4436207518526 13 cmd <- info + 0 174829 4436207518532 6 inst <- invokeStk1 + 0 174829 4436207518538 5 inst -> push1 + 0 174829 4436207518544 5 inst <- push1 + 0 174829 4436207518549 5 inst -> strneq + 0 174829 4436207518555 6 inst <- strneq + 0 174829 4436207518561 5 inst -> push1 + 0 174829 4436207518567 5 inst <- push1 + 0 174829 4436207518573 5 inst -> push1 + 0 174829 4436207518578 5 inst <- push1 + 0 174829 4436207518584 5 inst -> push1 + 0 174829 4436207518589 5 inst <- push1 + 0 174829 4436207518595 5 inst -> push1 + 0 174829 4436207518600 5 inst <- push1 + 0 174829 4436207518606 5 inst -> push1 + 0 174829 4436207518612 5 inst <- push1 + 0 174829 4436207518617 5 inst -> invokeStk1 + 0 174829 4436207518624 6 cmd -> info + 0 174829 4436207518631 7 cmd <- info + 0 174829 4436207518637 6 inst <- invokeStk1 + 0 174829 4436207518643 5 inst -> push1 + 0 174829 4436207518648 5 inst <- push1 + 0 174829 4436207518654 5 inst -> push1 + 0 174829 4436207518660 5 inst <- push1 + 0 174829 4436207518665 5 inst -> push1 + 0 174829 4436207518671 5 inst <- push1 + 0 174829 4436207518677 5 inst -> push1 + 0 174829 4436207518682 5 inst <- push1 + 0 174829 4436207518688 5 inst -> invokeStk1 + 0 174829 4436207518694 6 cmd -> info + 0 174829 4436207518701 7 cmd <- info + 0 174829 4436207518707 6 inst <- invokeStk1 + 0 174829 4436207518713 5 inst -> invokeStk1 + 0 174829 4436207518720 7 cmd -> file + 0 174829 4436207518741 20 cmd <- file + 0 174829 4436207518748 6 inst <- invokeStk1 + 0 174829 4436207518753 5 inst -> invokeStk1 + 0 174829 4436207518760 6 cmd -> list + 0 174829 4436207518768 8 cmd <- list + 0 174829 4436207518774 6 inst <- invokeStk1 + 0 174829 4436207518780 5 inst -> push1 + 0 174829 4436207518786 5 inst <- push1 + 0 174829 4436207518791 5 inst -> invokeStk1 + 0 174829 4436207518798 6 cmd -> foreach + 0 174829 4436207518821 23 inst -> push1 + 0 174829 4436207518827 6 inst <- push1 + 0 174829 4436207518833 5 inst -> push1 + 0 174829 4436207518839 5 inst <- push1 + 0 174829 4436207518844 5 inst -> push1 + 0 174829 4436207518850 5 inst <- push1 + 0 174829 4436207518856 5 inst -> loadScalarStk + 0 174829 4436207518862 6 inst <- loadScalarStk + 0 174829 4436207518868 5 inst -> push1 + 0 174829 4436207518874 5 inst <- push1 + 0 174829 4436207518879 5 inst -> loadScalarStk + 0 174829 4436207518886 6 inst <- loadScalarStk + 0 174829 4436207518892 5 inst -> invokeStk1 + 0 174829 4436207518898 6 cmd -> lsearch + 0 174829 4436207518906 8 cmd <- lsearch + 0 174829 4436207518913 6 inst <- invokeStk1 + 0 174829 4436207518918 5 inst -> push1 + 0 174829 4436207518924 5 inst <- push1 + 0 174829 4436207518930 5 inst -> lt + 0 174829 4436207518936 6 inst <- lt + 0 174829 4436207518942 5 inst -> push1 + 0 174829 4436207518947 5 inst <- push1 + 0 174829 4436207518953 5 inst -> push1 + 0 174829 4436207518958 5 inst <- push1 + 0 174829 4436207518964 5 inst -> push1 + 0 174829 4436207518969 5 inst <- push1 + 0 174829 4436207518975 5 inst -> loadScalarStk + 0 174829 4436207518981 6 inst <- loadScalarStk + 0 174829 4436207518987 5 inst -> invokeStk1 + 0 174829 4436207518993 6 cmd -> lappend + 0 174829 4436207519002 8 cmd <- lappend + 0 174829 4436207519008 6 inst <- invokeStk1 + 0 174829 4436207519013 5 inst -> jump1 + 0 174829 4436207519019 5 inst <- jump1 + 0 174829 4436207519025 5 inst -> done + 0 174829 4436207519030 5 inst <- done + 0 174829 4436207519038 8 inst -> push1 + 0 174829 4436207519044 5 inst <- push1 + 0 174829 4436207519050 5 inst -> push1 + 0 174829 4436207519055 5 inst <- push1 + 0 174829 4436207519061 5 inst -> push1 + 0 174829 4436207519066 5 inst <- push1 + 0 174829 4436207519072 5 inst -> loadScalarStk + 0 174829 4436207519078 5 inst <- loadScalarStk + 0 174829 4436207519084 5 inst -> push1 + 0 174829 4436207519090 5 inst <- push1 + 0 174829 4436207519095 5 inst -> loadScalarStk + 0 174829 4436207519102 6 inst <- loadScalarStk + 0 174829 4436207519108 5 inst -> invokeStk1 + 0 174829 4436207519114 6 cmd -> lsearch + 0 174829 4436207519120 6 cmd <- lsearch + 0 174829 4436207519126 5 inst <- invokeStk1 + 0 174829 4436207519132 5 inst -> push1 + 0 174829 4436207519138 5 inst <- push1 + 0 174829 4436207519143 5 inst -> lt + 0 174829 4436207519149 5 inst <- lt + 0 174829 4436207519155 5 inst -> push1 + 0 174829 4436207519160 5 inst <- push1 + 0 174829 4436207519166 5 inst -> push1 + 0 174829 4436207519171 5 inst <- push1 + 0 174829 4436207519177 5 inst -> push1 + 0 174829 4436207519182 5 inst <- push1 + 0 174829 4436207519188 5 inst -> loadScalarStk + 0 174829 4436207519194 5 inst <- loadScalarStk + 0 174829 4436207519200 5 inst -> invokeStk1 + 0 174829 4436207519206 6 cmd -> lappend + 0 174829 4436207519213 7 cmd <- lappend + 0 174829 4436207519219 6 inst <- invokeStk1 + 0 174829 4436207519225 5 inst -> jump1 + 0 174829 4436207519231 5 inst <- jump1 + 0 174829 4436207519236 5 inst -> done + 0 174829 4436207519242 5 inst <- done + 0 174829 4436207519248 6 cmd <- foreach + 0 174829 4436207519255 6 inst <- invokeStk1 + 0 174829 4436207519260 5 inst -> jump1 + 0 174829 4436207519266 5 inst <- jump1 + 0 174829 4436207519272 5 inst -> pop + 0 174829 4436207519277 5 inst <- pop + 0 174829 4436207519283 5 inst -> push1 + 0 174829 4436207519288 5 inst <- push1 + 0 174829 4436207519294 5 inst -> push1 + 0 174829 4436207519300 5 inst <- push1 + 0 174829 4436207519305 5 inst -> push1 + 0 174829 4436207519311 5 inst <- push1 + 0 174829 4436207519316 5 inst -> push1 + 0 174829 4436207519322 5 inst <- push1 + 0 174829 4436207519328 5 inst -> push1 + 0 174829 4436207519333 5 inst <- push1 + 0 174829 4436207519339 5 inst -> push1 + 0 174829 4436207519344 5 inst <- push1 + 0 174829 4436207519350 5 inst -> push1 + 0 174829 4436207519356 5 inst <- push1 + 0 174829 4436207519362 5 inst -> push1 + 0 174829 4436207519367 5 inst <- push1 + 0 174829 4436207519373 5 inst -> push1 + 0 174829 4436207519378 5 inst <- push1 + 0 174829 4436207519384 5 inst -> invokeStk1 + 0 174829 4436207519390 6 cmd -> info + 0 174829 4436207519399 8 cmd <- info + 0 174829 4436207519405 5 inst <- invokeStk1 + 0 174829 4436207519411 5 inst -> invokeStk1 + 0 174829 4436207519417 6 cmd -> file + 0 174829 4436207519435 18 cmd <- file + 0 174829 4436207519442 6 inst <- invokeStk1 + 0 174829 4436207519448 5 inst -> invokeStk1 + 0 174829 4436207519454 6 cmd -> file + 0 174829 4436207519471 17 cmd <- file + 0 174829 4436207519478 6 inst <- invokeStk1 + 0 174829 4436207519484 5 inst -> push1 + 0 174829 4436207519490 5 inst <- push1 + 0 174829 4436207519495 5 inst -> invokeStk1 + 0 174829 4436207519502 6 cmd -> file + 0 174829 4436207519512 9 cmd <- file + 0 174829 4436207519518 6 inst <- invokeStk1 + 0 174829 4436207519524 5 inst -> storeScalarStk + 0 174829 4436207519530 6 inst <- storeScalarStk + 0 174829 4436207519536 6 inst -> push1 + 0 174829 4436207519542 5 inst <- push1 + 0 174829 4436207519547 5 inst -> push1 + 0 174829 4436207519553 5 inst <- push1 + 0 174829 4436207519559 5 inst -> push1 + 0 174829 4436207519564 5 inst <- push1 + 0 174829 4436207519570 5 inst -> loadScalarStk + 0 174829 4436207519576 6 inst <- loadScalarStk + 0 174829 4436207519582 5 inst -> push1 + 0 174829 4436207519587 5 inst <- push1 + 0 174829 4436207519593 5 inst -> loadScalarStk + 0 174829 4436207519599 5 inst <- loadScalarStk + 0 174829 4436207519605 5 inst -> invokeStk1 + 0 174829 4436207519611 6 cmd -> lsearch + 0 174829 4436207519617 6 cmd <- lsearch + 0 174829 4436207519623 6 inst <- invokeStk1 + 0 174829 4436207519629 5 inst -> push1 + 0 174829 4436207519635 5 inst <- push1 + 0 174829 4436207519640 5 inst -> lt + 0 174829 4436207519646 5 inst <- lt + 0 174829 4436207519652 5 inst -> push1 + 0 174829 4436207519657 5 inst <- push1 + 0 174829 4436207519663 5 inst -> push1 + 0 174829 4436207519668 5 inst <- push1 + 0 174829 4436207519674 5 inst -> push1 + 0 174829 4436207519679 5 inst <- push1 + 0 174829 4436207519685 5 inst -> loadScalarStk + 0 174829 4436207519691 5 inst <- loadScalarStk + 0 174829 4436207519697 5 inst -> invokeStk1 + 0 174829 4436207519703 6 cmd -> lappend + 0 174829 4436207519710 6 cmd <- lappend + 0 174829 4436207519716 6 inst <- invokeStk1 + 0 174829 4436207519722 5 inst -> jump1 + 0 174829 4436207519727 5 inst <- jump1 + 0 174829 4436207519733 5 inst -> pop + 0 174829 4436207519739 5 inst <- pop + 0 174829 4436207519744 5 inst -> push1 + 0 174829 4436207519750 5 inst <- push1 + 0 174829 4436207519756 5 inst -> push1 + 0 174829 4436207519761 5 inst <- push1 + 0 174829 4436207519767 5 inst -> push1 + 0 174829 4436207519772 5 inst <- push1 + 0 174829 4436207519778 5 inst -> invokeStk1 + 0 174829 4436207519784 6 cmd -> info + 0 174829 4436207519791 6 cmd <- info + 0 174829 4436207519797 6 inst <- invokeStk1 + 0 174829 4436207519803 5 inst -> tryCvtToNumeric + 0 174829 4436207519809 5 inst <- tryCvtToNumeric + 0 174829 4436207519815 5 inst -> jumpFalse1 + 0 174829 4436207519820 5 inst <- jumpFalse1 + 0 174829 4436207519826 5 inst -> push1 + 0 174829 4436207519832 5 inst <- push1 + 0 174829 4436207519837 5 inst -> push1 + 0 174829 4436207519843 5 inst <- push1 + 0 174829 4436207519849 5 inst -> push1 + 0 174829 4436207519854 5 inst <- push1 + 0 174829 4436207519860 5 inst -> loadScalarStk + 0 174829 4436207519866 6 inst <- loadScalarStk + 0 174829 4436207519872 5 inst -> push1 + 0 174829 4436207519877 5 inst <- push1 + 0 174829 4436207519883 5 inst -> invokeStk1 + 0 174829 4436207519889 6 cmd -> foreach + 0 174829 4436207519899 9 inst -> push1 + 0 174829 4436207519904 5 inst <- push1 + 0 174829 4436207519910 5 inst -> push1 + 0 174829 4436207519915 5 inst <- push1 + 0 174829 4436207519921 5 inst -> push1 + 0 174829 4436207519927 5 inst <- push1 + 0 174829 4436207519932 5 inst -> loadScalarStk + 0 174829 4436207519938 6 inst <- loadScalarStk + 0 174829 4436207519944 5 inst -> push1 + 0 174829 4436207519950 5 inst <- push1 + 0 174829 4436207519955 5 inst -> loadScalarStk + 0 174829 4436207519962 6 inst <- loadScalarStk + 0 174829 4436207519968 5 inst -> invokeStk1 + 0 174829 4436207519974 6 cmd -> lsearch + 0 174829 4436207519980 6 cmd <- lsearch + 0 174829 4436207519986 6 inst <- invokeStk1 + 0 174829 4436207519992 5 inst -> push1 + 0 174829 4436207519998 5 inst <- push1 + 0 174829 4436207520003 5 inst -> lt + 0 174829 4436207520009 5 inst <- lt + 0 174829 4436207520015 5 inst -> push1 + 0 174829 4436207520020 5 inst <- push1 + 0 174829 4436207520026 5 inst -> push1 + 0 174829 4436207520031 5 inst <- push1 + 0 174829 4436207520037 5 inst -> push1 + 0 174829 4436207520043 5 inst <- push1 + 0 174829 4436207520048 5 inst -> loadScalarStk + 0 174829 4436207520054 5 inst <- loadScalarStk + 0 174829 4436207520060 5 inst -> invokeStk1 + 0 174829 4436207520066 6 cmd -> lappend + 0 174829 4436207520073 6 cmd <- lappend + 0 174829 4436207520079 5 inst <- invokeStk1 + 0 174829 4436207520085 5 inst -> jump1 + 0 174829 4436207520090 5 inst <- jump1 + 0 174829 4436207520096 5 inst -> done + 0 174829 4436207520102 5 inst <- done + 0 174829 4436207520108 6 cmd <- foreach + 0 174829 4436207520114 5 inst <- invokeStk1 + 0 174829 4436207520119 5 inst -> jump1 + 0 174829 4436207520125 5 inst <- jump1 + 0 174829 4436207520131 5 inst -> done + 0 174829 4436207520136 5 inst <- done + 0 174829 4436207520143 6 cmd <- namespace + 0 174829 4436207520171 28 cmd -> if + 0 174829 4436207520192 20 inst -> push1 + 0 174829 4436207520198 6 inst <- push1 + 0 174829 4436207520203 5 inst -> push1 + 0 174829 4436207520209 5 inst <- push1 + 0 174829 4436207520215 5 inst -> invokeStk1 + 0 174829 4436207520221 6 cmd -> interp + 0 174829 4436207520230 9 cmd <- interp + 0 174829 4436207520236 5 inst <- invokeStk1 + 0 174829 4436207520242 5 inst -> not + 0 174829 4436207520247 5 inst <- not + 0 174829 4436207520253 5 inst -> jumpTrue1 + 0 174829 4436207520259 5 inst <- jumpTrue1 + 0 174829 4436207520265 5 inst -> push1 + 0 174829 4436207520270 5 inst <- push1 + 0 174829 4436207520276 5 inst -> dup + 0 174829 4436207520281 5 inst <- dup + 0 174829 4436207520287 5 inst -> jumpFalse1 + 0 174829 4436207520293 5 inst <- jumpFalse1 + 0 174829 4436207520298 5 inst -> push1 + 0 174829 4436207520304 5 inst <- push1 + 0 174829 4436207520310 5 inst -> push1 + 0 174829 4436207520315 5 inst <- push1 + 0 174829 4436207520321 5 inst -> loadArrayStk + 0 174829 4436207520328 6 inst <- loadArrayStk + 0 174829 4436207520334 5 inst -> push1 + 0 174829 4436207520339 5 inst <- push1 + 0 174829 4436207520345 5 inst -> streq + 0 174829 4436207520351 5 inst <- streq + 0 174829 4436207520357 5 inst -> land + 0 174829 4436207520363 6 inst <- land + 0 174829 4436207520368 5 inst -> done + 0 174829 4436207520374 5 inst <- done + 0 174829 4436207520381 6 cmd <- if + 0 174829 4436207520394 13 cmd -> package + 0 174829 4436207520401 6 cmd <- package + 0 174829 4436207520413 11 cmd -> if + 0 174829 4436207520424 11 inst -> push1 + 0 174829 4436207520429 5 inst <- push1 + 0 174829 4436207520435 5 inst -> push1 + 0 174829 4436207520441 5 inst <- push1 + 0 174829 4436207520446 5 inst -> invokeStk1 + 0 174829 4436207520453 6 cmd -> interp + 0 174829 4436207520459 6 cmd <- interp + 0 174829 4436207520465 5 inst <- invokeStk1 + 0 174829 4436207520471 5 inst -> not + 0 174829 4436207520476 5 inst <- not + 0 174829 4436207520482 5 inst -> done + 0 174829 4436207520488 5 inst <- done + 0 174829 4436207520527 39 inst -> push1 + 0 174829 4436207520533 5 inst <- push1 + 0 174829 4436207520539 5 inst -> push1 + 0 174829 4436207520544 5 inst <- push1 + 0 174829 4436207520550 5 inst -> loadArrayStk + 0 174829 4436207520557 6 inst <- loadArrayStk + 0 174829 4436207520563 5 inst -> push1 + 0 174829 4436207520568 5 inst <- push1 + 0 174829 4436207520574 5 inst -> streq + 0 174829 4436207520580 5 inst <- streq + 0 174829 4436207520586 5 inst -> push1 + 0 174829 4436207520591 5 inst <- push1 + 0 174829 4436207520597 5 inst -> dup + 0 174829 4436207520602 5 inst <- dup + 0 174829 4436207520608 5 inst -> jumpFalse1 + 0 174829 4436207520614 5 inst <- jumpFalse1 + 0 174829 4436207520619 5 inst -> push1 + 0 174829 4436207520625 5 inst <- push1 + 0 174829 4436207520631 5 inst -> push1 + 0 174829 4436207520636 5 inst <- push1 + 0 174829 4436207520642 5 inst -> loadArrayStk + 0 174829 4436207520648 6 inst <- loadArrayStk + 0 174829 4436207520654 5 inst -> push1 + 0 174829 4436207520660 5 inst <- push1 + 0 174829 4436207520665 5 inst -> streq + 0 174829 4436207520671 5 inst <- streq + 0 174829 4436207520677 5 inst -> land + 0 174829 4436207520682 5 inst <- land + 0 174829 4436207520688 5 inst -> jumpFalse1 + 0 174829 4436207520694 5 inst <- jumpFalse1 + 0 174829 4436207520700 5 inst -> push1 + 0 174829 4436207520705 5 inst <- push1 + 0 174829 4436207520711 5 inst -> pop + 0 174829 4436207520716 5 inst <- pop + 0 174829 4436207520722 5 inst -> push1 + 0 174829 4436207520728 5 inst <- push1 + 0 174829 4436207520733 5 inst -> push1 + 0 174829 4436207520739 5 inst <- push1 + 0 174829 4436207520744 5 inst -> loadArrayStk + 0 174829 4436207520751 6 inst <- loadArrayStk + 0 174829 4436207520757 5 inst -> push1 + 0 174829 4436207520762 5 inst <- push1 + 0 174829 4436207520768 5 inst -> streq + 0 174829 4436207520773 5 inst <- streq + 0 174829 4436207520779 5 inst -> push1 + 0 174829 4436207520785 5 inst <- push1 + 0 174829 4436207520791 5 inst -> done + 0 174829 4436207520796 5 inst <- done + 0 174829 4436207520802 6 cmd <- if + 0 174829 4436207520822 19 cmd -> if + 0 174829 4436207520835 13 inst -> push1 + 0 174829 4436207520841 5 inst <- push1 + 0 174829 4436207520847 5 inst -> push1 + 0 174829 4436207520852 5 inst <- push1 + 0 174829 4436207520858 5 inst -> push1 + 0 174829 4436207520864 5 inst <- push1 + 0 174829 4436207520869 5 inst -> push1 + 0 174829 4436207520875 5 inst <- push1 + 0 174829 4436207520881 5 inst -> invokeStk1 + 0 174829 4436207520887 6 cmd -> namespace + 0 174829 4436207520896 8 cmd <- namespace + 0 174829 4436207520902 6 inst <- invokeStk1 + 0 174829 4436207520908 5 inst -> push1 + 0 174829 4436207520913 5 inst <- push1 + 0 174829 4436207520919 5 inst -> streq + 0 174829 4436207520925 6 inst <- streq + 0 174829 4436207520931 5 inst -> done + 0 174829 4436207520936 5 inst <- done + 0 174829 4436207520942 6 cmd <- if + 0 174829 4436207521503 560 cmd -> set + 0 174829 4436207521515 11 cmd <- set + 0 174829 4436207521524 9 cmd -> set + 0 174829 4436207521531 6 cmd <- set + 0 174829 4436207521541 10 cmd -> if + 0 174829 4436207521559 17 inst -> push1 + 0 174829 4436207521566 7 inst <- push1 + 0 174829 4436207521573 6 inst -> push1 + 0 174829 4436207521578 5 inst <- push1 + 0 174829 4436207521584 5 inst -> push1 + 0 174829 4436207521590 5 inst <- push1 + 0 174829 4436207521596 5 inst -> push1 + 0 174829 4436207521601 5 inst <- push1 + 0 174829 4436207521607 5 inst -> invokeStk1 + 0 174829 4436207521613 6 cmd -> namespace + 0 174829 4436207521621 7 cmd <- namespace + 0 174829 4436207521627 6 inst <- invokeStk1 + 0 174829 4436207521633 5 inst -> push1 + 0 174829 4436207521639 5 inst <- push1 + 0 174829 4436207521644 5 inst -> streq + 0 174829 4436207521650 5 inst <- streq + 0 174829 4436207521656 5 inst -> done + 0 174829 4436207521662 5 inst <- done + 0 174829 4436207521674 11 inst -> push1 + 0 174829 4436207521679 5 inst <- push1 + 0 174829 4436207521685 5 inst -> push1 + 0 174829 4436207521691 5 inst <- push1 + 0 174829 4436207521697 5 inst -> push1 + 0 174829 4436207521702 5 inst <- push1 + 0 174829 4436207521708 5 inst -> push1 + 0 174829 4436207521714 5 inst <- push1 + 0 174829 4436207521720 5 inst -> invokeStk1 + 0 174829 4436207521726 6 cmd -> proc + 0 174829 4436207521738 12 cmd <- proc + 0 174829 4436207521744 6 inst <- invokeStk1 + 0 174829 4436207521750 5 inst -> done + 0 174829 4436207521756 5 inst <- done + 0 174829 4436207521762 6 cmd <- if + 0 174829 4436207521862 99 cmd -> proc + 0 174829 4436207521872 10 cmd <- proc + 0 174829 4436207521891 19 cmd -> proc + 0 174829 4436207521902 10 cmd <- proc + 0 174829 4436207521932 30 cmd -> proc + 0 174829 4436207521941 8 cmd <- proc + 0 174829 4436207521961 19 cmd -> proc + 0 174829 4436207521970 9 cmd <- proc + 0 174829 4436207521985 14 cmd -> proc + 0 174829 4436207521994 8 cmd <- proc + 0 174829 4436207522039 45 cmd -> if + 0 174829 4436207522053 14 inst -> push1 + 0 174829 4436207522059 5 inst <- push1 + 0 174829 4436207522065 6 inst -> push1 + 0 174829 4436207522070 5 inst <- push1 + 0 174829 4436207522076 5 inst -> loadArrayStk + 0 174829 4436207522083 7 inst <- loadArrayStk + 0 174829 4436207522089 5 inst -> push1 + 0 174829 4436207522094 5 inst <- push1 + 0 174829 4436207522100 5 inst -> streq + 0 174829 4436207522106 5 inst <- streq + 0 174829 4436207522112 5 inst -> done + 0 174829 4436207522117 5 inst <- done + 0 174829 4436207522134 16 inst -> push1 + 0 174829 4436207522140 5 inst <- push1 + 0 174829 4436207522146 5 inst -> push1 + 0 174829 4436207522151 5 inst <- push1 + 0 174829 4436207522157 5 inst -> push1 + 0 174829 4436207522163 5 inst <- push1 + 0 174829 4436207522168 5 inst -> push1 + 0 174829 4436207522174 5 inst <- push1 + 0 174829 4436207522180 5 inst -> invokeStk1 + 0 174829 4436207522186 6 cmd -> proc + 0 174829 4436207522205 19 cmd <- proc + 0 174829 4436207522212 6 inst <- invokeStk1 + 0 174829 4436207522218 5 inst -> done + 0 174829 4436207522223 5 inst <- done + 0 174829 4436207522230 6 cmd <- if + 0 174829 4436207522274 44 cmd -> proc + 0 174829 4436207522286 11 cmd <- proc + 0 174829 4436207522294 8 cmd <- source + 0 174829 4436207522301 6 cmd <- uplevel + 0 174829 4436207522307 6 inst <- invokeStk1 + 0 174829 4436207522313 6 inst -> storeScalar1 + 0 174829 4436207522319 5 inst <- storeScalar1 + 0 174829 4436207522325 5 inst -> push1 + 0 174829 4436207522331 5 inst <- push1 + 0 174829 4436207522337 5 inst -> jump1 + 0 174829 4436207522342 5 inst <- jump1 + 0 174829 4436207522348 5 inst -> endCatch + 0 174829 4436207522354 5 inst <- endCatch + 0 174829 4436207522360 5 inst -> not + 0 174829 4436207522366 5 inst <- not + 0 174829 4436207522371 5 inst -> jumpFalse1 + 0 174829 4436207522377 5 inst <- jumpFalse1 + 0 174829 4436207522383 5 inst -> push1 + 0 174829 4436207522389 5 inst <- push1 + 0 174829 4436207522394 5 inst -> done + 0 174829 4436207522400 5 inst <- done + 0 174829 4436207522409 8 proc <- tclInit + 0 174829 4436207522426 17 cmd <- tclInit + 0 174829 4436207522671 245 cmd -> proc + 0 174829 4436207522681 9 cmd <- proc + 0 174829 4436207522691 9 cmd -> proc + 0 174829 4436207522698 7 cmd <- proc + 0 174829 4436207522708 9 cmd -> proc + 0 174829 4436207522715 7 cmd <- proc + 0 174829 4436207522723 8 cmd -> func_a + 0 174829 4436207522742 18 proc -> func_a + 0 174829 4436207522752 10 inst -> push1 + 0 174829 4436207522757 5 inst <- push1 + 0 174829 4436207522763 5 inst -> push1 + 0 174829 4436207522769 5 inst <- push1 + 0 174829 4436207522775 5 inst -> invokeStk1 + 0 174829 4436207522781 6 cmd -> puts + 0 174829 4436207523212 430 cmd <- puts + 0 174829 4436207523266 54 inst <- invokeStk1 + 0 174829 4436207523275 8 inst -> pop + 0 174829 4436207523281 6 inst <- pop + 0 174829 4436207523287 5 inst -> push1 + 0 174829 4436207523292 5 inst <- push1 + 0 174829 4436207523298 5 inst -> push1 + 0 174829 4436207523304 5 inst <- push1 + 0 174829 4436207523310 5 inst -> invokeStk1 + 0 174829 4436207523318 7 cmd -> after + 0 174829 4436208530951 1007632 cmd <- after + 0 174829 4436208530972 21 inst <- invokeStk1 + 0 174829 4436208530984 12 inst -> pop + 0 174829 4436208530993 9 inst <- pop + 0 174829 4436208530999 5 inst -> push1 + 0 174829 4436208531005 5 inst <- push1 + 0 174829 4436208531010 5 inst -> invokeStk1 + 0 174829 4436208531021 10 cmd -> func_b + 0 174829 4436208531057 35 proc -> func_b + 0 174829 4436208531067 10 inst -> push1 + 0 174829 4436208531073 5 inst <- push1 + 0 174829 4436208531079 5 inst -> push1 + 0 174829 4436208531084 5 inst <- push1 + 0 174829 4436208531090 5 inst -> invokeStk1 + 0 174829 4436208531096 6 cmd -> puts + 0 174829 4436208531137 40 cmd <- puts + 0 174829 4436208531144 6 inst <- invokeStk1 + 0 174829 4436208531150 5 inst -> pop + 0 174829 4436208531155 5 inst <- pop + 0 174829 4436208531161 5 inst -> push1 + 0 174829 4436208531166 5 inst <- push1 + 0 174829 4436208531172 5 inst -> push1 + 0 174829 4436208531178 5 inst <- push1 + 0 174829 4436208531184 5 inst -> invokeStk1 + 0 174829 4436208531190 6 cmd -> after + 0 174829 4436209540924 1009734 cmd <- after + 0 174829 4436209540946 21 inst <- invokeStk1 + 0 174829 4436209540957 11 inst -> pop + 0 174829 4436209540967 9 inst <- pop + 0 174829 4436209540973 5 inst -> push1 + 0 174829 4436209540978 5 inst <- push1 + 0 174829 4436209540984 5 inst -> invokeStk1 + 0 174829 4436209540995 10 cmd -> func_c + 0 174829 4436209541029 34 proc -> func_c + 0 174829 4436209541039 10 inst -> push1 + 0 174829 4436209541045 5 inst <- push1 + 0 174829 4436209541051 5 inst -> push1 + 0 174829 4436209541056 5 inst <- push1 + 0 174829 4436209541062 5 inst -> invokeStk1 + 0 174829 4436209541068 6 cmd -> puts + 0 174829 4436209541111 42 cmd <- puts + 0 174829 4436209541118 7 inst <- invokeStk1 + 0 174829 4436209541124 5 inst -> pop + 0 174829 4436209541129 5 inst <- pop + 0 174829 4436209541135 5 inst -> push1 + 0 174829 4436209541141 5 inst <- push1 + 0 174829 4436209541147 5 inst -> push1 + 0 174829 4436209541153 5 inst <- push1 + 0 174829 4436209541158 5 inst -> invokeStk1 + 0 174829 4436209541165 6 cmd -> after + 0 174829 4436210550785 1009619 cmd <- after + 0 174829 4436210550807 22 inst <- invokeStk1 + 0 174829 4436210550819 11 inst -> done + 0 174829 4436210550830 10 inst <- done + 0 174829 4436210550839 9 proc <- func_c + 0 174829 4436210550850 11 cmd <- func_c + 0 174829 4436210550856 6 inst <- invokeStk1 + 0 174829 4436210550862 5 inst -> done + 0 174829 4436210550868 5 inst <- done + 0 174829 4436210550874 6 proc <- func_b + 0 174829 4436210550880 6 cmd <- func_b + 0 174829 4436210550887 6 inst <- invokeStk1 + 0 174829 4436210550892 5 inst -> done + 0 174829 4436210550898 5 inst <- done + 0 174829 4436210550904 6 proc <- func_a + 0 174829 4436210550911 6 cmd <- func_a + 0 174829 4436210550938 27 cmd -> exit + +As you can see the output is quite long, and in seven columns. The first +column is the CPU the action is on. The second is the PID. The third is the +time since boot in microseconds. + +The fourth column is the number of microseconds that has elapsed between the +previous line and the current one. + +The fifth column is the type of event that occurred (procedure, command or +instruction). + +The sixth and seventh columns are indented by 2 spaces to show when a new +event occurs. This shows us which command is calling which. + +If the output looks strange, check the CPU "C" column - if it changes, +then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for +details and suggested workarounds. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_proccalls_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_proccalls_example.txt new file mode 100644 index 000000000000..ed6820dddfb7 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_proccalls_example.txt @@ -0,0 +1,17 @@ +Following are examples of running tcl_proccalls.d. + +The output shows what happens when the code from Code/Tcl/func_abc.tcl is +traced. + +# tcl_proccalls.d +Tracing... Hit Ctrl-C to end. +^C + PID COUNT PROCEDURE + 16078 1 func_a + 16078 1 func_b + 16078 1 func_c + 16078 1 tclInit + +This simple output shows that PID 16078 was responsible for four procedures +beginning, one each of func_a, func_b, func_c, and tclInit. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_procflow_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_procflow_example.txt new file mode 100644 index 000000000000..93b822ec3eb6 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_procflow_example.txt @@ -0,0 +1,29 @@ +The following are examples of tcl_procflow.d. + +This is a simple script to trace the flow of Tcl procedures. + +Here it traces the example program, Code/Tcl/func_abc.tcl. + +# tcl_procflow.d + C PID TIME(us) -- PROCEDURE + 0 16073 3904971507502 -> tclInit + 0 16073 3904971509096 <- tclInit + 0 16073 3904971509305 -> func_a + 0 16073 3904972511039 -> func_b + 0 16073 3904973521023 -> func_c + 0 16073 3904974530998 <- func_c + 0 16073 3904974531008 <- func_b + 0 16073 3904974531014 <- func_a +^C + +As each procedure starts, the third column is indented by 2 spaces. This +shows which procedure is calling which - the output above begins with an init +procedure and then shows that func_a began, and then called func_b. + +The columns are CPU, PID, Time since boot, indicator and procedure name. + +If the output looks shuffled, check the CPU "C" and "TIME" columns, and +post sort based on TIME if necessary. + +See Notes/ALLflow_notes.txt for important notes about reading flow outputs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_stat_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_stat_example.txt new file mode 100644 index 000000000000..178fef10b197 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_stat_example.txt @@ -0,0 +1,24 @@ +Following are examples of running tcl_stat.d on Tcl programs. + +tcl_stat.d shows you the number of events per second that have happened since +the last line output. The default interval is 1 second, but you can specify +other intervals as arguments to the script. + +This shows the sh_stat.d script reflecting the Code/Tcl/func_abc.tcl program. + +# tcl_stat.d +TIME EXEC/s PROC/s CMD/s OBJNEW/s OBJFRE/s OP/s +2007 Sep 26 23:34:36 0 0 0 0 0 0 +2007 Sep 26 23:34:37 1 2 75 911 805 377 +2007 Sep 26 23:34:38 0 1 3 4 2 10 +2007 Sep 26 23:34:39 0 1 3 3 2 10 +2007 Sep 26 23:34:40 0 0 1 7 8 3 +2007 Sep 26 23:34:41 0 0 0 0 0 0 +2007 Sep 26 23:34:42 0 0 0 0 0 0 +^C + + At 2007 Sep 26 23:34:37 we can see that there was one Tcl program executed +(this number may include those programs without Tcl provider support), two +procedures called, 75 new commands created, 911 objects created, 805 objects +freed, and 377 bytecode operations. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_syscalls_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_syscalls_example.txt new file mode 100644 index 000000000000..5553b1c6a8c4 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_syscalls_example.txt @@ -0,0 +1,66 @@ +The following are examples of sh_syscalls.d. + +This is a simple script to count Tcl commands, procedures and system calls. + +Here we trace an example program - Code/Tcl/func_abc.tcl. + +# tcl_syscalls.d -c './tclsh func_abc.tcl ' +Tracing... Hit Ctrl-C to end. +Function A +Function B +Function C + PID TYPE NAME COUNT + 16580 cmd concat 1 + 16580 cmd exit 1 + 16580 cmd func_a 1 + 16580 cmd func_b 1 + 16580 cmd func_c 1 + 16580 cmd list 1 + 16580 cmd rename 1 + 16580 cmd source 1 + 16580 cmd tclInit 1 + 16580 cmd unset 1 + 16580 cmd uplevel 1 + 16580 cmd variable 1 + 16580 proc func_a 1 + 16580 proc func_b 1 + 16580 proc func_c 1 + 16580 proc tclInit 1 + 16580 syscall getpid 1 + 16580 syscall getrlimit 1 + 16580 syscall mmap 1 + 16580 syscall munmap 1 + 16580 syscall rexit 1 + 16580 syscall sigaction 1 + 16580 syscall sigpending 1 + 16580 syscall sysi86 1 + 16580 syscall uname 1 + 16580 cmd foreach 2 + 16580 cmd global 2 + 16580 cmd interp 2 + 16580 cmd package 2 + 16580 cmd set 2 + 16580 syscall setcontext 2 + 16580 syscall stat64 2 + 16580 syscall sysconfig 2 + 16580 cmd after 3 + 16580 cmd namespace 3 + 16580 cmd puts 3 + 16580 syscall pollsys 3 + 16580 syscall write 3 + 16580 cmd lappend 4 + 16580 cmd lsearch 4 + 16580 syscall close 5 + 16580 syscall llseek 6 + 16580 cmd if 8 + 16580 cmd info 11 + 16580 syscall read 11 + 16580 cmd file 12 + 16580 cmd proc 12 + 16580 syscall fcntl 12 + 16580 syscall ioctl 12 + 16580 syscall open64 14 + 16580 syscall resolvepath 25 + 16580 syscall brk 27 + 16580 syscall access 54 + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_syscolors_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_syscolors_example.txt new file mode 100644 index 000000000000..b5929867eab9 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_syscolors_example.txt @@ -0,0 +1,563 @@ +The following are examples of tcl_syscolors.d. + +This is a simple script to trace the flow of Tcl processes, Tcl commands and +system calls made, and renders the output in color ("colour") using terminal +escape sequences (which you can tweak by modifying the script). + +Here it traces the example program, Code/Tcl/func_abc.tcl. + +WARNING: This output is full of terminal escape sequences, so if you are +trying to view this through an editor or web browser - it may look awful. +Try viewing this using "more" (although, depending on your terminal, it +still may look awful). + +# tcl_syscolors.d -c './tclsh func_abc.tcl +Function A + C PID DELTA(us) TYPE -- NAME +[2;32m 0 16624 2 syscall -> munmap[0m +[2;32m 0 16624 31 syscall <- munmap[0m +[2;32m 0 16624 52 syscall -> mmap[0m +[2;32m 0 16624 21 syscall <- mmap[0m +[2;32m 0 16624 38 syscall -> setcontext[0m +[2;32m 0 16624 8 syscall <- setcontext[0m +[2;32m 0 16624 8 syscall -> getrlimit[0m +[2;32m 0 16624 9 syscall <- getrlimit[0m +[2;32m 0 16624 8 syscall -> getpid[0m +[2;32m 0 16624 7 syscall <- getpid[0m +[2;32m 0 16624 68 syscall -> setcontext[0m +[2;32m 0 16624 7 syscall <- setcontext[0m +[2;32m 0 16624 177 syscall -> sigpending[0m +[2;32m 0 16624 8 syscall <- sigpending[0m +[2;32m 0 16624 88 syscall -> sysconfig[0m +[2;32m 0 16624 7 syscall <- sysconfig[0m +[2;32m 0 16624 107 syscall -> open64[0m +[2;32m 0 16624 115 syscall <- open64[0m +[2;32m 0 16624 13 syscall -> ioctl[0m +[2;32m 0 16624 64 syscall <- ioctl[0m +[2;32m 0 16624 16 syscall -> close[0m +[2;32m 0 16624 17 syscall <- close[0m +[2;32m 0 16624 1208 syscall -> sysi86[0m +[2;32m 0 16624 9 syscall <- sysi86[0m +[2;32m 0 16624 146 syscall -> llseek[0m +[2;32m 0 16624 10 syscall <- llseek[0m +[2;32m 0 16624 7 syscall -> llseek[0m +[2;32m 0 16624 7 syscall <- llseek[0m +[2;32m 0 16624 7 syscall -> llseek[0m +[2;32m 0 16624 6 syscall <- llseek[0m +[2;32m 0 16624 24 syscall -> sigaction[0m +[2;32m 0 16624 8 syscall <- sigaction[0m +[2;32m 0 16624 63 syscall -> brk[0m +[2;32m 0 16624 9 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 14 syscall <- brk[0m +[2;32m 0 16624 76 syscall -> brk[0m +[2;32m 0 16624 7 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 12 syscall <- brk[0m +[2;32m 0 16624 328 syscall -> resolvepath[0m +[2;32m 0 16624 35 syscall <- resolvepath[0m +[2;32m 0 16624 24 syscall -> access[0m +[2;32m 0 16624 10 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 10 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 11 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 13 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 14 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 16 syscall <- access[0m +[2;32m 0 16624 7 syscall -> resolvepath[0m +[2;32m 0 16624 17 syscall <- resolvepath[0m +[2;32m 0 16624 32 syscall -> open64[0m +[2;32m 0 16624 22 syscall <- open64[0m +[2;32m 0 16624 32 syscall -> resolvepath[0m +[2;32m 0 16624 18 syscall <- resolvepath[0m +[2;32m 0 16624 8 syscall -> access[0m +[2;32m 0 16624 8 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 9 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 11 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 12 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 14 syscall <- access[0m +[2;32m 0 16624 7 syscall -> resolvepath[0m +[2;32m 0 16624 15 syscall <- resolvepath[0m +[2;32m 0 16624 11 syscall -> open64[0m +[2;32m 0 16624 16 syscall <- open64[0m +[2;32m 0 16624 30 syscall -> resolvepath[0m +[2;32m 0 16624 23 syscall <- resolvepath[0m +[2;32m 0 16624 11 syscall -> open64[0m +[2;32m 0 16624 21 syscall <- open64[0m +[2;32m 0 16624 29 syscall -> resolvepath[0m +[2;32m 0 16624 17 syscall <- resolvepath[0m +[2;32m 0 16624 8 syscall -> access[0m +[2;32m 0 16624 8 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 9 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 11 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 12 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 14 syscall <- access[0m +[2;32m 0 16624 7 syscall -> resolvepath[0m +[2;32m 0 16624 15 syscall <- resolvepath[0m +[2;32m 0 16624 11 syscall -> open64[0m +[2;32m 0 16624 15 syscall <- open64[0m +[2;32m 0 16624 30 syscall -> resolvepath[0m +[2;32m 0 16624 20 syscall <- resolvepath[0m +[2;32m 0 16624 11 syscall -> open64[0m +[2;32m 0 16624 20 syscall <- open64[0m +[2;32m 0 16624 29 syscall -> resolvepath[0m +[2;32m 0 16624 16 syscall <- resolvepath[0m +[2;32m 0 16624 8 syscall -> access[0m +[2;32m 0 16624 8 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 10 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 11 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 12 syscall <- access[0m +[2;32m 0 16624 7 syscall -> resolvepath[0m +[2;32m 0 16624 14 syscall <- resolvepath[0m +[2;32m 0 16624 11 syscall -> open64[0m +[2;32m 0 16624 14 syscall <- open64[0m +[2;32m 0 16624 28 syscall -> resolvepath[0m +[2;32m 0 16624 20 syscall <- resolvepath[0m +[2;32m 0 16624 8 syscall -> access[0m +[2;32m 0 16624 8 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 9 syscall <- access[0m +[2;32m 0 16624 43 syscall -> access[0m +[2;32m 0 16624 12 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 13 syscall <- access[0m +[2;32m 0 16624 7 syscall -> resolvepath[0m +[2;32m 0 16624 13 syscall <- resolvepath[0m +[2;32m 0 16624 11 syscall -> open64[0m +[2;32m 0 16624 14 syscall <- open64[0m +[2;32m 0 16624 10 syscall -> sysconfig[0m +[2;32m 0 16624 7 syscall <- sysconfig[0m +[2;32m 0 16624 33 syscall -> resolvepath[0m +[2;32m 0 16624 19 syscall <- resolvepath[0m +[2;32m 0 16624 8 syscall -> access[0m +[2;32m 0 16624 8 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 9 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 11 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 13 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 14 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 15 syscall <- access[0m +[2;32m 0 16624 7 syscall -> resolvepath[0m +[2;32m 0 16624 17 syscall <- resolvepath[0m +[2;32m 0 16624 11 syscall -> open64[0m +[2;32m 0 16624 18 syscall <- open64[0m +[2;32m 0 16624 30 syscall -> resolvepath[0m +[2;32m 0 16624 17 syscall <- resolvepath[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 8 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 9 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 11 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 12 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 14 syscall <- access[0m +[2;32m 0 16624 7 syscall -> resolvepath[0m +[2;32m 0 16624 15 syscall <- resolvepath[0m +[2;32m 0 16624 11 syscall -> open64[0m +[2;32m 0 16624 16 syscall <- open64[0m +[2;32m 0 16624 30 syscall -> resolvepath[0m +[2;32m 0 16624 21 syscall <- resolvepath[0m +[2;32m 0 16624 11 syscall -> open64[0m +[2;32m 0 16624 25 syscall <- open64[0m +[2;32m 0 16624 15 syscall -> fcntl[0m +[2;32m 0 16624 7 syscall <- fcntl[0m +[2;32m 0 16624 31 syscall -> ioctl[0m +[2;32m 0 16624 8 syscall <- ioctl[0m +[2;32m 0 16624 49 syscall -> brk[0m +[2;32m 0 16624 8 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 11 syscall <- brk[0m +[2;32m 0 16624 30 syscall -> read[0m +[2;32m 0 16624 35 syscall <- read[0m +[2;32m 0 16624 54 syscall -> read[0m +[2;32m 0 16624 8 syscall <- read[0m +[2;32m 0 16624 21 syscall -> close[0m +[2;32m 0 16624 10 syscall <- close[0m +[2;32m 0 16624 51 syscall -> brk[0m +[2;32m 0 16624 7 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 9 syscall <- brk[0m +[2;32m 0 16624 111 syscall -> brk[0m +[2;32m 0 16624 7 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 8 syscall <- brk[0m +[2;32m 0 16624 94 syscall -> uname[0m +[2;32m 0 16624 8 syscall <- uname[0m +[2;32m 0 16624 47 syscall -> ioctl[0m +[2;32m 0 16624 35 syscall <- ioctl[0m +[2;35m 0 16624 73 cmd -> if[0m +[2;35m 0 16624 89 cmd -> info[0m +[2;35m 0 16624 25 cmd <- info[0m +[2;35m 0 16624 46 cmd -> proc[0m +[2;32m 0 16624 11 syscall -> brk[0m +[2;32m 0 16624 7 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 9 syscall <- brk[0m +[2;35m 0 16624 23 cmd <- proc[0m +[2;35m 0 16624 9 cmd <- if[0m +[2;35m 0 16624 18 cmd -> tclInit[0m +[2;35m 0 16624 223 proc -> tclInit[0m +[2;35m 0 16624 12 cmd -> global[0m +[2;35m 0 16624 12 cmd <- global[0m +[2;35m 0 16624 9 cmd -> global[0m +[2;35m 0 16624 9 cmd <- global[0m +[2;35m 0 16624 8 cmd -> rename[0m +[2;35m 0 16624 24 cmd <- rename[0m +[2;35m 0 16624 13 cmd -> info[0m +[2;35m 0 16624 12 cmd <- info[0m +[2;35m 0 16624 13 cmd -> info[0m +[2;35m 0 16624 19 cmd <- info[0m +[2;35m 0 16624 11 cmd -> unset[0m +[2;35m 0 16624 13 cmd <- unset[0m +[2;35m 0 16624 9 cmd -> concat[0m +[2;35m 0 16624 15 cmd <- concat[0m +[2;35m 0 16624 18 cmd -> file[0m +[2;35m 0 16624 20 cmd <- file[0m +[2;35m 0 16624 8 cmd -> file[0m +[2;32m 0 16624 25 syscall -> resolvepath[0m +[2;32m 0 16624 24 syscall <- resolvepath[0m +[2;32m 0 16624 9 syscall -> access[0m +[2;32m 0 16624 8 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 9 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 11 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 12 syscall <- access[0m +[2;32m 0 16624 7 syscall -> resolvepath[0m +[2;32m 0 16624 14 syscall <- resolvepath[0m +[2;32m 0 16624 12 syscall -> access[0m +[2;32m 0 16624 13 syscall <- access[0m +[2;35m 0 16624 9 cmd <- file[0m +[2;35m 0 16624 10 cmd -> file[0m +[2;35m 0 16624 12 cmd <- file[0m +[2;35m 0 16624 9 cmd -> file[0m +[2;32m 0 16624 24 syscall -> resolvepath[0m +[2;32m 0 16624 23 syscall <- resolvepath[0m +[2;32m 0 16624 8 syscall -> access[0m +[2;32m 0 16624 8 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 9 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 11 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 13 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 14 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 16 syscall <- access[0m +[2;32m 0 16624 7 syscall -> resolvepath[0m +[2;32m 0 16624 17 syscall <- resolvepath[0m +[2;32m 0 16624 12 syscall -> access[0m +[2;32m 0 16624 16 syscall <- access[0m +[2;35m 0 16624 29 cmd <- file[0m +[2;35m 0 16624 10 cmd -> file[0m +[2;35m 0 16624 12 cmd <- file[0m +[2;35m 0 16624 9 cmd -> file[0m +[2;32m 0 16624 23 syscall -> resolvepath[0m +[2;32m 0 16624 20 syscall <- resolvepath[0m +[2;32m 0 16624 8 syscall -> access[0m +[2;32m 0 16624 9 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 10 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 11 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 13 syscall <- access[0m +[2;32m 0 16624 7 syscall -> access[0m +[2;32m 0 16624 14 syscall <- access[0m +[2;32m 0 16624 7 syscall -> resolvepath[0m +[2;32m 0 16624 15 syscall <- resolvepath[0m +[2;32m 0 16624 11 syscall -> access[0m +[2;32m 0 16624 14 syscall <- access[0m +[2;35m 0 16624 7 cmd <- file[0m +[2;35m 0 16624 9 cmd -> file[0m +[2;35m 0 16624 12 cmd <- file[0m +[2;35m 0 16624 9 cmd -> file[0m +[2;32m 0 16624 23 syscall -> resolvepath[0m +[2;32m 0 16624 20 syscall <- resolvepath[0m +[2;32m 0 16624 11 syscall -> access[0m +[2;32m 0 16624 19 syscall <- access[0m +[2;35m 0 16624 7 cmd <- file[0m +[2;35m 0 16624 10 cmd -> uplevel[0m +[2;35m 0 16624 13 cmd -> source[0m +[2;32m 0 16624 14 syscall -> stat64[0m +[2;32m 0 16624 23 syscall <- stat64[0m +[2;32m 0 16624 10 syscall -> open64[0m +[2;32m 0 16624 23 syscall <- open64[0m +[2;32m 0 16624 8 syscall -> fcntl[0m +[2;32m 0 16624 7 syscall <- fcntl[0m +[2;32m 0 16624 8 syscall -> ioctl[0m +[2;32m 0 16624 7 syscall <- ioctl[0m +[2;32m 0 16624 26 syscall -> read[0m +[2;32m 0 16624 29 syscall <- read[0m +[2;32m 0 16624 8 syscall -> brk[0m +[2;32m 0 16624 7 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 9 syscall <- brk[0m +[2;32m 0 16624 57 syscall -> read[0m +[2;32m 0 16624 15 syscall <- read[0m +[2;32m 0 16624 55 syscall -> read[0m +[2;32m 0 16624 14 syscall <- read[0m +[2;32m 0 16624 8 syscall -> brk[0m +[2;32m 0 16624 6 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 6 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 8 syscall <- brk[0m +[2;32m 0 16624 63 syscall -> read[0m +[2;32m 0 16624 14 syscall <- read[0m +[2;32m 0 16624 45 syscall -> read[0m +[2;32m 0 16624 13 syscall <- read[0m +[2;32m 0 16624 8 syscall -> brk[0m +[2;32m 0 16624 6 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 6 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 8 syscall <- brk[0m +[2;32m 0 16624 63 syscall -> read[0m +[2;32m 0 16624 14 syscall <- read[0m +[2;32m 0 16624 29 syscall -> read[0m +[2;32m 0 16624 7 syscall <- read[0m +[2;32m 0 16624 10 syscall -> close[0m +[2;32m 0 16624 10 syscall <- close[0m +[2;35m 0 16624 18 cmd -> if[0m +[2;35m 0 16624 19 cmd -> info[0m +[2;35m 0 16624 10 cmd <- info[0m +[2;35m 0 16624 12 cmd <- if[0m +[2;35m 0 16624 14 cmd -> package[0m +[2;35m 0 16624 12 cmd <- package[0m +[2;35m 0 16624 15 cmd -> if[0m +[2;35m 0 16624 12 cmd -> info[0m +[2;35m 0 16624 9 cmd <- info[0m +[2;35m 0 16624 26 cmd -> info[0m +[2;35m 0 16624 16 cmd <- info[0m +[2;35m 0 16624 10 cmd <- if[0m +[2;35m 0 16624 21 cmd -> namespace[0m +[2;35m 0 16624 87 cmd -> variable[0m +[2;35m 0 16624 10 cmd <- variable[0m +[2;35m 0 16624 9 cmd -> info[0m +[2;35m 0 16624 13 cmd <- info[0m +[2;35m 0 16624 9 cmd -> info[0m +[2;35m 0 16624 8 cmd <- info[0m +[2;35m 0 16624 8 cmd -> info[0m +[2;35m 0 16624 8 cmd <- info[0m +[2;35m 0 16624 9 cmd -> file[0m +[2;35m 0 16624 21 cmd <- file[0m +[2;35m 0 16624 9 cmd -> list[0m +[2;35m 0 16624 17 cmd <- list[0m +[2;35m 0 16624 8 cmd -> foreach[0m +[2;35m 0 16624 27 cmd -> lsearch[0m +[2;35m 0 16624 10 cmd <- lsearch[0m +[2;35m 0 16624 10 cmd -> lappend[0m +[2;35m 0 16624 9 cmd <- lappend[0m +[2;35m 0 16624 11 cmd -> lsearch[0m +[2;35m 0 16624 8 cmd <- lsearch[0m +[2;35m 0 16624 8 cmd -> lappend[0m +[2;35m 0 16624 8 cmd <- lappend[0m +[2;35m 0 16624 8 cmd <- foreach[0m +[2;35m 0 16624 8 cmd -> info[0m +[2;35m 0 16624 10 cmd <- info[0m +[2;35m 0 16624 8 cmd -> file[0m +[2;32m 0 16624 15 syscall -> brk[0m +[2;32m 0 16624 7 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 9 syscall <- brk[0m +[2;35m 0 16624 24 cmd <- file[0m +[2;35m 0 16624 9 cmd -> file[0m +[2;35m 0 16624 19 cmd <- file[0m +[2;35m 0 16624 9 cmd -> file[0m +[2;35m 0 16624 11 cmd <- file[0m +[2;35m 0 16624 10 cmd -> lsearch[0m +[2;35m 0 16624 8 cmd <- lsearch[0m +[2;35m 0 16624 9 cmd -> lappend[0m +[2;35m 0 16624 8 cmd <- lappend[0m +[2;35m 0 16624 8 cmd -> info[0m +[2;35m 0 16624 8 cmd <- info[0m +[2;35m 0 16624 9 cmd -> foreach[0m +[2;35m 0 16624 12 cmd -> lsearch[0m +[2;35m 0 16624 8 cmd <- lsearch[0m +[2;35m 0 16624 8 cmd -> lappend[0m +[2;35m 0 16624 8 cmd <- lappend[0m +[2;35m 0 16624 8 cmd <- foreach[0m +[2;35m 0 16624 8 cmd <- namespace[0m +[2;35m 0 16624 30 cmd -> if[0m +[2;35m 0 16624 22 cmd -> interp[0m +[2;35m 0 16624 17 cmd <- interp[0m +[2;35m 0 16624 11 cmd <- if[0m +[2;35m 0 16624 15 cmd -> package[0m +[2;35m 0 16624 8 cmd <- package[0m +[2;35m 0 16624 13 cmd -> if[0m +[2;35m 0 16624 12 cmd -> interp[0m +[2;35m 0 16624 8 cmd <- interp[0m +[2;35m 0 16624 44 cmd <- if[0m +[2;35m 0 16624 21 cmd -> if[0m +[2;35m 0 16624 15 cmd -> namespace[0m +[2;35m 0 16624 10 cmd <- namespace[0m +[2;35m 0 16624 9 cmd <- if[0m +[2;35m 0 16624 13 cmd -> set[0m +[2;35m 0 16624 9 cmd <- set[0m +[2;35m 0 16624 10 cmd -> set[0m +[2;35m 0 16624 8 cmd <- set[0m +[2;35m 0 16624 12 cmd -> if[0m +[2;35m 0 16624 14 cmd -> namespace[0m +[2;35m 0 16624 8 cmd <- namespace[0m +[2;35m 0 16624 13 cmd -> proc[0m +[2;35m 0 16624 12 cmd <- proc[0m +[2;35m 0 16624 8 cmd <- if[0m +[2;35m 0 16624 69 cmd -> proc[0m +[2;35m 0 16624 11 cmd <- proc[0m +[2;35m 0 16624 20 cmd -> proc[0m +[2;35m 0 16624 12 cmd <- proc[0m +[2;32m 0 16624 22 syscall -> brk[0m +[2;32m 0 16624 7 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 6 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 9 syscall <- brk[0m +[2;35m 0 16624 18 cmd -> proc[0m +[2;35m 0 16624 10 cmd <- proc[0m +[2;35m 0 16624 21 cmd -> proc[0m +[2;35m 0 16624 11 cmd <- proc[0m +[2;35m 0 16624 16 cmd -> proc[0m +[2;35m 0 16624 10 cmd <- proc[0m +[2;35m 0 16624 42 cmd -> if[0m +[2;35m 0 16624 25 cmd -> proc[0m +[2;32m 0 16624 9 syscall -> brk[0m +[2;32m 0 16624 6 syscall <- brk[0m +[2;32m 0 16624 7 syscall -> brk[0m +[2;32m 0 16624 9 syscall <- brk[0m +[2;35m 0 16624 21 cmd <- proc[0m +[2;35m 0 16624 9 cmd <- if[0m +[2;35m 0 16624 41 cmd -> proc[0m +[2;35m 0 16624 13 cmd <- proc[0m +[2;35m 0 16624 9 cmd <- source[0m +[2;35m 0 16624 8 cmd <- uplevel[0m +[2;35m 0 16624 10 proc <- tclInit[0m +[2;35m 0 16624 17 cmd <- tclInit[0m +[2;32m 0 16624 35 syscall -> resolvepath[0m +[2;32m 0 16624 31 syscall <- resolvepath[0m +[2;32m 0 16624 13 syscall -> stat64[0m +[2;32m 0 16624 24 syscall <- stat64[0m +[2;32m 0 16624 9 syscall -> open64[0m +[2;32m 0 16624 23 syscall <- open64[0m +[2;32m 0 16624 8 syscall -> fcntl[0m +[2;32m 0 16624 7 syscall <- fcntl[0m +[2;32m 0 16624 9 syscall -> ioctl[0m +[2;32m 0 16624 7 syscall <- ioctl[0m +[2;32m 0 16624 12 syscall -> read[0m +[2;32m 0 16624 21 syscall <- read[0m +[2;32m 0 16624 10 syscall -> read[0m +[2;32m 0 16624 7 syscall <- read[0m +[2;32m 0 16624 9 syscall -> close[0m +[2;32m 0 16624 8 syscall <- close[0m +[2;35m 0 16624 12 cmd -> proc[0m +[2;35m 0 16624 11 cmd <- proc[0m +[2;35m 0 16624 11 cmd -> proc[0m +[2;35m 0 16624 9 cmd <- proc[0m +[2;35m 0 16624 11 cmd -> proc[0m +[2;35m 0 16624 9 cmd <- proc[0m +[2;35m 0 16624 9 cmd -> func_a[0m +[2;35m 0 16624 17 proc -> func_a[0m +[2;35m 0 16624 10 cmd -> puts[0m +[2;32m 0 16624 25 syscall -> llseek[0m +[2;32m 0 16624 9 syscall <- llseek[0m +[2;32m 0 16624 9 syscall -> ioctl[0m +[2;32m 0 16624 6 syscall <- ioctl[0m +[2;32m 0 16624 13 syscall -> getsockname[0m +[2;32m 0 16624 8 syscall <- getsockname[0m +[2;32m 0 16624 18 syscall -> llseek[0m +[2;32m 0 16624 8 syscall <- llseek[0m +[2;32m 0 16624 7 syscall -> ioctl[0m +[2;32m 0 16624 86 syscall <- ioctl[0m +[2;32m 0 16624 184 syscall -> ioctl[0m +[2;32m 0 16624 17 syscall <- ioctl[0m +[2;32m 0 16624 14 syscall -> llseek[0m +[2;32m 0 16624 7 syscall <- llseek[0m +[2;32m 0 16624 7 syscall -> ioctl[0m +[2;32m 0 16624 13 syscall <- ioctl[0m +[2;32m 0 16624 8 syscall -> ioctl[0m +[2;32m 0 16624 12 syscall <- ioctl[0m +[2;32m 0 16624 24 syscall -> write[0m +[2;32m 0 16624 108 syscall <- write[0m +[2;35m 0 16624 10 cmd <- puts[0m +[2;35m 0 16624 11 cmd -> after[0m +[2;32m 0 16624 23 syscall -> pollsys[0m +Function B +[2;32m 0 16624 1009593 syscall <- pollsys[0m +[2;35m 0 16624 24 cmd <- after[0m +[2;35m 0 16624 23 cmd -> func_b[0m +[2;35m 0 16624 37 proc -> func_b[0m +[2;35m 0 16624 12 cmd -> puts[0m +[2;32m 0 16624 17 syscall -> write[0m +[2;32m 0 16624 74 syscall <- write[0m +[2;35m 0 16624 8 cmd <- puts[0m +[2;35m 0 16624 9 cmd -> after[0m +[2;32m 0 16624 10 syscall -> pollsys[0m +Function C +[2;32m 0 16624 1009748 syscall <- pollsys[0m +[2;35m 0 16624 24 cmd <- after[0m +[2;35m 0 16624 23 cmd -> func_c[0m +[2;35m 0 16624 35 proc -> func_c[0m +[2;35m 0 16624 12 cmd -> puts[0m +[2;32m 0 16624 17 syscall -> write[0m +[2;32m 0 16624 75 syscall <- write[0m +[2;35m 0 16624 8 cmd <- puts[0m +[2;35m 0 16624 9 cmd -> after[0m +[2;32m 0 16624 10 syscall -> pollsys[0m +[2;32m 0 16624 1009831 syscall <- pollsys[0m +[2;35m 0 16624 24 cmd <- after[0m +[2;35m 0 16624 23 proc <- func_c[0m +[2;35m 0 16624 13 cmd <- func_c[0m +[2;35m 0 16624 9 proc <- func_b[0m +[2;35m 0 16624 8 cmd <- func_b[0m +[2;35m 0 16624 8 proc <- func_a[0m +[2;35m 0 16624 8 cmd <- func_a[0m +[2;35m 0 16624 30 cmd -> exit[0m +[2;32m 0 16624 41 syscall -> fcntl[0m +[2;32m 0 16624 11 syscall <- fcntl[0m +[2;32m 0 16624 7 syscall -> fcntl[0m +[2;32m 0 16624 7 syscall <- fcntl[0m +[2;32m 0 16624 7 syscall -> fcntl[0m +[2;32m 0 16624 6 syscall <- fcntl[0m +[2;32m 0 16624 11 syscall -> fcntl[0m +[2;32m 0 16624 6 syscall <- fcntl[0m +[2;32m 0 16624 7 syscall -> fcntl[0m +[2;32m 0 16624 6 syscall <- fcntl[0m +[2;32m 0 16624 7 syscall -> fcntl[0m +[2;32m 0 16624 6 syscall <- fcntl[0m +[2;32m 0 16624 9 syscall -> fcntl[0m +[2;32m 0 16624 7 syscall <- fcntl[0m +[2;32m 0 16624 7 syscall -> fcntl[0m +[2;32m 0 16624 6 syscall <- fcntl[0m +[2;32m 0 16624 7 syscall -> fcntl[0m +[2;32m 0 16624 6 syscall <- fcntl[0m +[2;32m 0 16624 81 syscall -> open64[0m +[2;32m 0 16624 119 syscall <- open64[0m +[2;32m 0 16624 8 syscall -> ioctl[0m +[2;32m 0 16624 8 syscall <- ioctl[0m +[2;32m 0 16624 10 syscall -> close[0m +[2;32m 0 16624 16 syscall <- close[0m +[2;32m 0 16624 68 syscall -> rexit[0m + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcl_who_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcl_who_example.txt new file mode 100644 index 000000000000..d1eefa3a9c85 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcl_who_example.txt @@ -0,0 +1,17 @@ +The following is an example of running tcl_who.d. + +The output produces four fields of interest in tracing tcl calls by process. + +Here we see it running while Code/Tcl/func_slow.tcl and Code/Tcl/func_abc.tcl +are executed. +# tcl_who.d +Tracing... Hit Ctrl-C to end. +^C + PID UID CALLS ARGS + 16063 100 83 ./tclsh scripts/func_slow.tcl + 16061 100 86 ./tclsh scripts/func_abc.tcl + +CALLS is a measure of activity, and is a count of the procedures and commands +that Tcl called. The ARGS column shows the process name and arguments given +for a particular PID in order to identify the particular Tcl code involved. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcpsnoop_d_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcpsnoop_d_example.txt new file mode 100644 index 000000000000..a0a8cc85d379 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcpsnoop_d_example.txt @@ -0,0 +1,41 @@ +The following is a demonstration of the tcpsnoop script. + + + +Here we run tcpsnoop and wait for new TCP connections to be established, + + # tcpsnoop.d + UID PID LADDR LPORT DR RADDR RPORT SIZE CMD + 100 20892 192.168.1.5 36398 -> 192.168.1.1 79 54 finger + 100 20892 192.168.1.5 36398 <- 192.168.1.1 79 66 finger + 100 20892 192.168.1.5 36398 -> 192.168.1.1 79 54 finger + 100 20892 192.168.1.5 36398 -> 192.168.1.1 79 56 finger + 100 20892 192.168.1.5 36398 <- 192.168.1.1 79 54 finger + 100 20892 192.168.1.5 36398 <- 192.168.1.1 79 606 finger + 100 20892 192.168.1.5 36398 -> 192.168.1.1 79 54 finger + 100 20892 192.168.1.5 36398 <- 192.168.1.1 79 54 finger + 100 20892 192.168.1.5 36398 -> 192.168.1.1 79 54 finger + 100 20892 192.168.1.5 36398 -> 192.168.1.1 79 54 finger + 100 20892 192.168.1.5 36398 <- 192.168.1.1 79 54 finger + 0 242 192.168.1.5 23 <- 192.168.1.1 54224 54 inetd + 0 242 192.168.1.5 23 -> 192.168.1.1 54224 54 inetd + 0 242 192.168.1.5 23 <- 192.168.1.1 54224 54 inetd + 0 242 192.168.1.5 23 <- 192.168.1.1 54224 78 inetd + 0 242 192.168.1.5 23 -> 192.168.1.1 54224 54 inetd + 0 20893 192.168.1.5 23 -> 192.168.1.1 54224 57 in.telnetd + 0 20893 192.168.1.5 23 <- 192.168.1.1 54224 54 in.telnetd + 0 20893 192.168.1.5 23 -> 192.168.1.1 54224 78 in.telnetd + 0 20893 192.168.1.5 23 <- 192.168.1.1 54224 57 in.telnetd + 0 20893 192.168.1.5 23 -> 192.168.1.1 54224 54 in.telnetd + 0 20893 192.168.1.5 23 <- 192.168.1.1 54224 54 in.telnetd + 0 20893 192.168.1.5 23 -> 192.168.1.1 54224 60 in.telnetd + 0 20893 192.168.1.5 23 <- 192.168.1.1 54224 63 in.telnetd + 0 20893 192.168.1.5 23 -> 192.168.1.1 54224 54 in.telnetd + 0 20893 192.168.1.5 23 <- 192.168.1.1 54224 60 in.telnetd + 0 20893 192.168.1.5 23 -> 192.168.1.1 54224 60 in.telnetd + 0 20893 192.168.1.5 23 <- 192.168.1.1 54224 60 in.telnetd + 0 20893 192.168.1.5 23 -> 192.168.1.1 54224 72 in.telnetd + [...] + +As new connections are made, each of the TCP packets are traced along with +the UID, PID and command name. diff --git a/cddl/contrib/dtracetoolkit/Examples/tcpsnoop_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcpsnoop_example.txt new file mode 100644 index 000000000000..1124175d2d16 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcpsnoop_example.txt @@ -0,0 +1,61 @@ +The following is a demonstration of the tcpsnoop program. + + + +Here we run tcpsnoop and wait for new TCP connections to be established, + + # tcpsnoop + UID PID LADDR LPORT DR RADDR RPORT SIZE CMD + 100 20892 192.168.1.5 36398 -> 192.168.1.1 79 54 finger + 100 20892 192.168.1.5 36398 <- 192.168.1.1 79 66 finger + 100 20892 192.168.1.5 36398 -> 192.168.1.1 79 54 finger + 100 20892 192.168.1.5 36398 -> 192.168.1.1 79 56 finger + 100 20892 192.168.1.5 36398 <- 192.168.1.1 79 54 finger + 100 20892 192.168.1.5 36398 <- 192.168.1.1 79 606 finger + 100 20892 192.168.1.5 36398 -> 192.168.1.1 79 54 finger + 100 20892 192.168.1.5 36398 <- 192.168.1.1 79 54 finger + 100 20892 192.168.1.5 36398 -> 192.168.1.1 79 54 finger + 100 20892 192.168.1.5 36398 -> 192.168.1.1 79 54 finger + 100 20892 192.168.1.5 36398 <- 192.168.1.1 79 54 finger + 0 242 192.168.1.5 23 <- 192.168.1.1 54224 54 inetd + 0 242 192.168.1.5 23 -> 192.168.1.1 54224 54 inetd + 0 242 192.168.1.5 23 <- 192.168.1.1 54224 54 inetd + 0 242 192.168.1.5 23 <- 192.168.1.1 54224 78 inetd + 0 242 192.168.1.5 23 -> 192.168.1.1 54224 54 inetd + 0 20893 192.168.1.5 23 -> 192.168.1.1 54224 57 in.telnetd + 0 20893 192.168.1.5 23 <- 192.168.1.1 54224 54 in.telnetd + 0 20893 192.168.1.5 23 -> 192.168.1.1 54224 78 in.telnetd + 0 20893 192.168.1.5 23 <- 192.168.1.1 54224 57 in.telnetd + 0 20893 192.168.1.5 23 -> 192.168.1.1 54224 54 in.telnetd + 0 20893 192.168.1.5 23 <- 192.168.1.1 54224 54 in.telnetd + 0 20893 192.168.1.5 23 -> 192.168.1.1 54224 60 in.telnetd + 0 20893 192.168.1.5 23 <- 192.168.1.1 54224 63 in.telnetd + 0 20893 192.168.1.5 23 -> 192.168.1.1 54224 54 in.telnetd + 0 20893 192.168.1.5 23 <- 192.168.1.1 54224 60 in.telnetd + 0 20893 192.168.1.5 23 -> 192.168.1.1 54224 60 in.telnetd + 0 20893 192.168.1.5 23 <- 192.168.1.1 54224 60 in.telnetd + 0 20893 192.168.1.5 23 -> 192.168.1.1 54224 72 in.telnetd + [...] + +As new connections are made, each of the TCP packets are traced along with +the UID, PID and command name. + + + +tcpsnoop has many options, for example here we use "-v" to print times, + + # tcpsnoop -v + STRTIME UID PID LADDR LPORT DR RADDR RPORT SIZE CMD + 2005 Jul 11 21:21:19 0 242 192.168.1.5 79 <- 192.168.1.1 49001 54 inetd + 2005 Jul 11 21:21:19 0 242 192.168.1.5 79 -> 192.168.1.1 49001 54 inetd + 2005 Jul 11 21:21:19 0 242 192.168.1.5 79 <- 192.168.1.1 49001 54 inetd + 2005 Jul 11 21:21:19 0 242 192.168.1.5 79 <- 192.168.1.1 49001 56 inetd + 2005 Jul 11 21:21:19 0 242 192.168.1.5 79 -> 192.168.1.1 49001 54 inetd + 2005 Jul 11 21:21:19 0 23181 192.168.1.5 79 -> 192.168.1.1 49001 444 in.fingerd + 2005 Jul 11 21:21:19 0 23181 192.168.1.5 79 -> 192.168.1.1 49001 54 in.fingerd + 2005 Jul 11 21:21:19 0 23181 192.168.1.5 79 <- 192.168.1.1 49001 54 in.fingerd + 2005 Jul 11 21:21:19 0 23181 192.168.1.5 79 <- 192.168.1.1 49001 54 in.fingerd + 2005 Jul 11 21:21:19 0 23181 192.168.1.5 79 <- 192.168.1.1 49001 54 in.fingerd + 2005 Jul 11 21:21:19 0 23181 192.168.1.5 79 -> 192.168.1.1 49001 54 in.fingerd + [...] + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcpsnoop_snv_d_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcpsnoop_snv_d_example.txt new file mode 120000 index 000000000000..d53301a9cc66 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcpsnoop_snv_d_example.txt @@ -0,0 +1 @@ +tcpsnoop_d_example.txt
\ No newline at end of file diff --git a/cddl/contrib/dtracetoolkit/Examples/tcpsnoop_snv_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcpsnoop_snv_example.txt new file mode 120000 index 000000000000..794263cb8c1e --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcpsnoop_snv_example.txt @@ -0,0 +1 @@ +tcpsnoop_example.txt
\ No newline at end of file diff --git a/cddl/contrib/dtracetoolkit/Examples/tcpstat_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcpstat_example.txt new file mode 100644 index 000000000000..d7d8cb379d98 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcpstat_example.txt @@ -0,0 +1,22 @@ +The following is a demonstration of the tcpstat.d script, + + +Here we run tcpstat.d as a large file is downloaded, + + # tcpstat.d + TCP_out TCP_outRe TCP_in TCP_inDup TCP_inUn + 0 0 0 0 0 + 20 0 1540 0 0 + 632 0 576 0 0 + 560 0 115552 0 0 + 1872 0 2900480 0 0 + 1968 0 3032320 0 0 + 1776 0 2752160 0 0 + 752 0 999824 0 0 + 0 0 0 0 0 + 0 0 0 0 0 + 0 0 0 0 0 + ^C + +We can see the TCP_in value rise to around 3 Mb/sec as the download occurs. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcptop_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcptop_example.txt new file mode 100644 index 000000000000..c90fc753d883 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcptop_example.txt @@ -0,0 +1,28 @@ +The following is a demonstration of the tcptop command, + + +tcptop will display info on newly established TCP connections, + + # tcptop -C 10 + Tracing... Please wait. + 2005 Jul 5 04:55:25, load: 1.11, TCPin: 2 KB, TCPout: 110 KB + + UID PID LADDR LPORT FADDR FPORT SIZE NAME + 100 20876 192.168.1.5 36396 192.168.1.1 79 1160 finger + 100 20875 192.168.1.5 36395 192.168.1.1 79 1160 finger + 100 20878 192.168.1.5 36397 192.168.1.1 23 1303 telnet + 100 20877 192.168.1.5 859 192.168.1.1 514 115712 rcp + + 2005 Jul 5 04:55:35, load: 1.10, TCPin: 0 KB, TCPout: 0 KB + + UID PID LADDR LPORT FADDR FPORT SIZE NAME + 0 242 192.168.1.5 79 192.168.1.1 54220 272 inetd + 0 20879 192.168.1.5 79 192.168.1.1 54220 714 in.fingerd + + [...] + + +In the above output, we run it with a 10 second interval and with -C so +that the screen does not clear. Some traffic was captured, around 110 Kbytes +by the rcp process (PID 20877), etc. + diff --git a/cddl/contrib/dtracetoolkit/Examples/tcptop_snv_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcptop_snv_example.txt new file mode 120000 index 000000000000..f2a169ee6b50 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcptop_snv_example.txt @@ -0,0 +1 @@ +tcptop_example.txt
\ No newline at end of file diff --git a/cddl/contrib/dtracetoolkit/Examples/tcpwdist_example.txt b/cddl/contrib/dtracetoolkit/Examples/tcpwdist_example.txt new file mode 100644 index 000000000000..02a392ce55a1 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/tcpwdist_example.txt @@ -0,0 +1,70 @@ +The following is a demonstration of the tcpwdist.d script. + + +Here the tcpwdist.d script is run for a few seconds then Ctrl-C is hit, + + # tcpwdist.d + Tracing... Hit Ctrl-C to end. + ^C + PID: 15300 CMD: finger @mars\0 + + value ------------- Distribution ------------- count + -1 | 0 + 0 |@@@@@@@@@@@@@@@@@@@@ 1 + 1 | 0 + 2 |@@@@@@@@@@@@@@@@@@@@ 1 + 4 | 0 + + PID: 4967 CMD: /usr/lib/ssh/sshd\0 + + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@ 1 + 64 |@@@@@@@@@@@@@@@@@@@@ 1 + 128 | 0 + + PID: 9172 CMD: /usr/lib/ssh/sshd\0 + + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@ 4 + 64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 14 + 128 | 0 + 256 | 0 + 512 |@@ 1 + 1024 | 0 + + PID: 15301 CMD: rcp 1Mb.gz mars:/tmp\0 + + value ------------- Distribution ------------- count + 0 | 0 + 1 |@ 2 + 2 |@ 1 + 4 | 0 + 8 |@ 2 + 16 |@ 2 + 32 | 0 + 64 | 0 + 128 | 0 + 256 | 0 + 512 | 0 + 1024 | 0 + 2048 | 0 + 4096 | 0 + 8192 | 0 + 16384 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 64 + 32768 | 0 + +In the above output we can see the "rcp" command dominates, sending +large writes (16 to 31 Kb) 64 times. The "sshd" ssh daemons each sent +several smaller writes, from 32 to 127 bytes - which corresponds to +command line activity (eg, screen width of 80 bytes). The finger command +sent 2 bytes once, and zero data bytes once. + +These values are the TCP write payload sizes. + +The writes from the "rcp" command seem unusual at over 16 Kb each, when +this is an Ethernet network with an MTU of 1500 bytes. The reason is that +at this point the data has not yet been broken down into MTU sized packets, +so we are looking at the applications behaviour as it writes to TCP. + diff --git a/cddl/contrib/dtracetoolkit/Examples/threaded_example.txt b/cddl/contrib/dtracetoolkit/Examples/threaded_example.txt new file mode 100644 index 000000000000..1e41a0ef2ed9 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/threaded_example.txt @@ -0,0 +1,108 @@ +The following is a demonstration of the threaded.d script, + + +Here we run a test program called "cputhread" that creates 4 busy threads +that run at the same time. Here we run it on a server with only 1 CPU, + + # threaded.d + + 2005 Jul 26 02:56:37, + + PID: 8516 CMD: cputhread + + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@ 17 + 3 |@@@@@@@@@@@ 28 + 4 |@@@@@@@@@@@ 27 + 5 |@@@@@@@@@@@ 28 + 6 | 0 + [...] + +In the above output, we can see that cputhread has four busy threads with +thread IDs 2, 3, 4 and 5. We are sampling at 100 Hertz, and have caught +each of these threads on the CPU between 17 and 28 times. + +Since the above counts add to 100, this is either a sign of a single CPU +server (which it is), or a sign that a multithreaded application may be +running "serialised" - only 1 thread at a time. Compare the above output +to a multi CPU server, + + + +Here we run the same test program on a server with 4 CPUs, + + # threaded.d + + 2005 Jul 26 02:48:44, + + PID: 5218 CMD: cputhread + + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@ 80 + 3 |@@@@@@@@@@ 72 + 4 |@@@@@@@@@ 64 + 5 |@@@@@@@@@@@ 78 + 6 | 0 + [...] + +This time the counts add to equal 294, so this program is definitely +running on multiple CPUs at the same time, otherwise this total would +not be beyond our sample rate of 100. The distribution of threads on CPU +is fairly even, and the above serves as an example of a multithreaded +application performing well. + + + +Now we run a test program called "cpuserial", which also create 4 busy +threads, however due to a coding problem (poor use of mutex locks) they +only run one at a time, + + # threaded.d + + 2005 Jul 26 03:07:21, + + PID: 5238 CMD: cpuserial + + value ------------- Distribution ------------- count + 2 | 0 + 3 |@@@@@@@@@@@@ 30 + 4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 70 + 5 | 0 + [...] + +The above looks like we are back on a single CPU server with 100 samples +in total, however we are still on our 4 CPU server. Only two threads have +run, and the above distribution is a good indication that they have +run serialised. + + + +Now more of a fringe case. This version of cpuserial again creates 4 threads +that are all busy and hungry for the CPU, and again we run it on a 4 CPU +server, + + # threaded.d + + 2005 Jul 26 03:25:45, + + PID: 5280 CMD: cpuserial + + value ------------- Distribution ------------- count + 1 | 0 + 2 |@@@@@@@@@@@@@@@ 42 + 3 |@@@@@@@@@@@@@@@@@@ 50 + 4 |@@@@@@ 15 + 5 |@ 2 + 6 | 0 + [...] + +So all threads are running, good. And with a total of 109, at some point +more than one thread was running at the same time (otherwise this would +not have exceeded 100, bearing in mind a sample rate of 100 Hertz). However, +what is not so good is that with 4 CPUs we have only scored 109 samples - +since all threads are CPU hungry we'd hope that more often they could +run across the CPUs simultaneously; however this wasn't the case. Again, +this fault was created by poor use of mutex locks. + diff --git a/cddl/contrib/dtracetoolkit/Examples/topsyscall_example.txt b/cddl/contrib/dtracetoolkit/Examples/topsyscall_example.txt new file mode 100644 index 000000000000..dda1aa03e515 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/topsyscall_example.txt @@ -0,0 +1,65 @@ +The following is a demonstration of the topsyscall command, + + +Here topsyscall is run with no arguments, + + # topsyscall + 2005 Jun 13 22:13:21, load average: 1.24, 1.24, 1.22 syscalls: 1287 + + SYSCALL COUNT + getgid 4 + getuid 5 + waitsys 5 + xstat 7 + munmap 7 + sysconfig 8 + brk 8 + setcontext 8 + open 8 + getpid 9 + close 9 + resolvepath 10 + lwp_sigmask 22 + mmap 26 + lwp_park 43 + read 59 + write 72 + sigaction 113 + pollsys 294 + ioctl 520 + +The screen updates every second, and continues until Ctrl-C is hit to +end the program. + +In the above output we can see that the ioctl() system call occured 520 times, +pollsys() 294 times and sigaction() 113 times. + + + +Here the command is run with a 10 second interval, + + # topsyscall 10 + 2005 Jun 13 22:15:35, load average: 1.21, 1.22, 1.22 syscalls: 10189 + + SYSCALL COUNT + writev 6 + close 7 + lseek 7 + open 7 + brk 8 + nanosleep 9 + portfs 10 + llseek 14 + lwp_cond_wait 21 + p_online 21 + gtime 27 + rusagesys 71 + setcontext 92 + lwp_sigmask 98 + setitimer 183 + lwp_park 375 + write 438 + read 551 + pollsys 3071 + ioctl 5144 + diff --git a/cddl/contrib/dtracetoolkit/Examples/topsysproc_example.txt b/cddl/contrib/dtracetoolkit/Examples/topsysproc_example.txt new file mode 100644 index 000000000000..368ea314c079 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/topsysproc_example.txt @@ -0,0 +1,56 @@ +The following is a demonstration of the topsysproc program, + + +Here we run topsysproc with no arguments, + + # topsysproc + 2005 Jun 13 22:25:16, load average: 1.24, 1.23, 1.21 syscalls: 1347 + + PROCESS COUNT + svc.startd 1 + nscd 1 + setiathome 7 + poold 18 + sshd 21 + java_vm 35 + tput 49 + dtrace 56 + Xorg 108 + sh 110 + clear 122 + mozilla-bin 819 + +The screen refreshes every 1 second, which can be changed by specifying +a different interval at the command line. + +In the above output we can see that processes with the name "mozilla-bin" +made 819 system calls, while processes with the name "clear" made 122. + + + +Now topsysproc is run with a 15 second interval, + + # topsysproc 15 + 2005 Jun 13 22:29:43, load average: 1.19, 1.20, 1.20 syscalls: 15909 + + PROCESS COUNT + fmd 1 + inetd 2 + svc.configd 2 + gconfd-2 3 + miniserv.pl 3 + sac 6 + snmpd 6 + sshd 8 + automountd 8 + ttymon 9 + svc.startd 17 + nscd 21 + in.routed 37 + sendmail 41 + setiathome 205 + poold 293 + dtrace 413 + java_vm 529 + Xorg 1234 + mozilla-bin 13071 diff --git a/cddl/contrib/dtracetoolkit/Examples/udpstat_example.txt b/cddl/contrib/dtracetoolkit/Examples/udpstat_example.txt new file mode 100644 index 000000000000..4ffa3bafeacb --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/udpstat_example.txt @@ -0,0 +1,39 @@ +The following is an example of the udpstat.d script, + + + +Here we run udpstat for a few seconds. Firstly, we run a "spray" command +outbound, followed by a spray inbound. Both can be identified in the +output below, + + # udpstat.d + UDP_out UDP_outErr UDP_in UDP_inErr UDP_noPort + 0 0 0 0 1 + 0 0 0 0 2 + 0 0 0 0 0 + 1165 0 2 0 0 + 0 0 0 0 0 + 0 0 0 0 2 + 3 0 1166 0 1 + 0 0 0 0 0 + 0 0 0 0 0 + 0 0 0 0 0 + ^C + + + +Here we run udpstat.d while an outbound DNS lookup is performed using +"nslookup", + + # udpstat.d + UDP_out UDP_outErr UDP_in UDP_inErr UDP_noPort + 0 0 0 0 1 + 0 0 0 0 1 + 1 0 1 0 0 + 0 0 0 0 0 + 0 0 0 0 3 + ^C + +Little output is observed as this tracks datagrams not bytes. There is +one outbound and one inbound datagram. + diff --git a/cddl/contrib/dtracetoolkit/Examples/uname-a_example.txt b/cddl/contrib/dtracetoolkit/Examples/uname-a_example.txt new file mode 100644 index 000000000000..281033dc8721 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/uname-a_example.txt @@ -0,0 +1,15 @@ +The following is a demonstration of the uname.d script, + + +Here we run the usual "uname -a" command and compare the output to that +given by the uname.d script, + + # uname -a + SunOS jupiter 5.10 Generic i86pc i386 i86pc + + # ./uname-a.d + SunOS jupiter 5.10 Generic i86pc i386 i86pc + +The output is the same. uname-a.d is intended as a demonstration script, +and as a starting point for other scripts. + diff --git a/cddl/contrib/dtracetoolkit/Examples/vmbypid_example.txt b/cddl/contrib/dtracetoolkit/Examples/vmbypid_example.txt new file mode 100644 index 000000000000..9e09b836a4c5 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/vmbypid_example.txt @@ -0,0 +1,32 @@ +The following is a demonstration of the vmbypid.d command, + + # vmbypid.d + Tracing... Hit Ctrl-C to end. + ^C + EXEC PID VM VALUE + find 19216 prot_fault 1 + bash 19216 zfod 1 + dtrace 19215 pgfrec 3 + dtrace 19215 pgrec 3 + bash 19216 pgfrec 5 + bash 19216 pgrec 5 + find 19216 cow_fault 6 + find 19216 pgfrec 6 + find 19216 pgrec 6 + bash 19216 prot_fault 10 + bash 19216 cow_fault 15 + bash 19155 prot_fault 30 + dtrace 19215 zfod 52 + find 19216 zfod 54 + dtrace 19215 as_fault 56 + bash 19216 as_fault 74 + find 19216 as_fault 91 + find 19216 fspgin 315 + find 19216 pgin 315 + find 19216 pgpgin 315 + find 19216 maj_fault 315 + +In the above output, the find command at PID 19211 triggered 315 maj_faults - +major faults, that would require disk activity to satisfy (as confirmed by the +pgpgin value for pages paged in). + diff --git a/cddl/contrib/dtracetoolkit/Examples/vmstat-p_example.txt b/cddl/contrib/dtracetoolkit/Examples/vmstat-p_example.txt new file mode 100644 index 000000000000..1a0fe14b7750 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/vmstat-p_example.txt @@ -0,0 +1,51 @@ +The following is a demonstration of the vmstat-p.d script, + + +We run both vmstat-p.d and the original vmstat(1M) command at the same time +to compare outputs, + + $ vmstat -p 1 + memory page executable anonymous filesystem + swap free re mf fr de sr epi epo epf api apo apf fpi fpo fpf + 1144488 142456 2 8 1 0 0 0 0 0 0 0 0 2 1 1 + 1063812 84472 18 92 0 0 0 0 0 0 0 0 0 0 0 0 + 1050404 75108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1050404 75108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1050404 75108 476 150 0 0 0 0 0 0 0 0 0 0 0 0 + 1050184 74772 73 0 0 0 0 0 0 0 0 0 0 788 0 0 + 1050400 74988 2371 173 0 0 0 0 0 0 0 0 0 0 0 0 + 1050400 75100 1057 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1050400 75100 2 0 0 0 0 0 0 0 0 0 0 4 0 0 + 1050400 75100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1050400 75100 4529 172 0 0 0 0 0 0 0 0 0 192 0 0 + 1050400 75104 0 0 0 0 0 0 0 0 0 0 0 467 0 0 + 1050400 75104 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + + # ./vmstat-p.d + memory page executable anonymous filesystem + swap free re mf sr epi epo epf api apo apf fpi fpo fpf + 1050404 75108 8 80 0 0 0 0 0 0 0 0 0 0 + 1050404 75108 0 0 0 0 0 0 0 0 0 0 0 0 + 1050404 75108 0 0 0 0 0 0 0 0 0 0 0 0 + 1050180 74768 2216 608 0 0 0 0 0 0 0 568 0 0 + 1050400 74988 4 0 0 0 0 0 0 0 0 228 0 0 + 1050400 75100 13852 700 0 0 0 0 0 0 0 0 0 0 + 1050400 75100 8 0 0 0 0 0 0 0 0 4 0 0 + 1050400 75100 0 0 0 0 0 0 0 0 0 0 0 0 + 1050400 75100 0 0 0 0 0 0 0 0 0 0 0 0 + 1050400 75104 18480 700 0 0 0 0 0 0 0 668 0 0 + 1050400 75104 0 0 0 0 0 0 0 0 0 0 0 0 + +Above we can see the columns are corresponding well. "re" and "mf" in the +DTrace output appear four times as large as they should be, because in the +DTrace output we are printing Kbs not page counts (for consistancy). + +The DTrace output lacks the "summary since boot" line, as it is not using +Kstat to fetch this data. + + +The vmstat-p.d script is not intended itself as a useful program, rather it +is intended as a starting point for other DTrace scripts; a starting point +of familiar statistics to provide the programmer with a "common ground" +of knowledge. + diff --git a/cddl/contrib/dtracetoolkit/Examples/vmstat_example.txt b/cddl/contrib/dtracetoolkit/Examples/vmstat_example.txt new file mode 100644 index 000000000000..7d953fd9b672 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/vmstat_example.txt @@ -0,0 +1,45 @@ +The following is an example of the vmstat.d script, + + +We run both vmstat.d and the original vmstat(1M) command at the same time +to compare outputs, + + $ vmstat 1 + kthr memory page disk faults cpu + r b w swap free re mf pi po fr de sr cd s0 -- -- in sy cs us sy id + 0 0 0 1147468 144324 2 8 2 1 1 0 0 1 0 0 0 294 990 355 18 2 80 + 1 0 0 1065480 92276 13 73 0 0 0 0 0 0 0 0 0 359 1055 376 85 15 0 + 0 0 0 1052088 82940 0 0 0 0 0 0 0 0 0 0 0 409 999 402 97 3 0 + 0 0 0 1052088 82940 0 0 0 0 0 0 0 0 0 0 0 406 975 407 97 3 0 + 0 0 0 1052088 82940 0 0 0 0 0 0 0 0 0 0 0 406 1037 429 97 3 0 + 0 0 0 1052088 82940 247 1763 0 0 0 0 0 2 0 0 0 427 4828 680 81 19 0 + 0 0 0 1051264 82300 0 0 0 0 0 0 0 0 0 0 0 414 1164 441 97 3 0 + 0 0 0 1051264 82300 11 134 0 0 0 0 0 0 0 0 0 423 1218 461 95 5 0 + 0 0 0 1051264 82300 0 0 0 0 0 0 0 0 0 0 0 416 1054 435 98 2 0 + [...] + + # ./vmstat.d + w swap free re mf pi po fr sr in sy cs + 0 1052088 82940 8 80 0 0 0 0 117 958 379 + 0 1052088 82940 0 0 0 0 0 0 123 955 402 + 0 1052088 82940 0 0 0 0 0 0 121 1025 420 + 0 1052088 82940 0 0 0 0 0 0 121 1065 433 + 0 1051264 82300 1008 7192 0 0 0 0 219 4886 684 + 0 1051264 82300 0 0 0 0 0 0 193 1188 461 + 0 1051264 82300 44 540 0 0 0 0 165 1226 450 + 0 1051264 82300 0 0 0 0 0 0 123 1012 421 + [...] + +Above we can see the columns are corresponding well. "re" and "mf" in the +DTrace output appear four times as large as they should be, because in the +DTrace output we are printing Kbs not page counts (for consistancy). + +The DTrace output lacks the "summary since boot" line, as it is not using +Kstat to fetch this data. + + +The vmstat.d script is not intended itself as a useful program, rather it +is intended as a starting point for other DTrace scripts; a starting point +of familiar statistics to provide the programmer with a "common ground" +of knowledge. + diff --git a/cddl/contrib/dtracetoolkit/Examples/vopstat_example.txt b/cddl/contrib/dtracetoolkit/Examples/vopstat_example.txt new file mode 100644 index 000000000000..646419efada9 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/vopstat_example.txt @@ -0,0 +1,89 @@ +The following are demonstrations of the vopstat script. + + +By default, vopstat traces activity at the vnode interface and prints +summaries every five seconds. It will either trace all filesystems or +just the mountpoint specified. + +Here it was run on /extra1, while a tar command archived /extra1, + + # ./vopstat /extra1 + VOP Physical IO Count + fop_getpage 66 + + VOP Count Count + fop_readdir 1 + fop_read 2 + fop_cmp 2 + fop_seek 3 + fop_close 7 + fop_open 10 + fop_getattr 12 + fop_access 13 + fop_lookup 16 + fop_rwunlock 3802 + fop_rwlock 3802 + fop_putpage 4701 + fop_getpage 6648 + fop_dispose 19109 + + VOP Wall Time mSeconds + fop_readdir 0 + fop_cmp 0 + fop_read 0 + fop_seek 0 + fop_close 0 + fop_open 0 + fop_access 0 + fop_getattr 0 + fop_lookup 0 + fop_rwunlock 64 + fop_putpage 86 + fop_rwlock 93 + fop_dispose 346 + fop_getpage 402 + ^C + +There were 66 calls for physical I/O operations, fop_getpage, as files +were read from disk. The VOP Count show that there were many calls to +fop_putpage and fop_getpage, as tar works its way through files; and +many more to fop_dispose. The total elaspsed time for these calls +are listed at the bottom, in milleseconds. + +This rate of events will put some pressure on the DTrace buffer, +you may see dynamic variable drops. + + + +vopstat also has a -t option to trace activity. Here it is run on /extra1 +while an "ls" command listed files from that directory, + +# ./vopstat -t /extra1 + Event Device Path RW Size Offset +-> fop_getattr - /extra1 - 0 0 +<- fop_getattr - /extra1 - 0 0 +-> fop_access - /extra1 - 0 0 +<- fop_access - /extra1 - 0 0 +-> fop_open - /extra1 - 0 0 +<- fop_open - /extra1 - 0 0 +-> fop_getattr - /extra1 - 0 0 +<- fop_getattr - /extra1 - 0 0 +-> fop_rwlock - /extra1 - 0 0 +<- fop_rwlock - /extra1 - 0 0 +-> fop_readdir - /extra1 - 0 0 +-> fop_getpage - /extra1 - 0 0 +<- fop_getpage - /extra1 - 0 0 +-> fop_rwunlock - /extra1 - 0 0 +<- fop_rwunlock - /extra1 - 0 0 +-> fop_rwlock - /extra1 - 0 0 +<- fop_rwlock - /extra1 - 0 0 +-> fop_readdir - /extra1 - 0 0 +<- fop_readdir - /extra1 - 0 0 +-> fop_rwunlock - /extra1 - 0 0 +<- fop_rwunlock - /extra1 - 0 0 +-> fop_close - /extra1 - 0 512 +<- fop_close - /extra1 - 0 512 +^C + +Each call can be seen as it happened, including the entry and return of +these calls. diff --git a/cddl/contrib/dtracetoolkit/Examples/weblatency_example.txt b/cddl/contrib/dtracetoolkit/Examples/weblatency_example.txt new file mode 100644 index 000000000000..995b545a366a --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/weblatency_example.txt @@ -0,0 +1,127 @@ +The following is a demonstration of the weblatency.d script. + +Here we run weblatency.d while a mozilla browser loads the +http://www.planetsolaris.org website. After the website was loaded, Ctrl-C +was hit to print the following report, + + # weblatency.d + Tracing... Hit Ctrl-C to end. + ^C + HOST NUM + static.flickr.com 1 + images.pegasosppc.com 1 + www.planetsolaris.org 5 + blogs.sun.com 7 + + HOST AVGTIME(ms) + static.flickr.com 65 + blogs.sun.com 285 + images.pegasosppc.com 491 + www.planetsolaris.org 757 + + HOST MAXTIME(ms) + static.flickr.com 65 + images.pegasosppc.com 491 + blogs.sun.com 962 + www.planetsolaris.org 3689 + +This gives us an understanding on which hosts were responsible for the +time endured while loading the website. It turns out that requests to +www.planetsolaris.org were the slowest, with a maximum time of 3.7 seconds +(probably the first request, which incurred a DNS lookup). + + + +The following shows the same google lookup performed on a number of sites, + + # weblatency.d + Tracing... Hit Ctrl-C to end. + ^C + HOST NUM + www.google.com.au 3 + www.google.co.uk 3 + www.google.com 3 + www.google.co.nz 3 + + HOST AVGTIME(ms) + www.google.co.nz 450 + www.google.com.au 502 + www.google.com 567 + www.google.co.uk 595 + + HOST MAXTIME(ms) + www.google.co.nz 544 + www.google.com.au 559 + www.google.com 744 + www.google.co.uk 763 + +From the average time you would guess that I was running this from +New Zealand (the fastest), with times to the other hosts following suit +(Australia, USA, UK). I was actually running this from Australia - it's +interesting that the New Zealand server responded slightly faster. + + + + +Now several websites are loaded as a larger demonstration, + + # weblatency.d + Tracing... Hit Ctrl-C to end. + ^C + HOST NUM + shop.abc.net.au 1 + static.technorati.com 1 + sunopensolaris.112.2o7.net 1 + www.theage.com.au 1 + ffxcam.smh.com.au 1 + sunglobal.112.2o7.net 2 + embed.technorati.com 2 + technorati.com 2 + fdimages.fairfax.com.au 4 + blogs.sun.com 5 + bugs.opensolaris.org 7 + www.abc.net.au 34 + www.smh.com.au 51 + + HOST AVGTIME(ms) + ffxcam.smh.com.au 0 + sunglobal.112.2o7.net 0 + www.abc.net.au 56 + www.theage.com.au 64 + shop.abc.net.au 65 + www.smh.com.au 73 + fdimages.fairfax.com.au 88 + blogs.sun.com 130 + bugs.opensolaris.org 162 + static.technorati.com 350 + technorati.com 352 + embed.technorati.com 632 + sunopensolaris.112.2o7.net 900 + + HOST MAXTIME(ms) + ffxcam.smh.com.au 0 + sunglobal.112.2o7.net 0 + www.theage.com.au 64 + shop.abc.net.au 65 + fdimages.fairfax.com.au 243 + www.smh.com.au 244 + blogs.sun.com 293 + www.abc.net.au 315 + static.technorati.com 350 + technorati.com 356 + bugs.opensolaris.org 560 + sunopensolaris.112.2o7.net 900 + embed.technorati.com 973 + +It's interesting that the most common host (www.smh.com.au, NUM == 51), +responded with a fast AVGTIME (73 ms). The reason for this may be due to +cacheing by my proxy server. Less common hosts such as embed.technorati.com +were quite slow. + + + +The results from weblatency.d are interesting, but they don't point the +finger at one single cause for website latency. The value here is the response +time experienced by the client - which is a combination of many response +times (link speeds, proxy server, DNS server, web server). + diff --git a/cddl/contrib/dtracetoolkit/Examples/whatexec_example.txt b/cddl/contrib/dtracetoolkit/Examples/whatexec_example.txt new file mode 100644 index 000000000000..519909ec789d --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/whatexec_example.txt @@ -0,0 +1,18 @@ +The following are demonstrations of the whatexec.d script. + + +Here we run it while a few commands are also executed, + + # ./whatexec.d + PEXEC EXEC OK TYPE + bash /usr/bin/clear Y #!/u\0 + bash /sbin/sh Y \177ELF\0 + clear /usr/bin/tput Y \177ELF\0 + bash /export/home/brendan/DOOM.EXE N MZ\644\0 + ^C + +whatexec.d has first found that "clear" was run, which has a type that +begins with "#!" - a script. clear runs "sh" and "tput", both ELF files. + +We finish by attempting to run a MZ file, "DOOM.EXE", which is rejected +(OK is "N"). diff --git a/cddl/contrib/dtracetoolkit/Examples/woof_example.txt b/cddl/contrib/dtracetoolkit/Examples/woof_example.txt new file mode 100644 index 000000000000..dc8152728114 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/woof_example.txt @@ -0,0 +1,28 @@ +The following explains how to demonstrate the woof.d DTrace script. + +This script is only useful if you have an audio device, /dev/audio. To test +audio, you can run: + + $ audioplay /usr/share/audio/samples/au/sample.au + +The volume can be adjusted from a few tools, including, + + $ /usr/dt/bin/sdtaudiocontrol + +... + +woof.d will bark whenever a new process is created. In order to demonstrate +it, first run the following: + + # ./woof.d & + +You have now installed the dog (if the dog becomes a nusience, you are +allowed to kill it). Now compare the difference between these recursive +grep commands: + + $ find /etc -type f -exec grep localhost {} \; + + $ find /etc -type f -exec grep localhost {} + + +The first find command is the "bad way", the second is the "good way". You +will hear for yourself why this is the case. diff --git a/cddl/contrib/dtracetoolkit/Examples/wpm_example.txt b/cddl/contrib/dtracetoolkit/Examples/wpm_example.txt new file mode 100644 index 000000000000..bfc74a90ff34 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/wpm_example.txt @@ -0,0 +1,57 @@ +The following is an example of the wpm.d script. + + +This script takes the name of a program to trace, and assumes that reads +on file descriptor zero (STDIN) are keystrokes. + +When run, a 5 second count down begins before keystrokes are measured, + + # wpm.d vim + Measuring will start in : 5 seconds + +While running, I retyped the first three sentences of this file a few times +which clocked the following result, + + # wpm.d vim + Measuring will start in : 0 seconds + Measuring will stop in : 0 seconds + + Characters typed : 509 + Words per minute : 84 + + Minimum keystroke latency : 12 ms + Average keystroke latency : 118 ms + Maximum keystroke latency : 493 ms + + Word size distribution (letters), + + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@@ 6 + 2 |@@@@@ 11 + 3 |@@@@@ 11 + 4 |@@@@@@ 13 + 5 |@@@@ 8 + 6 |@@@@@@ 12 + 7 |@@@@@ 11 + 8 | 0 + 9 |@@ 4 + 10 |@ 3 + 11 |@ 2 + 12 | 0 + 13 | 0 + 14 | 1 + 15 | 0 + + Keystroke latency distribution (ms), + + value ------------- Distribution ------------- count + 4 | 0 + 8 | 1 + 16 | 5 + 32 |@@@@@ 66 + 64 |@@@@@@@@@@@@@@@@@@@@ 247 + 128 |@@@@@@@@@@@@@ 167 + 256 |@ 16 + 512 | 0 + diff --git a/cddl/contrib/dtracetoolkit/Examples/writebytes_example.txt b/cddl/contrib/dtracetoolkit/Examples/writebytes_example.txt new file mode 100644 index 000000000000..baa83fc971f5 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/writebytes_example.txt @@ -0,0 +1,26 @@ +The following is a demonstration of the writebytes.d script, + + +Here the writebytes.d script is run for a few seconds, then Ctrl-C is hit, + + # writebytes.d + dtrace: description 'sysinfo:::writech ' matched 4 probes + ^C + dtrace 1 + gnome-settings-d 8 + xscreensaver 8 + gnome-panel 8 + nautilus 8 + date 29 + wnck-applet 120 + bash 210 + mozilla-bin 1497 + ls 1947 + metacity 3172 + Xorg 7424 + gnome-terminal 51955 + + +In this interval the gnome-terminal command has successfully written 51.9 Kb, +while Xorg has written 7424 bytes. + diff --git a/cddl/contrib/dtracetoolkit/Examples/writedist_example.txt b/cddl/contrib/dtracetoolkit/Examples/writedist_example.txt new file mode 100644 index 000000000000..f334843e2c10 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/writedist_example.txt @@ -0,0 +1,38 @@ +The following is an example of the writedist.d script, + + +Here the writedist.d script is run for a few seconds, then Ctrl-C is hit, + + # writedist.d + dtrace: description 'sysinfo:::writech ' matched 4 probes + ^C + [...] + Xorg + value ------------- Distribution ------------- count + 16 | 0 + 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 169 + 64 |@@@ 16 + 128 |@@ 10 + 256 | 0 + + gnome-terminal + value ------------- Distribution ------------- count + 0 | 0 + 1 |@@ 6 + 2 | 0 + 4 | 0 + 8 | 1 + 16 |@ 2 + 32 |@@@ 7 + 64 | 0 + 128 |@@@@@@@@@@@@@@@@@@@@@@@ 63 + 256 |@@@@ 10 + 512 | 1 + 1024 |@@@@@ 13 + 2048 |@ 2 + 4096 |@@@ 7 + +This allows us to understand the write behaviour of each process. The +gnome-terminal command has executed 6 writes that returned 0 bytes, through +to 7 writes that were at least 4096 bytes (up to 8192). + diff --git a/cddl/contrib/dtracetoolkit/Examples/xcallsbypid_example.txt b/cddl/contrib/dtracetoolkit/Examples/xcallsbypid_example.txt new file mode 100644 index 000000000000..1593b62de627 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/xcallsbypid_example.txt @@ -0,0 +1,17 @@ +The following is a demonstration of the xcallsbypid.d script, + + # xcallsbypid.d + Tracing... Hit Ctrl-C to end. + ^C + PID CMD XCALLS + 215 utmpd 3 + 6350 bash 3 + 6351 bash 3 + 6350 ls 24 + 0 sched 48 + 6349 dtrace 93 + 6351 find 5718 + +In the above output, we can see the find command with PID 6351 has caused +5718 cross calls. + diff --git a/cddl/contrib/dtracetoolkit/Examples/xvmstat_example.txt b/cddl/contrib/dtracetoolkit/Examples/xvmstat_example.txt new file mode 100644 index 000000000000..544bd985e8bd --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/xvmstat_example.txt @@ -0,0 +1,44 @@ +The following is a demonstration of the xvmstat program. + + +Here we run it with no arguments. It will default to 1 second samples, and +will run forever, + + # xvmstat + w swap free re maj mf cow pro sr epi epo epf api apo apf fpi fpo fpf + 0 1025 73 2 0 21 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1025 73 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 + 0 1025 73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1025 73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1025 73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1025 73 199 42 166 21 41 0 0 0 0 0 0 0 42 0 0 + 0 1025 73 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 + 0 1025 73 4404 47 175 26 30 0 0 0 0 0 0 0 48 0 0 + 0 1025 73 433 0 0 0 14 0 0 0 0 0 0 0 0 0 0 + 0 1025 73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1025 73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1025 73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + ^C + +Both "swap" and "free" are in units of megabytes, the rest are in units of +pages. "maj" is major faults - a useful addition to the output. + +There is no summary since boot line, as this program in not using the +Kstat data. + + + +The following runs xvmstat with a 5 second interval, + + # xvmstat 5 + w swap free re maj mf cow pro sr epi epo epf api apo apf fpi fpo fpf + 0 1025 72 1531 2 40 5 9 0 0 0 0 0 0 0 2 0 0 + 0 1025 72 1534 0 36 5 9 0 0 0 0 0 0 0 0 0 0 + 0 1025 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1025 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1025 72 5 1 82 16 25 0 0 0 0 0 0 0 1 0 0 + 0 1025 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + ^C + +The values from "re" to "fpf" are per second values. + diff --git a/cddl/contrib/dtracetoolkit/Examples/zvmstat_example.txt b/cddl/contrib/dtracetoolkit/Examples/zvmstat_example.txt new file mode 100644 index 000000000000..cb070c5d3e58 --- /dev/null +++ b/cddl/contrib/dtracetoolkit/Examples/zvmstat_example.txt @@ -0,0 +1,34 @@ +The following is a demonstration of the zvmstat command, which provides +vmstat style info per zone using DTrace. + +Here we run zvmstat with an interval of 5 seconds. This is a server that +only has two zones, "global" and "workzone1", + + # zvmstat 5 + ZONE re mf fr sr epi epo epf api apo apf fpi fpo fpf + global 62 340 0 0 0 0 0 0 0 0 0 0 0 + workzone1 4 2 0 0 0 0 0 0 0 0 0 0 0 + ZONE re mf fr sr epi epo epf api apo apf fpi fpo fpf + global 1132 484 0 0 2 0 0 0 0 0 832 0 0 + workzone1 0 0 0 0 0 0 0 0 0 0 0 0 0 + ZONE re mf fr sr epi epo epf api apo apf fpi fpo fpf + global 50 319 2 0 2 0 0 0 0 0 579 2 2 + workzone1 0 0 0 0 0 0 0 0 0 0 0 0 0 + ZONE re mf fr sr epi epo epf api apo apf fpi fpo fpf + global 54 317 0 0 0 0 0 0 0 0 0 0 0 + workzone1 0 0 0 0 0 0 0 0 0 0 0 0 0 + ZONE re mf fr sr epi epo epf api apo apf fpi fpo fpf + global 54 316 1 0 0 0 0 0 0 0 0 1 1 + workzone1 0 0 0 0 0 0 0 0 0 0 0 0 0 + ZONE re mf fr sr epi epo epf api apo apf fpi fpo fpf + global 157 659 1 0 10 0 0 0 0 0 3 2 1 + workzone1 770 1085 0 0 48 0 0 0 0 0 928 0 0 + ZONE re mf fr sr epi epo epf api apo apf fpi fpo fpf + global 56 317 0 0 6 0 0 0 0 0 2 0 0 + workzone1 1478 21 0 0 0 0 0 0 0 0 1635 0 0 + +During the first few samples, some filesystem activity can be observed in +the global zone, created by a "find /" in the global. In the last few samples, +filesystem activity can be seen in the non-global zone "workzone1" - this +time created by running a "find /" within the non-global zone, + |