- The function is supposed to consume a lot of CPU time, but VTune doesn't show any performance data at all. Is there anything special I have to consider?
I tried everything which I could find to make it display something, but it didn't work so far.
Another question: Can VTune show performance data in assembly view, if the EBP etc. are used forother purposes(i.e. EBP doesn't point to the stack)?
Ok, I have tried the things mentioned in one of the earlier threads regarding .libs.
It didn't help, still no proper display of performance data. Just here a one for a mispredicted branch and there a one for a clocktick, although the function is called hundredthousands of times...
Sampling is a statistical data analysis. It will only identify which functions are causing a statistically significant number of events to occur.
We should start at the beginning, however. Please load the module containing the function you expect to see into the Static Module Viewer (see File menu) of the VTune analyzer. Do you see the function listed in the resulting table? By default, the Functions with source information checkbox will be checked. Only if you see the function with this check box checked will VTune be able to display data for the function. If the function is not visible with the checkbox checked, the debug information is not present. Ensure that it is not being stripped as part of the build and that the '-g' compiler option is being used in the build.
Next, collect the default sampling data using the Sampling Wizard and specifying your application as the Applicatino to Launch. After you collect the app, start by clicking the Process button (upper part of the sampling view, or you can change an option to open this view by default). From the list of processes, select your app and click the Module button. The list of modules should be sorted by Clockticks and the top module should be the most active. If the function you are looking for is not in the top modules, based on samples collected within the module, it is probably not significant. However, if it is one of the top modules, select the module and press the Hotspot button. Now you should see the list of functions contained in that module, sorted by Clockticks, again, showing which functions where most active.
The Clockticks event will give you a classic hotspot display, showing significantly active functions. The next step is to collect other events and try to determine which the function is significant. Note that sometimes it will simply be significant because it is doing a lot of work and there will be little you can do about it. However, sometimes it is because of your memory access pattern and how it interacts with the cache and the hardware prefetcher. This is then when you would restructure your data or algorithm to better utilize the cache(s).
Thank you for your reply.
The "problem" is found: The SAV (sample after value) was set too high. Therefore the sections I wanted to anlalyze weren't sampled.
Well, just be careful! If you set the SAV too low, you will lock up the system!! The SAV for Clockticks is set to collect approx. 1000 samples per second per processor. This is considered statistically representative. Lowering the SAV to collect more than this many samples per second can skew your results because the processor is spendingmore time servicing the interrupts generated by the processor to take the samples.
If your function is not showing up when run with the default SAV for Clockticks, then it is not contributing significantly to the applications execution time and you would be better off spending your time optimizing those functions identified as hotspots.