summaryrefslogtreecommitdiff
path: root/Examples/j_profile_example.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/j_profile_example.txt')
-rw-r--r--Examples/j_profile_example.txt209
1 files changed, 209 insertions, 0 deletions
diff --git a/Examples/j_profile_example.txt b/Examples/j_profile_example.txt
new file mode 100644
index 000000000000..bb45c4b3f759
--- /dev/null
+++ b/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
+
+