I'm using Intel PCM to sample the number of retired instructions every two seconds:
pcmState_prev = pcmState_curr; pcmState_curr = getSystemCounterState(); m_committed_instructions = getInstructionsRetired(pcmState_prev,pcmState_curr);
This usually works well with values ranging from 1e+8 and 1e+10 committed instructions per second on Haswell (i7-4790 CPU @ 3.60GHz). Every few hours I would get a sample with around 9e+18 committed instructions per second. Am I using the interface incorrectly? Thanks!
I wouldn't mind having 9e+18 IPS :-)
I suspect a wraparound problem in PCM or the counter itself. I added an assertion on m_committed_instructions right after the PCM call and caught it, even before I divided by the duration of the sample.