How to detect inconsistent values



Hi all,

Using C++ and WMI hi-perf enumerators and refreshers, I retrieve raw
counter data from the classes under "Win32_PerfRawData". I then apply
the documented formulas to get the final results. Note my application
only reads counters; it does not change values or invoke methods.

From time to time, on some counters, I get inconsistent (huge) values.
I suppose they are due to some concurrency between the provider and the
enumerator.

I can easily detect them when I know the final result must be a
percentage: values above 100% are simply discarded. However, I cannot
do that for all counter types: what is an inconsistent value for e.g.
Logical Disk/AvgDiskReadQueueLength?

I then run perfmon with the same frequency as my application (one
minute) to validate my results and, surprisingly, perfmon is able to
detect and discard those inconsistent values: there are holes in the
graph. So there must be a way to detect those huge values.

Any advice?

Thanks,
Olivier.

.


Loading