I'm using VTune Amplifier XE to profile video decoding application. I've used Hotspot analyze to find heavy functions CPU time and was suprising when 'hotspots by CPU usage' had shown Idle usage (gray blocks)as part of the functions CPU time:
Next, I had thought the Idle CPU usage comes from some multithreading/synchronization issues when a thread has Ready state but doesn't received CPU time. But, digging deeper I've found the Idle time comes from edge where the periodically called functions become active:
Doesthe Idle time result from measurement granulation (OS scheduller tick period)or some other measurement inaccuracyor the thread really doesnt receive CPU after it was ready certain time duration?
How Amplifier determinates CPU state (Idle or Running) at sample extraction? (By means of NtQuerySystemInformation, or some NtQueryInformationXXX?)