Fully featured low overhead profiler for Java EE and Java SE platforms.
Ultimate profiling and monitoring solution for Gradle, Maven, Ant, JUnit and TestNG.
Easy to use performance and memory profiler for .NET framework.

Reading the Merged Callees

Moderators: Vladimir Kondratyev, Anton Katilin

Reading the Merged Callees

Postby efahimi » Thu Feb 04, 2016 5:12 am

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
efahimi
 
Posts: 8
Joined: Fri Oct 09, 2015 12:28 am

Re: Reading the Merged Callees

Postby Anton Katilin » Thu Feb 04, 2016 12:00 pm

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 support@yourkit.com if you cannot share it here.)

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

Re: Reading the Merged Callees

Postby Anton Katilin » Thu Feb 04, 2016 12:04 pm

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?
Anton Katilin
 
Posts: 5575
Joined: Wed Aug 11, 2004 8:37 am

Re: Reading the Merged Callees

Postby efahimi » Thu Feb 04, 2016 11:26 pm

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

Postby efahimi » Thu Feb 04, 2016 11:41 pm

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.
efahimi
 
Posts: 8
Joined: Fri Oct 09, 2015 12:28 am

Re: Reading the Merged Callees

Postby Anton Katilin » Fri Feb 05, 2016 10:24 am

Hi,

Could you please upload the ZIP to a file sharing service like DropBox or Google Drive and send us the download link.
Anton Katilin
 
Posts: 5575
Joined: Wed Aug 11, 2004 8:37 am

Re: Reading the Merged Callees

Postby efahimi » Fri Feb 05, 2016 6:06 pm

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.
efahimi
 
Posts: 8
Joined: Fri Oct 09, 2015 12:28 am

Re: Reading the Merged Callees

Postby Anton Katilin » Fri Feb 05, 2016 6:12 pm

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.
Anton Katilin
 
Posts: 5575
Joined: Wed Aug 11, 2004 8:37 am

Re: Reading the Merged Callees

Postby efahimi » Fri Feb 05, 2016 7:42 pm

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.
efahimi
 
Posts: 8
Joined: Fri Oct 09, 2015 12:28 am

Re: Reading the Merged Callees

Postby Anton Katilin » Fri Feb 05, 2016 8:35 pm

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?
Anton Katilin
 
Posts: 5575
Joined: Wed Aug 11, 2004 8:37 am

Re: Reading the Merged Callees

Postby efahimi » Fri Feb 05, 2016 9:53 pm

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"
efahimi
 
Posts: 8
Joined: Fri Oct 09, 2015 12:28 am

Re: Reading the Merged Callees

Postby Anton Katilin » Mon Feb 08, 2016 9:47 am

Unfortunately, this information was not enough to identify the problem. We still need a snapshot, we need to check its raw data structures.
Anton Katilin
 
Posts: 5575
Joined: Wed Aug 11, 2004 8:37 am


Return to Java Profiler

Who is online

Users browsing this forum: Bing [Bot] and 7 guests

cron