Profiling The Same Code Produces 98% Idle In Advanced Hotspot vs 99.1% Poor Utilisation In Basic Hotspot
I'm hoping somebody may be able to offer some suggestions to help understand profiling results which are causing much confusion. I'm profiling a financial mathematics software library which is integrated into Excel. When profiling in Intel VTune Amplifier XE 2016 Update 3 under advanced hotspot analysis CPU utilisation comes up as 98% idle, while at the same time producing sensible looking times for the code I’m interested. Colleagues can profile the same code on their machines and produce similar timing results, however showing up with the majority of time as poor CPU utilisation. I’ve tried changing sample frequency, level of information collected and settings, with no change to the results
Additionally I can run the same code in a standalone application and see the code produce similar time results, however this time with poor CPU utilisation as opposed to idle utilisation. It’s worth pointing out the stand alone application has 1 thread, but in Excel there are 20 or so thread mainly doing nothing, with one thread dominating the CPU usage. If I profile the code under Excel in basic hotspots analysis then I see similar timing results also with poor CPU utilisation.
So my questions is why do I see my CPU utilisation as idle when I can see the process is doing something and producing sensible timing? Why are other people able to get sensible results for timing the same area of code? And why does changing the analysis type mean I am able to get sensible results? Shouldn’t advanced hotspot analysis provide more information than basic hotspot analysis (when I am seeing the reverse)?