problems about use WPT to record ISR/DPCs

Recently , I use WPT to diagnose system performance, but i have a problem about WPT:
I use WPR to record for 15 seconds, then stop and open the result etl file with windows performance analyzer, in “DPC and ISR usage by module,stack” view, the Count of function halpTimerClockInterrupt is “2”, what i know is in normal situations, it should be 15s * 64= 960 ( because timer resolution is 15.625ms).

Does any one seen this before? Thanks!

etl file:
Microsoft OneDrive

is there a question here?

@MBond2 said:
is there a question here?

the function called halpTimerClockInterrupt is timer interrupt handler, on x86 platform(windows), the timer resolution is 15.625ms, so the “count” of this function in 1 second should be 64, and I recorded for 15 seconds, so the total count shoule be 15*64=960, but not 2.

You need to understand what you’re measuring. It doesn’t record every function that’s ever executed, of course. That would be impossible. That tool is an IP sampler. It uses special CPU features to periodically capture the value of the program counter – snapshots every once in a while. halpTimerClockInterrupt is a very quick routine, so you don’t catch it running very often.

@Tim_Roberts said:
You need to understand what you’re measuring. It doesn’t record every function that’s ever executed, of course. That would be impossible. That tool is an IP sampler. It uses special CPU features to periodically capture the value of the program counter – snapshots every once in a while. halpTimerClockInterrupt is a very quick routine, so you don’t catch it running very often.

Thanks.I agree with you.

It would not be impossible to develop a tool that measured exact call counts. But such a tool would have such a significant effect on the performance of the code being measured as to make it nearly useless as a performance measuring tool

Sorry to be late to the party, but one other point of clarification…

Indeed the OP only sees two instances of the timer due to sampling. However, WPT also has the ability to consume ETW trace points and thus show every single ISR/DPC invocation in the system. This is the difference between looking at the “CPU Usage (Sampled) DPC and ISR” (sampling) and “DPC/ISR Timeline” (ETW).

You’ll note however that even under the ETW data you don’t see every clock interrupt. This is just due to the fact that Windows doesn’t log an ETW event for every clock tick (there’s a magic “don’t log this ISR” undocumented flag when connecting an interrupt).