diff options
Diffstat (limited to 'Examples/j_profile_example.txt')
-rw-r--r-- | Examples/j_profile_example.txt | 209 |
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 + + |