Messages in this thread | | | Date | Tue, 20 Jan 2009 20:37:03 +0100 | From | Ingo Molnar <> | Subject | Re: lmbench lat_mmap slowdown with CONFIG_PARAVIRT |
| |
* Ingo Molnar <mingo@elte.hu> wrote:
> ----------------------------------------------- > | Performance counter stats for './mmap-perf' | > ----------------------------------------------- > | | > | x86-defconfig | PARAVIRT=y > |------------------------------------------------------------------ > | > | 1311.554526 | 1360.624932 task clock ticks (msecs) +3.74% > | | > | 1 | 1 CPU migrations > | 91 | 79 context switches > | 55945 | 55943 pagefaults > | ............................................ > | 3781392474 | 3918777174 CPU cycles +3.63% > | 1957153827 | 2161280486 instructions +10.43% > | 50234816 | 51303520 cache references +2.12% > | 5428258 | 5583728 cache misses +2.86% > | | > | 1314.782469 | 1363.694447 time elapsed (msecs) +3.72% > | | > ----------------------------------- > > The most surprising element is that in the paravirt_ops case we run 204 > million more instructions - out of the ~2000 million instructions total.
So because this test does exactly 1 million MM syscalls, the average is easy to calculate:
The native kernel's average MM syscall cost is 1957 instructions - with CONFIG_PARAVIRT=y that increases by +10.43% to 2161 instructions. There's over 200 extra instructions executed per MM syscall that we only do due to CONFIG_PARAVIRT=y.
Ingo
| |