Messages in this thread | | | Date | Thu, 10 Jun 2010 12:16:37 +0200 | From | Ingo Molnar <> | Subject | Re: [PATCH 0/5] perf events finer grained context instrumentation / context exclusion |
| |
* Frederic Weisbecker <fweisbec@gmail.com> wrote:
> Performance counter stats for './hackbench 5' (10 runs): > > 1313640764 instructions # 0,241 IPC ( +- 1,393% ) (scaled from 100,05%) > 214737441 branches ( +- 0,948% ) > > 1293802776 instructions # 0,245 IPC ( +- 0,343% ) > 209495435 branches ( +- 0,392% )
Indeed it's about 4 times less noise, not bad.
Cycles is fundamentally random.
> So yeah, the results look a bit better. Still not perfects: > > - we are still instrumenting the tiny parts between the true interrupt > and irq_enter() (same for irq_exit() and the end). Same for softirqs. > > - random randomnesses...
Random randomness shouldnt occur for something like instructions or branches.
Could you try some 'must not be variable' workload, like:
taskset 1 ./hackbench 1
If the workload is pinned to a single CPU then it ought to not be variable at all. (modulo things like hash chain lengths and slab caching details, but those should not cause 0.4% kind of noise IMO)
Btw., we could try to record all branches of an execution (using BTS, of a relatively short but static-length run), and see where the variance comes from. I doubt the current BTS code is ready for that, but it would be 'the' magic trace-from-hell that includes all execution of the task, recorded at the hardware level.
Ingo
| |