how to eliminate unnecessary modules from analysis

how to eliminate unnecessary modules from analysis

I am using VTune Performance Analyzer 6.1.
In the analysis I am seeing lot of unnecessary modules like advapi32.dll, ntdll.dll, gdi32.dll, kernal32.dll...etc. Is there a way to avoid these kind of modules from the analysis?....
Thanks in advance.

7 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Are you speaking about Call Graph ? If so, you have 2 possibilities:
1. Profile your application using default settings and remove unnecessary data from the results.
2. Use Advanced Call Graph Configuration in order to setting up explicitly what modules you want to profile. This will allow you to lower Call Graph overhead also.

1. Crreate a copy of your Call Graph activity results. After openning a copied results select all entries you want to delete in the upper table and press keyboard button. Call Graph will recalculate the results by associating the time of deleted functions with their callers.

2. While in the second page of Call Graph Configuration Wizard turn on "Modify default configuration when done with wizard". After you will finish creating Call Graph Activity "Advanced Activity Configuration" will open (You can open the same dialog by double-clicking on already created activity in a "Tunning Browser" window also). Ensure, that "Call Graph" is selected in the left pane. Press on the left "Configure" button - "Configure Call Graph" dialog will open. Now you can modify "Instrumentation level" for each module by double-clicking on the appropriate cell. You can also press "Advanced..." button and modify default instrumentation levels for different module categories, such as system DLLs, user DLLs, user EXE. Changing advanced settings will influence instrumentation levels for newly added modules that your application will load dynamically. Setting instrumentation level to "Minimal" will exclude selected module from instrumentation process and will not produce Call Graph results for this module. Time, that will be spent in the functions of excluded module will be associated with calling functions.

Hello Kdmitry,
Thank u very much for your reply. I will try this.
I have a java class and threre are 3 dll files which can be called from the java class. Now I want to do performance analysis and locate the bottleneck. So I planned to start from Sampling view. But in the sampling view it is not at all showing java class or the user dlls in the module list. Can u please tell me what I am missing...?

I can think of several reasons:
1. Use the profiling (JVMPI) command line switch - If you are working with the JRockit, IBM, or Sun JVMs, you'll need to add the "-Xrunjavaperf" (without the quotes) to the Java command line invocation. By that, you are telling the JVM to load the VTune Java profiler DLL, which will be able to map addresses of generated code to class files and source files.

2. Maybe your Java code is interpreted and not jitted. In this case, Sampling cannot help you. There is no code to sample.

3. Perhaps there aren't any samples in the Java code or in your DLLs, because the CPU does not execute code from those modules.

Hope it helps,

Hello boazt,
1. I am using Sun's JVM and I properly set the necessary options. My jave code has been executed properly and also output was generated. My java application wites the output to a file. I am able to see the output file.

2. I think JIT will be enabled by default. And hence I feel that my code has been jitted.

3. Unless otherwise the java code and other dlls invoked/executed I wont get the output file. As I am getting output file I feel there are samples in both java code and dlls.

One more thing is I am able to see the metod traces of both java code and dlls in the call graph view. I am getting problem in sampling view only.


Hello, Prasad.

Do you see java.exe in the Sampling results ?
If so, switch to Process view, find java process there and double-click on it. This will filter out all irrelevant data from the views.

in addition to very full and descriptive answer by Kdmitry to your original (not java related) question.

You can set "global" options for call graph collection:
In menu bar:
Configure->Options->Call Graph->Collectors
Choose "Minimal" for "System Dlls" in Default instrumentation level.

Since then, every call graph activity will include "minimal" (will not collect data) instrumentation for system Dlls like those you mentioned:
advapi32.dll, ntdll.dll, gdi32.dll, kernal32.dll...etc.

So you will not need to reconfigure each new created call graph activity.

Leave a Comment

Please sign in to add a comment. Not a member? Join today