[patch] Prefetching file_read_actor()

From: Dave Jones (davej@suse.de)
Date: Sun Dec 30 2001 - 22:32:20 EST


After noticing file_read_actor() showing up in profiles quite
a bit, I grepped old l-k messages, and turned up a post by
Manfred Spraul in which he posted a patch using inline asm
to prefetch read data. This was x86 specific in generic code,
so was a little hackish..
Now that we have the prefetch macros, I decided to play with
this a little tonight, and came up with this patch..

diff -urN --exclude-from=/home/davej/.exclude linux-2.5.2-pre5/mm/filemap.c linux-2.5/mm/filemap.c
--- linux-2.5.2-pre5/mm/filemap.c Sun Dec 16 23:21:24 2001
+++ linux-2.5/mm/filemap.c Mon Dec 31 03:22:51 2001
@@ -1570,6 +1570,15 @@
                 size = count;
 
         kaddr = kmap(page);
+
+ if (size > 128) {
+ int i;
+ for(i=0; i<size; i+=64) {
+ prefetch (kaddr+offset);
+ prefetch (kaddr+offset+(L1_CACHE_BYTES*2));
+ }
+ }
+
         left = __copy_to_user(desc->buf, kaddr + offset, size);
         kunmap(page);
         
The results are an earth shaking 5 seconds off a make dep bzImage
on my P3, I've not benched an Athlon (or other prefetch aware
architecture) yet, but I expect to see similar speed ups..

Comments ?

Dave.

-- 
Dave Jones.                    http://www.codemonkey.org.uk
SuSE Labs.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Dec 31 2001 - 21:00:24 EST