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

Andrew Morton
2002-11-02T10:56:54Z

Andi Kleen wrote:
>
> 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.

Oh. I was under the impression that the destination ended up in the
CPU caches.

Yes, if that's not the case then the whole thing is pretty useless.

> 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)

So it may be applicable to write(2) on intel.