Re: [PATCH] 2/2 2.5.45 cleanup & add original copy_ro/from_user

Andi Kleen
2002-11-02T10:51:56Z

Andrew Morton <akpm@digeo.com> writes:

> (That is, using the movnta instructions for well-aligned copies
> and clears so that we don't read the destination memory while overwriting
> it).

I did some experiments with movnta and it was near always a loss for
memcpy/copy_*_user type stuff. The reason is that it flushes the destination
out of cache and when you try to read it afterwards for some reason
(which happens often - e.g. most copy_*_user uses actually do access it
afterwards) then you eat a full cache miss for them and that is costly
and kills all other advantages.

It may be a win for direct copy-to-page cache and then page cache DMA
outside and page cache not mapped anywhere, but even then it's not completely
clear it's that helpful to have it not in cache. For example an Athlon
can serve an DMA directly out of its CPU caches and that may be
faster than serving it out of RAM (Intel CPUs cannot however)

-Andi