1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of ustat. 2*387f9dfdSAndroid Build Coastguard Worker 3*387f9dfdSAndroid Build Coastguard Worker 4*387f9dfdSAndroid Build Coastguard Workerustat is a "top"-like tool for monitoring events in high-level languages. It 5*387f9dfdSAndroid Build Coastguard Workerprints statistics about garbage collections, method calls, object allocations, 6*387f9dfdSAndroid Build Coastguard Workerand various other events for every process that it recognizes with a Java, 7*387f9dfdSAndroid Build Coastguard WorkerNode, Perl, PHP, Python, Ruby, and Tcl runtime. 8*387f9dfdSAndroid Build Coastguard Worker 9*387f9dfdSAndroid Build Coastguard WorkerFor example: 10*387f9dfdSAndroid Build Coastguard Worker 11*387f9dfdSAndroid Build Coastguard Worker# ./ustat.py 12*387f9dfdSAndroid Build Coastguard WorkerTracing... Output every 10 secs. Hit Ctrl-C to end 13*387f9dfdSAndroid Build Coastguard Worker12:17:17 loadavg: 0.33 0.08 0.02 5/211 26284 14*387f9dfdSAndroid Build Coastguard Worker 15*387f9dfdSAndroid Build Coastguard WorkerPID CMDLINE METHOD/s GC/s OBJNEW/s CLOAD/s EXC/s THR/s 16*387f9dfdSAndroid Build Coastguard Worker3018 node/node 0 3 0 0 0 0 17*387f9dfdSAndroid Build Coastguard Worker^C 18*387f9dfdSAndroid Build Coastguard WorkerDetaching... 19*387f9dfdSAndroid Build Coastguard Worker 20*387f9dfdSAndroid Build Coastguard Worker 21*387f9dfdSAndroid Build Coastguard WorkerIf desired, you can instruct ustat to print a certain number of entries and 22*387f9dfdSAndroid Build Coastguard Workerexit, which can be useful to get a quick picture on what's happening on the 23*387f9dfdSAndroid Build Coastguard Workersystem over a short time interval. Here, we ask ustat to print 5-second 24*387f9dfdSAndroid Build Coastguard Workersummaries 12 times (for a total time of 1 minute): 25*387f9dfdSAndroid Build Coastguard Worker 26*387f9dfdSAndroid Build Coastguard Worker# ./ustat.py -C 5 12 27*387f9dfdSAndroid Build Coastguard WorkerTracing... Output every 5 secs. Hit Ctrl-C to end 28*387f9dfdSAndroid Build Coastguard Worker12:18:26 loadavg: 0.27 0.11 0.04 2/336 26455 29*387f9dfdSAndroid Build Coastguard Worker 30*387f9dfdSAndroid Build Coastguard WorkerPID CMDLINE METHOD/s GC/s OBJNEW/s CLOAD/s EXC/s THR/s 31*387f9dfdSAndroid Build Coastguard Worker3018 node/node 0 1 0 0 0 0 32*387f9dfdSAndroid Build Coastguard Worker 33*387f9dfdSAndroid Build Coastguard Worker12:18:31 loadavg: 0.33 0.12 0.04 2/336 26456 34*387f9dfdSAndroid Build Coastguard Worker 35*387f9dfdSAndroid Build Coastguard WorkerPID CMDLINE METHOD/s GC/s OBJNEW/s CLOAD/s EXC/s THR/s 36*387f9dfdSAndroid Build Coastguard Worker3018 node/node 0 0 0 0 0 0 37*387f9dfdSAndroid Build Coastguard Worker26439 java -XX:+ExtendedDT 2776045 0 0 0 0 0 38*387f9dfdSAndroid Build Coastguard Worker 39*387f9dfdSAndroid Build Coastguard Worker12:18:37 loadavg: 0.38 0.14 0.05 2/336 26457 40*387f9dfdSAndroid Build Coastguard Worker 41*387f9dfdSAndroid Build Coastguard WorkerPID CMDLINE METHOD/s GC/s OBJNEW/s CLOAD/s EXC/s THR/s 42*387f9dfdSAndroid Build Coastguard Worker3018 node/node 0 0 0 0 0 0 43*387f9dfdSAndroid Build Coastguard Worker26439 java -XX:+ExtendedDT 2804378 0 0 0 0 0 44*387f9dfdSAndroid Build Coastguard Worker 45*387f9dfdSAndroid Build Coastguard Worker(...more output omitted for brevity) 46*387f9dfdSAndroid Build Coastguard Worker 47*387f9dfdSAndroid Build Coastguard Worker 48*387f9dfdSAndroid Build Coastguard WorkerUSAGE message: 49*387f9dfdSAndroid Build Coastguard Worker 50*387f9dfdSAndroid Build Coastguard Worker# ./ustat.py -h 51*387f9dfdSAndroid Build Coastguard Workerusage: ustat.py [-h] [-l {java,node,perl,php,python,ruby,tcl}] [-C] 52*387f9dfdSAndroid Build Coastguard Worker [-S {cload,excp,gc,method,objnew,thread}] [-r MAXROWS] [-d] 53*387f9dfdSAndroid Build Coastguard Worker [interval] [count] 54*387f9dfdSAndroid Build Coastguard Worker 55*387f9dfdSAndroid Build Coastguard WorkerActivity stats from high-level languages. 56*387f9dfdSAndroid Build Coastguard Worker 57*387f9dfdSAndroid Build Coastguard Workerpositional arguments: 58*387f9dfdSAndroid Build Coastguard Worker interval output interval, in seconds 59*387f9dfdSAndroid Build Coastguard Worker count number of outputs 60*387f9dfdSAndroid Build Coastguard Worker 61*387f9dfdSAndroid Build Coastguard Workeroptional arguments: 62*387f9dfdSAndroid Build Coastguard Worker -h, --help show this help message and exit 63*387f9dfdSAndroid Build Coastguard Worker -l {java,node,perl,php,python,ruby,tcl}, --language {java,node,perl,php,python,ruby,tcl} 64*387f9dfdSAndroid Build Coastguard Worker language to trace (default: all languages) 65*387f9dfdSAndroid Build Coastguard Worker -C, --noclear don't clear the screen 66*387f9dfdSAndroid Build Coastguard Worker -S {cload,excp,gc,method,objnew,thread}, --sort {cload,excp,gc,method,objnew,thread} 67*387f9dfdSAndroid Build Coastguard Worker sort by this field (descending order) 68*387f9dfdSAndroid Build Coastguard Worker -r MAXROWS, --maxrows MAXROWS 69*387f9dfdSAndroid Build Coastguard Worker maximum rows to print, default 20 70*387f9dfdSAndroid Build Coastguard Worker -d, --debug Print the resulting BPF program (for debugging 71*387f9dfdSAndroid Build Coastguard Worker purposes) 72*387f9dfdSAndroid Build Coastguard Worker 73*387f9dfdSAndroid Build Coastguard Workerexamples: 74*387f9dfdSAndroid Build Coastguard Worker ./ustat # stats for all languages, 1 second refresh 75*387f9dfdSAndroid Build Coastguard Worker ./ustat -C # don't clear the screen 76*387f9dfdSAndroid Build Coastguard Worker ./ustat -l java # Java processes only 77*387f9dfdSAndroid Build Coastguard Worker ./ustat 5 # 5 second summaries 78*387f9dfdSAndroid Build Coastguard Worker ./ustat 5 10 # 5 second summaries, 10 times only 79