I am using licensed version of Vtune Performance Analyzer 7.2.
I have some basic queries regarding Vtune:
1. In advanced Activation Configuration category I can use Sampling, call graph and Counter monitor data collectors, there is a field called "duration" (by default 20), what is the significance of this field?
Is it like, Vtune is an event based sample collector and Vtune will collect data only for this much of duration and will stop after that(but my process keeps running after 20 seconds in Vtune also)
It can be understood for Sampling Data Collector as it collects data regarding processor events but what is the significance of this duration in Call Graph or counter monitor data?
And one more thing if I am running an application like Encoder code base .exe with duration 20 and with 100000 for sampling Data collector , then what will be the difference in my output parameters given by Vtune(say clockticks, instruction retired etc) and why? As I have seen if I am giving duration as 20 then my FPS value (derived from total clockticks events) is not correct (as we have some prior assumption for FPS by other time
measurement methods) so we are using it as 100000 now and we think it is right, why is it so now?
2. What is the difference among Vtune Performance Analyzer's time measurement and other time measurement methods (like query performance method)? If my Vtune is running with other processes (user applications say media player or etc) then what will be difference in output parameters of Vtune parameters when running with no such applications except system processes. Does Vtune also include that time also?
In general, the non-sampling collectors have higher overhead than sampling. Also, sampling is system-wide, it always collects statistics on all code that is running on the system. This actually allows it to reduce overhead, believe it or not, because it doesn't do any filtering/processing while collecting the samples.
A1. Duration is how long the analyzer will collect data, except when using the call graph collector, where it has no effect. To collect samples for the entire run of your application, set a duration of zero and check the option "Stop collection when application terminates" (or something like that ;-) on the Sampling configuration property page.
Default sample-after value for clockticks is such that 1000 samples per second are captured. Intel has determined that this gives a statistically accurate representation of code execution. Increasing this value will increase overhead and negatively impact program performance.
A2. Sampling is a passive, statistically performance measurement method. It periodically interrupts the processor and records *where* the processor is executing code (EIP, processor ID and thread ID). If other applications are running the data is impacted just as much as your application is impacted. That is, the data will show samples in those applications to the degree that they are executing instead of your application.
Hope that helps.