2000-11-11 17:53:46

by Ying Chen/Almaden/IBM

[permalink] [raw]
Subject: [patch] wakeup_bdflush related fixes and nfsd optimizations for test10

Hi,

This patch includes two sets of things against test10:
First, there are several places where schedule() is called after
wakeup_bdflush(1) is called. This is completely unnecessary, since
wakeup_bdflush(1) already gave up the control, and when the control is
returned to the calling thread who called wakeup_bdflush(1), it should just
go on. Calling schedule() after wakeup_bdflush(1) will make the calling
thread give up control again. This is a problem for some of those latency
sensitive benchmarks (like SPEC SFS) and applications.

Second, (I have posted this to the kernel mailing list, but I forgot to cc
to Linus.) I made some optimizations on racache in nfsd in test10. The idea
is to replace with existing fixed length table for readahead cache in NFSD
with a hash table. The old racache is essentially ineffective in dealing
with large # of files, and yet eats CPU cycles in scanning the table (even
though the table is small), the hash table-based is much more effective
and fast. I have generated the patch for test10 and tested it.

(See attached file: a)

Ying Chen
[email protected]
IBM Almaden Research Center


Attachments:
a (14.90 kB)

2000-11-12 02:30:51

by Linus Torvalds

[permalink] [raw]
Subject: Re: [patch] wakeup_bdflush related fixes and nfsd optimizations for test10



On Sat, 11 Nov 2000, Ying Chen/Almaden/IBM wrote:
>
> This patch includes two sets of things against test10:
> First, there are several places where schedule() is called after
> wakeup_bdflush(1) is called. This is completely unnecessary

Fair enough.

> Second, (I have posted this to the kernel mailing list, but I forgot to cc
> to Linus.) I made some optimizations on racache in nfsd in test10.

..but this would need a lot more testing/feedback, especially from the nfs
client maintainers (I see that Neil Brown did some querying already, I
think more is in order).

Also, I'd _really_ like those lists to be real <linux/list.h> lists
instead of duplicating code.

Linus