j_stat.d revision 1
080575042aba2197b425ebfd52061dea061a9aa1xy#!/usr/sbin/dtrace -Zs
080575042aba2197b425ebfd52061dea061a9aa1xy/*
080575042aba2197b425ebfd52061dea061a9aa1xy * j_stat.d - Java operation stats using DTrace.
080575042aba2197b425ebfd52061dea061a9aa1xy * Written for the Java hotspot DTrace provider.
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * $Id: j_stat.d 64 2007-10-04 08:35:29Z claire $
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * This traces activity from all Java processes on the system with hotspot
d5c3073dbbd835e1e9b7dca0c6c770cf3cc20afachenlu chen - Sun Microsystems - Beijing China * provider support (1.6.0). Method calls and object allocation are only
080575042aba2197b425ebfd52061dea061a9aa1xy * visible when using the flag "+ExtendedDTraceProbes". eg,
080575042aba2197b425ebfd52061dea061a9aa1xy * java -XX:+ExtendedDTraceProbes classfile
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * USAGE: j_stat.d [interval [count]]
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * FIELDS:
080575042aba2197b425ebfd52061dea061a9aa1xy * EXEC/s Java programs executed per second, including
080575042aba2197b425ebfd52061dea061a9aa1xy * those without Java provider support
080575042aba2197b425ebfd52061dea061a9aa1xy * THREAD/s Threads created, per second
080575042aba2197b425ebfd52061dea061a9aa1xy * METHOD/s Methods called, per second
080575042aba2197b425ebfd52061dea061a9aa1xy * OBJNEW/s Objects created, per second
080575042aba2197b425ebfd52061dea061a9aa1xy * CLOAD/s Class loads, per second
3f64cd552fee350c8075ec62765e9a6f9caef1a8guoqing zhu - Sun Microsystems - Beijing China * EXCP/s Exceptions raised, per second
193974072f41a843678abf5f61979c748687e66bSherry Moore * GC/s Garbage collects, per second
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * The numbers are per second counts for the interval specified. The default
080575042aba2197b425ebfd52061dea061a9aa1xy * interval is 1 second.
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * If you see a count in "EXECS" but not in the other columns, then your
080575042aba2197b425ebfd52061dea061a9aa1xy * Java software is probably not running with the DTrace hotspot provider.
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * If you see counts in "CLOAD" but not in "METHODS", then you Java
080575042aba2197b425ebfd52061dea061a9aa1xy * software probably isn't running with "+ExtendedDTraceProbes".
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * COPYRIGHT: Copyright (c) 2007 Brendan Gregg.
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * CDDL HEADER START
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * The contents of this file are subject to the terms of the
080575042aba2197b425ebfd52061dea061a9aa1xy * Common Development and Distribution License, Version 1.0 only
080575042aba2197b425ebfd52061dea061a9aa1xy * (the "License"). You may not use this file except in compliance
080575042aba2197b425ebfd52061dea061a9aa1xy * with the License.
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * You can obtain a copy of the license at Docs/cddl1.txt
080575042aba2197b425ebfd52061dea061a9aa1xy * or http://www.opensolaris.org/os/licensing.
080575042aba2197b425ebfd52061dea061a9aa1xy * See the License for the specific language governing permissions
080575042aba2197b425ebfd52061dea061a9aa1xy * and limitations under the License.
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * CDDL HEADER END
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * 09-Sep-2007 Brendan Gregg Created this.
080575042aba2197b425ebfd52061dea061a9aa1xy */
080575042aba2197b425ebfd52061dea061a9aa1xy
080575042aba2197b425ebfd52061dea061a9aa1xy#pragma D option quiet
080575042aba2197b425ebfd52061dea061a9aa1xy#pragma D option defaultargs
080575042aba2197b425ebfd52061dea061a9aa1xy
080575042aba2197b425ebfd52061dea061a9aa1xyinline int SCREEN = 21;
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng
080575042aba2197b425ebfd52061dea061a9aa1xydtrace:::BEGIN
080575042aba2197b425ebfd52061dea061a9aa1xy{
080575042aba2197b425ebfd52061dea061a9aa1xy execs = threads = methods = objnew = cload = gc = exception = 0;
080575042aba2197b425ebfd52061dea061a9aa1xy lines = SCREEN + 1;
47b7744cbea59975a6b583125b7ed1ff2ac45313yy interval = $1 ? $1 : 1;
080575042aba2197b425ebfd52061dea061a9aa1xy counts = $2 ? $2 : -1;
080575042aba2197b425ebfd52061dea061a9aa1xy secs = interval;
080575042aba2197b425ebfd52061dea061a9aa1xy first = 1;
080575042aba2197b425ebfd52061dea061a9aa1xy}
080575042aba2197b425ebfd52061dea061a9aa1xy
080575042aba2197b425ebfd52061dea061a9aa1xyprofile:::tick-1sec
080575042aba2197b425ebfd52061dea061a9aa1xy{
080575042aba2197b425ebfd52061dea061a9aa1xy secs--;
c7770590c6dc06be2588a5c21427e2d823baa989mx}
080575042aba2197b425ebfd52061dea061a9aa1xy
080575042aba2197b425ebfd52061dea061a9aa1xy/*
9b6541b318d01d0d83bfb98699a7f09e35f37951gl * Print Header
9b6541b318d01d0d83bfb98699a7f09e35f37951gl */
9b6541b318d01d0d83bfb98699a7f09e35f37951gldtrace:::BEGIN,
9b6541b318d01d0d83bfb98699a7f09e35f37951glprofile:::tick-1sec
25f2d433de915875c8393f0b0dc14aa155997ad0xy/first || (secs == 0 && lines > SCREEN)/
080575042aba2197b425ebfd52061dea061a9aa1xy{
d5c3073dbbd835e1e9b7dca0c6c770cf3cc20afachenlu chen - Sun Microsystems - Beijing China printf("%-20s %6s %8s %8s %8s %8s %6s %6s\n", "TIME", "EXEC/s",
d5c3073dbbd835e1e9b7dca0c6c770cf3cc20afachenlu chen - Sun Microsystems - Beijing China "THREAD/s", "METHOD/s", "OBJNEW/s", "CLOAD/s", "EXCP/s", "GC/s");
d5c3073dbbd835e1e9b7dca0c6c770cf3cc20afachenlu chen - Sun Microsystems - Beijing China lines = 0;
d5c3073dbbd835e1e9b7dca0c6c770cf3cc20afachenlu chen - Sun Microsystems - Beijing China first = 0;
d5c3073dbbd835e1e9b7dca0c6c770cf3cc20afachenlu chen - Sun Microsystems - Beijing China}
d5c3073dbbd835e1e9b7dca0c6c770cf3cc20afachenlu chen - Sun Microsystems - Beijing China
d5c3073dbbd835e1e9b7dca0c6c770cf3cc20afachenlu chen - Sun Microsystems - Beijing China/*
080575042aba2197b425ebfd52061dea061a9aa1xy * Tally Data
080575042aba2197b425ebfd52061dea061a9aa1xy */
080575042aba2197b425ebfd52061dea061a9aa1xyproc:::exec-success
080575042aba2197b425ebfd52061dea061a9aa1xy/execname == "java"/
0c56b8d9d1c30af2e78d0a6fd8a6a70aa5310099changqing li - Sun Microsystems - Beijing China{
080575042aba2197b425ebfd52061dea061a9aa1xy execs++;
c7770590c6dc06be2588a5c21427e2d823baa989mx}
43a176879122f7764767ab85eb539f89d65cdd67Miles Xu, Sun Microsystems
43a176879122f7764767ab85eb539f89d65cdd67Miles Xu, Sun Microsystemshotspot*:::thread-start
4d7379630d53d9992780329b674af8c85935e858xiangtao you - Sun Microsystems - Beijing China{
4d7379630d53d9992780329b674af8c85935e858xiangtao you - Sun Microsystems - Beijing China threads++;
c7770590c6dc06be2588a5c21427e2d823baa989mx}
4d7379630d53d9992780329b674af8c85935e858xiangtao you - Sun Microsystems - Beijing China
4d7379630d53d9992780329b674af8c85935e858xiangtao you - Sun Microsystems - Beijing Chinahotspot*:::method-entry
080575042aba2197b425ebfd52061dea061a9aa1xy{
080575042aba2197b425ebfd52061dea061a9aa1xy methods++;
080575042aba2197b425ebfd52061dea061a9aa1xy}
080575042aba2197b425ebfd52061dea061a9aa1xy
080575042aba2197b425ebfd52061dea061a9aa1xyhotspot*:::object-alloc
080575042aba2197b425ebfd52061dea061a9aa1xy{
080575042aba2197b425ebfd52061dea061a9aa1xy oalloc++;
080575042aba2197b425ebfd52061dea061a9aa1xy}
080575042aba2197b425ebfd52061dea061a9aa1xy
080575042aba2197b425ebfd52061dea061a9aa1xyhotspot*:::class-loaded
25f2d433de915875c8393f0b0dc14aa155997ad0xy{
25f2d433de915875c8393f0b0dc14aa155997ad0xy cload++;
25f2d433de915875c8393f0b0dc14aa155997ad0xy}
25f2d433de915875c8393f0b0dc14aa155997ad0xy
25f2d433de915875c8393f0b0dc14aa155997ad0xyhotspot*:::gc-begin
25f2d433de915875c8393f0b0dc14aa155997ad0xy{
25f2d433de915875c8393f0b0dc14aa155997ad0xy gc++;
25f2d433de915875c8393f0b0dc14aa155997ad0xy}
25f2d433de915875c8393f0b0dc14aa155997ad0xy
25f2d433de915875c8393f0b0dc14aa155997ad0xyhotspot*:::ExceptionOccurred-entry
25f2d433de915875c8393f0b0dc14aa155997ad0xy{
25f2d433de915875c8393f0b0dc14aa155997ad0xy exception++;
0c56b8d9d1c30af2e78d0a6fd8a6a70aa5310099changqing li - Sun Microsystems - Beijing China}
25f2d433de915875c8393f0b0dc14aa155997ad0xy
25f2d433de915875c8393f0b0dc14aa155997ad0xy/*
25f2d433de915875c8393f0b0dc14aa155997ad0xy * Print Output
25f2d433de915875c8393f0b0dc14aa155997ad0xy */
25f2d433de915875c8393f0b0dc14aa155997ad0xyprofile:::tick-1sec
25f2d433de915875c8393f0b0dc14aa155997ad0xy/secs == 0/
25f2d433de915875c8393f0b0dc14aa155997ad0xy{
25f2d433de915875c8393f0b0dc14aa155997ad0xy printf("%-20Y %6d %8d %8d %8d %8d %6d %6d\n", walltimestamp,
25f2d433de915875c8393f0b0dc14aa155997ad0xy execs / interval, threads / interval, methods / interval,
25f2d433de915875c8393f0b0dc14aa155997ad0xy oalloc / interval, cload / interval, exception / interval,
25f2d433de915875c8393f0b0dc14aa155997ad0xy gc / interval);
25f2d433de915875c8393f0b0dc14aa155997ad0xy execs = threads = methods = oalloc = cload = gc = exception = 0;
9ce7e93c0e8e6d2b400f40e9c5742b1d6682611ecc secs = interval;
0c56b8d9d1c30af2e78d0a6fd8a6a70aa5310099changqing li - Sun Microsystems - Beijing China lines++;
25f2d433de915875c8393f0b0dc14aa155997ad0xy counts--;
25f2d433de915875c8393f0b0dc14aa155997ad0xy}
25f2d433de915875c8393f0b0dc14aa155997ad0xy
25f2d433de915875c8393f0b0dc14aa155997ad0xy/*
47b7744cbea59975a6b583125b7ed1ff2ac45313yy * End
1bc1c72171ee0c5d77203ddffb90219d991bd6e8guoqing zhu - Sun Microsystems - Beijing China */
1bc1c72171ee0c5d77203ddffb90219d991bd6e8guoqing zhu - Sun Microsystems - Beijing Chinaprofile:::tick-1sec
1bc1c72171ee0c5d77203ddffb90219d991bd6e8guoqing zhu - Sun Microsystems - Beijing China/counts == 0/
1bc1c72171ee0c5d77203ddffb90219d991bd6e8guoqing zhu - Sun Microsystems - Beijing China{
47b7744cbea59975a6b583125b7ed1ff2ac45313yy exit(0);
47b7744cbea59975a6b583125b7ed1ff2ac45313yy}
47b7744cbea59975a6b583125b7ed1ff2ac45313yy