Re: Efficient IPC mechanism on Linux

From: Pavel Machek
Date: Wed Sep 10 2003 - 14:32:57 EST


Hi!

> > > The overhead implied by a memcpy() is the same, in the oder of magnitude,
> > > ***whatever*** kernel version you can develop.
> >
> > yes a copy of a page is about 3000 to 4000 cycles on an x86 box in the
> > uncached case. A pagetable operation (like the cpu setting the accessed
> > or dirty bit) is in that same order I suspect (maybe half this, but not
> > a lot less). Changing pagetable content is even more because all the
> > tlb's and internal cpu state will need to be flushed... which is also a
> > microcode operation for the cpu. And it's deadly in an SMP environment.
>
> I have just done a measurement on a 366MHz PII Celeron. The test is
> quite crude, but these numbers are upper bounds on the timings:
>
> mean 813 cycles to:
>
> page fault
> install zero page
> remove zero page
>
> (= read every page from MAP_ANON region and unmap, repeatedly)
>
> mean 11561 cycles to:
>
> page fault
> copy zero page
> install copy
> remove copy
>
> (= write every page from MAP_ANON region and unmap, repeatedly)
>
> I think that makes a clear case for avoiding page copies.

Can you make it available so we can test on, say, 900MHz athlon? Or
you can have it tested on 1800MHz athlon64, that's about as high end
as it can get.

Pavel

--
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/