xref: /netbsd-src/external/cddl/dtracetoolkit/dist/Docs/Examples/j_profile_example.txt (revision c29d51755812ace2e87aeefdb06cb2b4dac7087a)
1The following are examples of j_profile.d.
2
3This script samples on-CPU stack traces and prints them with Java
4translations.  With DTrace, as well as tracing events, you can also sample
5them.  Each approach has its own advantages and disadvantages and you are
6encouraged to try both when investigating performance issues (especially
7tracing).  Sampling is inaccurate and can miss events, yet is a quick and
8easy way to discover a certain set of performance issues involving on-CPU
9load.
10
11This script samples at 101 Hertz, printing out the 25 most frequently seen
12stack traces down to 10 lines deep. All of these values can be tweaked in
13the script.
14
15Here we run the script on Code/Java/Func_loop.  The argument fed to the script
16is the PID of the Java program we wish to investigate.  Here the raw output is
17show, then again after filtering using c++filt.
18
19# j_profile.d -p 1312
20Sampling 10-level stacks at 101 Hertz... Hit Ctrl-C to end.
21^C
22
23Top 25 most frequently sampled stacks,
24
25
26              Func_loop.func_c()V
27              Func_loop.func_b()V
28              Func_loop.func_a()V
29              Func_loop.main([Ljava/lang/String;)V
30              StubRoutines (1)
31              libjvm.so`__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x1a3
32              libjvm.so`__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27
33              libjvm.so`__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x2f
34              libjvm.so`__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_+0x1df
35              libjvm.so`jni_CallStaticVoidMethod+0x15d
36               30
37
38              Func_loop.func_c()V
39              Func_loop.func_b()V
40              Func_loop.func_a()V
41              Func_loop.main([Ljava/lang/String;)V
42              StubRoutines (1)
43              libjvm.so`__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x1a3
44              libjvm.so`__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27
45              libjvm.so`__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x2f
46              libjvm.so`__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_+0x1df
47              libjvm.so`jni_CallStaticVoidMethod+0x15d
48               31
49
50              Func_loop.func_c()V
51              Func_loop.func_b()V
52              Func_loop.func_a()V
53              Func_loop.main([Ljava/lang/String;)V
54              StubRoutines (1)
55              libjvm.so`__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x1a3
56              libjvm.so`__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27
57              libjvm.so`__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x2f
58              libjvm.so`__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_+0x1df
59              libjvm.so`jni_CallStaticVoidMethod+0x15d
60               32
61
62              Func_loop.func_c()V
63              Func_loop.func_b()V
64              Func_loop.func_a()V
65              Func_loop.main([Ljava/lang/String;)V
66              StubRoutines (1)
67              libjvm.so`__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x1a3
68              libjvm.so`__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27
69              libjvm.so`__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x2f
70              libjvm.so`__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_+0x1df
71              libjvm.so`jni_CallStaticVoidMethod+0x15d
72               33
73
74              Func_loop.func_c()V
75              Func_loop.func_b()V
76              Func_loop.func_a()V
77              Func_loop.main([Ljava/lang/String;)V
78              StubRoutines (1)
79              libjvm.so`__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x1a3
80              libjvm.so`__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27
81              libjvm.so`__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x2f
82              libjvm.so`__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_+0x1df
83              libjvm.so`jni_CallStaticVoidMethod+0x15d
84               41
85
86              Func_loop.func_c()V
87              Func_loop.func_b()V
88              Func_loop.func_a()V
89              Func_loop.main([Ljava/lang/String;)V
90              StubRoutines (1)
91              libjvm.so`__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x1a3
92              libjvm.so`__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27
93              libjvm.so`__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x2f
94              libjvm.so`__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_+0x1df
95              libjvm.so`jni_CallStaticVoidMethod+0x15d
96               72
97
98              Func_loop.func_c()V
99              Func_loop.func_b()V
100              Func_loop.func_a()V
101              Func_loop.main([Ljava/lang/String;)V
102              StubRoutines (1)
103              libjvm.so`__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x1a3
104              libjvm.so`__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_+0x27
105              libjvm.so`__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_+0x2f
106              libjvm.so`__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_+0x1df
107              libjvm.so`jni_CallStaticVoidMethod+0x15d
108              116
109
110
111The most frequent stacks had Func_loop.func_c() on CPU, with a stack trace
112showing func_b() and func_a() - as expected from the source to Func_loop.java.
113
114
115Now passing that output through c++filt to translate the compiled C++ symbols
116of the JVM.
117
118# j_profile.d -p 1312 -o out.j_profile
119# c++filt out.j_profile
120Sampling 10-level stacks at 101 Hertz... Hit Ctrl-C to end.
121
122Top 25 most frequently sampled stacks,
123
124
125              Func_loop.func_c()V
126              Func_loop.func_b()V
127              Func_loop.func_a()V
128              Func_loop.main([Ljava/lang/String;)V
129              StubRoutines (1)
130              libjvm.so`void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x1a3
131              libjvm.so`void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x27
132              libjvm.so`void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x2f
133              libjvm.so`void jni_invoke_static(JNIEnv_*,JavaValue*,_jobject*,JNICallType,_jmethodID*,JNI_ArgumentPusher*,Thread*)+0x1df
134              libjvm.so`jni_CallStaticVoidMethod+0x15d
135               10
136
137              Func_loop.func_c()V
138              Func_loop.func_b()V
139              Func_loop.func_a()V
140              Func_loop.main([Ljava/lang/String;)V
141              StubRoutines (1)
142              libjvm.so`void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x1a3
143              libjvm.so`void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x27
144              libjvm.so`void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x2f
145              libjvm.so`void jni_invoke_static(JNIEnv_*,JavaValue*,_jobject*,JNICallType,_jmethodID*,JNI_ArgumentPusher*,Thread*)+0x1df
146              libjvm.so`jni_CallStaticVoidMethod+0x15d
147               13
148
149              Func_loop.func_c()V
150              Func_loop.func_b()V
151              Func_loop.func_a()V
152              Func_loop.main([Ljava/lang/String;)V
153              StubRoutines (1)
154              libjvm.so`void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x1a3
155              libjvm.so`void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x27
156              libjvm.so`void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x2f
157              libjvm.so`void jni_invoke_static(JNIEnv_*,JavaValue*,_jobject*,JNICallType,_jmethodID*,JNI_ArgumentPusher*,Thread*)+0x1df
158              libjvm.so`jni_CallStaticVoidMethod+0x15d
159               19
160
161              Func_loop.func_c()V
162              Func_loop.func_b()V
163              Func_loop.func_a()V
164              Func_loop.main([Ljava/lang/String;)V
165              StubRoutines (1)
166              libjvm.so`void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x1a3
167              libjvm.so`void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x27
168              libjvm.so`void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x2f
169              libjvm.so`void jni_invoke_static(JNIEnv_*,JavaValue*,_jobject*,JNICallType,_jmethodID*,JNI_ArgumentPusher*,Thread*)+0x1df
170              libjvm.so`jni_CallStaticVoidMethod+0x15d
171               21
172
173              Func_loop.func_c()V
174              Func_loop.func_b()V
175              Func_loop.func_a()V
176              Func_loop.main([Ljava/lang/String;)V
177              StubRoutines (1)
178              libjvm.so`void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x1a3
179              libjvm.so`void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x27
180              libjvm.so`void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x2f
181              libjvm.so`void jni_invoke_static(JNIEnv_*,JavaValue*,_jobject*,JNICallType,_jmethodID*,JNI_ArgumentPusher*,Thread*)+0x1df
182              libjvm.so`jni_CallStaticVoidMethod+0x15d
183               29
184
185              Func_loop.func_c()V
186              Func_loop.func_b()V
187              Func_loop.func_a()V
188              Func_loop.main([Ljava/lang/String;)V
189              StubRoutines (1)
190              libjvm.so`void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x1a3
191              libjvm.so`void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x27
192              libjvm.so`void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x2f
193              libjvm.so`void jni_invoke_static(JNIEnv_*,JavaValue*,_jobject*,JNICallType,_jmethodID*,JNI_ArgumentPusher*,Thread*)+0x1df
194              libjvm.so`jni_CallStaticVoidMethod+0x15d
195               53
196
197              Func_loop.func_c()V
198              Func_loop.func_b()V
199              Func_loop.func_a()V
200              Func_loop.main([Ljava/lang/String;)V
201              StubRoutines (1)
202              libjvm.so`void JavaCalls::call_helper(JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x1a3
203              libjvm.so`void os::os_exception_wrapper(void(*)(JavaValue*,methodHandle*,JavaCallArguments*,Thread*),JavaValue*,methodHandle*,JavaCallArguments*,Thread*)+0x27
204              libjvm.so`void JavaCalls::call(JavaValue*,methodHandle,JavaCallArguments*,Thread*)+0x2f
205              libjvm.so`void jni_invoke_static(JNIEnv_*,JavaValue*,_jobject*,JNICallType,_jmethodID*,JNI_ArgumentPusher*,Thread*)+0x1df
206              libjvm.so`jni_CallStaticVoidMethod+0x15d
207               74
208
209
210