From e1bb57826381199cc79fbf44e9dfeee58fc7b339 Mon Sep 17 00:00:00 2001 From: Nick Piggin <npiggin@kernel.dk> Date: Fri, 7 Jan 2011 17:50:08 +1100 Subject: fs: prefetch inode data in dcache lookup This makes single threaded git diff -1.25% +/- 0.05% elapsed time on my 2s12c24t Westmere system, and -0.86% +/- 0.05% on my 2s8c Barcelona, by prefetching the important first cacheline of the inode in while we do the actual name compare and other operations on the dentry. There was no measurable slowdown in the single file stat case, or the creat case (where negative dentries would be common). Signed-off-by: Nick Piggin <npiggin@kernel.dk> --- fs/dcache.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'fs') diff --git a/fs/dcache.c b/fs/dcache.c index 9e6e6db76869..2a4ce7dc2306 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -1793,6 +1793,9 @@ seqretry: tlen = dentry->d_name.len; tname = dentry->d_name.name; i = dentry->d_inode; + prefetch(tname); + if (i) + prefetch(i); /* * This seqcount check is required to ensure name and * len are loaded atomically, so as not to walk off the -- cgit v1.2.3