I am profiling java server . I am looking at the flame graph : http://www.brendangregg.com/flamegraphs.html . I have couple of questions on how to interpret flame profile . I am new to java, so they may sound very basic.
1) in the profile , the top frame i observe libjvm_so takes 38.6% cpu. Is this normal in java process and server ? What exactly is this shared object and is it usual that it takes so much of the processing ?
2) What does a it mean for function/stack to take x% . Is this relative or absolute ? x% of the total cpu usage by process or x% cpu. This brings me to my second question, when i compare 2 flame graphs , is comparing normalized by over all cpu usage of the process ? that is if a method takes 10% in one profile and takes 15% in another profile, does it mean the function is actually consuming more cpu. Or can it be the case the initial process the overall cpu usage was 50% but in the second process the cpu usage was 30% , so in absolute terms the second profile shows decreased cpu usage for the function. ( 10% of 50% is greater than 15% of 30%).