Community
cancel
Showing results for 
Search instead for 
Did you mean: 
blueplant
Beginner
48 Views

regarding VTune call graph

Jump to solution

Hi,

I'm new to VTune, I have sveral questions when I am using it, the application which I am testing is build by managed(c#) and unmanaged(c++) code and native code, I choose windows/linux profile and select call graph, after type the .exe file in the wizard and try to lunch it through VTune, it failed, at first the VS2008 was aotu launched but after severial seconds VS2008 crushed and got an error message(the error message is Runtime Error! Program:c:\\Progr...This application hase requested the runtime to terminate in an unusual way.please contact the application's support team for more information...) and another issue is that when I am trying to view the source of some .dllI always got the message saying "...line information is needed..." I did put the .pdb file in the same path as the .exe file...and the function name is messed up, but Iam able to view some of the other .dll's source. The third question is that, I use call graph to collect the data but every time after the running the activity I get many many .dlls some of these are not required for my analyzing, so I would like to know how to reduce the unnecessary dlls? Will it work it I check "no application to launch" then in the add to modules of interest list screen only add the the dlls which I need(is it necessary to add the .exe which will be launched manually also?), then launch the application manually? Can someone give the steps of how to do this? I'm really confused...Thanks a lot!

0 Kudos

Accepted Solutions
Peter_W_Intel
Employee
48 Views
Hi Pandaa,

Please see my answers again.

1. I suggest you to use Call graph .NET* profiling first. The benifitsare:a) Find a critical path first, so focus on functions which impact performance mainly. b) Adjust algorithm ifnecessary. c) EvaluateBIG wait timeon some functions and understand whythey areblocked. d) Evaluate workload on threads and may re-arrange tasks on threads, ...
Sampling .NET* profiling helps you to find hot functions (assume your algorithm is reasonable), we might tune code in architectural level - modify code or use Intel C++ compiler's advanced options.

2. No. You can select "All .NET* classes and all native modules" for .NET* call graph profiling. Nothing is to do for .NET* sampling profiling.

5. You don't need to specify DLLs in Call graph's configure - if executable depends on these DLLs (default, such as kernel32.dll, msvcrt90.dll, etc, ...).Only extra DLLs need to be specified, which will be loaded by executable at runtime.

Regards, Peter

View solution in original post

4 Replies
Peter_W_Intel
Employee
48 Views

Hi,

Assume that you are working on VTune Performance Analyzer.

1. When you used the tool for managed code or mix, you have to use select ".NET* profiling" for both sampling wizard and call graph wizard.

2. About VS 2008 crash issue - sometime maybe components are corrupted on integration mode. You can use standalone application, or uninstall/reinstall the product.

3. If you can't view source file, please check a) if you set compiler "/Zi" option with linker "/DEBUG" option to generate .PDB file (for Call graph, you have to use "/Fixed:no" linker option). b)ensure you have rebuilt program, and clean up stuff under ISM (folder should be under global data directory), then retry. c) It's betterto create a new project after doing a) & b)

4) If you want to reduce overhead from other DLLs, please go Call graph's cofigureto set their instrumentation levelto "minimal"- so there is no call graph data for those DLLs.

5) You can add extra interest of modules in Call graph's configure. If you don't need call graph data from executable, you still need to specify executable as launched application but set instrumentation level to "minimal".

Regards, Peter

blueplant
Beginner
48 Views
Hi Peter,

Thank you for your reply. I do work on VTune Performance Analyzer.

1. At first I did select ".NET* profiling" and the VS2008 didn't crash but the developper suggest me use windows/linus profile for the managed, unmanaged and native code mixed reason, anyway I will switch back to the .NET profile andfor the mixed code doIhave to use both sampling and call graph to test it? If so,in the advanced activity configuration screen when adding data collectors do I need to pay attention to the sequence I mean sampling and call graph which one should come first?

2. As I mentioned the vs 2008 crash issue only came if I use windos/linux profile and I will switch back to .NET profile (I just have some concerns for the mixed code if we use .net profile + ALL .NET classed and all native moduleswill we lost some import data?).

3. We have a build team I think also need to take their help and try your steps

4.I will try it

5. and I also would like to know If I need to focus on severial specific DLLs so do I need to add these DLLs to modules of interest? Because in the help file it says in general, modules of interest enable some data collectors to do more focused data collection on these modules...


Thanks & Best Regards,
Pandaa
Peter_W_Intel
Employee
49 Views
Hi Pandaa,

Please see my answers again.

1. I suggest you to use Call graph .NET* profiling first. The benifitsare:a) Find a critical path first, so focus on functions which impact performance mainly. b) Adjust algorithm ifnecessary. c) EvaluateBIG wait timeon some functions and understand whythey areblocked. d) Evaluate workload on threads and may re-arrange tasks on threads, ...
Sampling .NET* profiling helps you to find hot functions (assume your algorithm is reasonable), we might tune code in architectural level - modify code or use Intel C++ compiler's advanced options.

2. No. You can select "All .NET* classes and all native modules" for .NET* call graph profiling. Nothing is to do for .NET* sampling profiling.

5. You don't need to specify DLLs in Call graph's configure - if executable depends on these DLLs (default, such as kernel32.dll, msvcrt90.dll, etc, ...).Only extra DLLs need to be specified, which will be loaded by executable at runtime.

Regards, Peter

View solution in original post

blueplant
Beginner
48 Views
Hi Peter,

Thank you for your reply, if I have other questions in the furture I will get back to you again.

Thanks&Best Regards,

Pandaa
Reply