Reading the Merged Callees

Questions about YourKit Java Profiler
Post Reply
efahimi
Posts: 8
Joined: Fri Oct 09, 2015 12:28 am

Reading the Merged Callees

Post by efahimi »

Hi all,
I searched and could not find the answer to my question, so posting. Apologies if this is already discussed, just point me to it.

Below are few lines to illustrate the question (BTW, exporting removed the percentages, so could not use that).
This is basically a question on how to read the Merged Callees output.

Code: Select all

Merged Call Tree            Time (ms)       Own Time
---------------------      ------------     ------------
Method A                   216    100%          <0.1
  Method B                 109    50%            0
    Method C               109    50%            0
In Above, for line 1, I expected own time to be 108 ms since 50% is consumed by below methods, but Own Time shows only
<0.1.

I assume this is incorrect reading. Where can I find details on how to read/interpret this?

Thanks
Anton Katilin
Posts: 6172
Joined: Wed Aug 11, 2004 8:37 am

Re: Reading the Merged Callees

Post by Anton Katilin »

Hi,

You are right, the own time of Method A should be 216 - 109.

However, we didn't manage to reproduce this problem. There should be something special in your case. Could you please provide the problematic snapshot file (you may send it to [email protected] if you cannot share it here.)

Best regards,
Anton
Anton Katilin
Posts: 6172
Joined: Wed Aug 11, 2004 8:37 am

Re: Reading the Merged Callees

Post by Anton Katilin »

Update:
BTW, exporting removed the percentages
Do you see the problem in export results only, or in the UI too?

If it's a problem only with export, to what format did you export?
Did you export from UI or from command line?
efahimi
Posts: 8
Joined: Fri Oct 09, 2015 12:28 am

Re: Reading the Merged Callees

Post by efahimi »

Hi Anton,
The snapshot is 240MB zipped. I don't think I can send that through mail.
Do you have a ftp server by any chance?
Thanks.
efahimi
Posts: 8
Joined: Fri Oct 09, 2015 12:28 am

Re: Reading the Merged Callees

Post by efahimi »

On the issue of exporting the UI output, the percentages shows fine in UI.
I just tried html and txt and they show the percentages. The one does not show is the CSV.
Thanks.
Anton Katilin
Posts: 6172
Joined: Wed Aug 11, 2004 8:37 am

Re: Reading the Merged Callees

Post by Anton Katilin »

Hi,

Could you please upload the ZIP to a file sharing service like DropBox or Google Drive and send us the download link.
efahimi
Posts: 8
Joined: Fri Oct 09, 2015 12:28 am

Re: Reading the Merged Callees

Post by efahimi »

Unfortunately I could not clear sending the snapshot with our security.
Maybe when I get a chance, I'll build a simple program to demonstrate that.

Thanks.
Anton Katilin
Posts: 6172
Joined: Wed Aug 11, 2004 8:37 am

Re: Reading the Merged Callees

Post by Anton Katilin »

Can you reproduce the problem with the Demo launched from the profiler UI's Welcome screeen?
Can you send at least a screenshot instead of the full snapshot? You can blur sensitive identifiers. Actually, what we need is to understand the context.
efahimi
Posts: 8
Joined: Fri Oct 09, 2015 12:28 am

Re: Reading the Merged Callees

Post by efahimi »

I tried the demo and that looks good. I do not see the same issue there.
Can you provide a fix for the CSV export (ie, to show the percentage)? CSV file will be fairly easy to redact.
The html and text is nightmare to work with.
Anton Katilin
Posts: 6172
Joined: Wed Aug 11, 2004 8:37 am

Re: Reading the Merged Callees

Post by Anton Katilin »

Our intention is that HTML and text export formats are to be read by a human, while CSV and XML are for some sort of automatic processing.

We keep CSV non redundant because of our understanding of its purpose, thus the percents are not added as we believe they can be calculated from other exported values.

As I understand, you want percent columns be added to the CSV output, right? How do you use these exported CSV files?
efahimi
Posts: 8
Joined: Fri Oct 09, 2015 12:28 am

Re: Reading the Merged Callees

Post by efahimi »

The only reason I wanted CSV is for ease of editing since I need to obfuscate the method/class names.
Not sure if this is useful since the % and less than sign (<) for Own Time is stripped off during the export to CSV.

"Merged Call Tree","Time (ms)","Own Time (ms)","Invocation Count","Level"
"mut.global.impl.components.one.userProfileCard.UserProfManager.loadUserInfo() UserProfManager.java","216","0","1", "1"
"mut.milange.internal.impl.MyServiceImpl.getRecs(RInfo, boolean, Mode, Set, Clause, List, Integer, Integer, boolean) MyServiceImpl.java","109","0","1", "2"
"mut.milange.internal.impl.MyServiceImpl.getRecs(RInfo, boolean, Mode, Set, Clause, List, WithDataCategoryCondition, Integer, Integer, String) MyServiceImpl.java","109","0","1", "3"
"mut.milange.internal.impl.MyServiceImpl.getRecs(RInfo, boolean, Mode, Set, Clause, List, WithDataCategoryCondition, Integer, Integer, String, SoqlOptions) MyServiceImpl.java","109","0","1", "4"
"mut.milange.internal.impl.MyServiceImpl.getRWMDC(RInfo, boolean, Mode, Set, Clause, List, List, Integer, Integer, String, SoqlOptions) MyServiceImpl.java","109","0","1", "5"
"mut.milange.internal.impl.MyServiceImpl.getRWMDC(RInfo, boolean, Mode, Set, String, Clause, List, List, Integer, Integer, String, SoqlOptions) MyServiceImpl.java","109","0","1", "6"
"mut.milange.internal.impl.MyServiceImpl.getRecs(RInfo, boolean, Mode, Set, SoqlBuilder, SoqlOptions, Integer, String) MyServiceImpl.java","109","0","1", "7"
"mut.milange.internal.impl.MyServiceImpl.executeQuery(Mode, boolean, String, JigSaw, Integer) MyServiceImpl.java","109","0","1", "8"
"mut.milange.internal.utils.impl.JigSawImpl.query(String, Integer, boolean) JigSawImpl.java","109","0","1", "9"
"mut.milange.internal.utils.impl.JigSawImpl.query(String, Integer, boolean, boolean) JigSawImpl.java","109","0","1", "10"
"mut.milange.internal.utils.impl.JigSawImpl._query(String, Integer, boolean, boolean) JigSawImpl.java","103","0","1", "11"
"mut.milange.connection.wsc.PartnerConnectionWsc.query(String) PartnerConnectionWsc.java","94","0","1", "12"
"com.bangi.soap.partner.wsc.PartnerConnection.query(String) PartnerConnection.java","94","0","1", "13"
"com.bangi.ws.transport.SoapConnection.send(String, QName, XMLizable, QName, Class) SoapConnection.java","94","0","1", "14"
"com.bangi.ws.transport.JdkHttpTransport.connect(String, String) JdkHttpTransport.java","86","0","1", "15"
"com.bangi.ws.transport.JdkHttpTransport.connectLocal(String, HashMap) JdkHttpTransport.java","86","0","1", "16"
"com.bangi.ws.transport.JdkHttpTransport.connectLocal(String, HashMap, boolean) JdkHttpTransport.java","86","0","1", "17"
"com.bangi.ws.transport.JdkHttpTransport.connectRaw(String, HashMap, boolean) JdkHttpTransport.java","86","0","1", "18"
"sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream() HttpsURLConnectionImpl.java","86","0","1", "19"
"sun.net.www.protocol.http.HttpURLConnection.getOutputStream() HttpURLConnection.java","86","0","1", "20"
"sun.net.www.protocol.http.HttpURLConnection.getOutputStream0() HttpURLConnection.java","86","0","1", "21"
"sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect() AbstractDelegateHttpsURLConnection.java","86","0","1", "22"
"sun.net.www.protocol.https.HttpsClient.afterConnect() HttpsClient.java","55","0","1", "23"
"sun.security.ssl.SSLSocketImpl.startHandshake() SSLSocketImpl.java","54","0","1", "24"
"sun.security.ssl.SSLSocketImpl.startHandshake(boolean) SSLSocketImpl.java","54","0","1", "25"
"sun.security.ssl.SSLSocketImpl.performInitialHandshake() SSLSocketImpl.java","54","0","1", "26"
"sun.security.ssl.SSLSocketImpl.kickstartHandshake() SSLSocketImpl.java","36","0","1", "27"
"sun.security.ssl.Handshaker.activate(ProtocolVersion) Handshaker.java","30","0","1", "28"
"sun.security.ssl.Handshaker.getActiveCipherSuites() Handshaker.java","25","0","1", "29"
"sun.security.ssl.SSLAlgorithmConstraints.permits(Set, String, AlgorithmParameters) SSLAlgorithmConstraints.java","25","0","56", "30"
"sun.security.util.DisabledAlgorithmConstraints.permits(Set, String, AlgorithmParameters) DisabledAlgorithmConstraints.java","25","0","112", "31"
"sun.security.ssl.SSLAlgorithmConstraints$TLSDisabledAlgConstraints.decomposes(String) SSLAlgorithmConstraints.java","21","0","56", "32"
"sun.security.ssl.SSLAlgorithmConstraints$BasicDisabledAlgConstraints.decomposes(CipherSuite$BulkCipher) SSLAlgorithmConstraints.java","19","0","56", "33"
"sun.security.util.DisabledAlgorithmConstraints.decomposes(String) DisabledAlgorithmConstraints.java","18","0","56", "34"
"java.util.regex.Pattern.compile(String, int) Pattern.java","10","0","154", "35"
"java.util.regex.Pattern.<init>(String, int) Pattern.java","10","0","154", "36"
"java.util.regex.Pattern.compile() Pattern.java","9","1","154", "37"
"java.util.regex.Pattern.expr(Pattern$Node) Pattern.java","6","0","154", "38"
"java.util.regex.Pattern.sequence(Pattern$Node) Pattern.java","4","0","308", "39"
Anton Katilin
Posts: 6172
Joined: Wed Aug 11, 2004 8:37 am

Re: Reading the Merged Callees

Post by Anton Katilin »

Unfortunately, this information was not enough to identify the problem. We still need a snapshot, we need to check its raw data structures.
Post Reply