[lkml]   [2001]   [Dec]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[patch] Prefetching file_read_actor()
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);

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 Jones.
SuSE Labs.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:14    [W:0.093 / U:3.948 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site