Re: SMP update: 2.1.30

Ingo Molnar (mingo@pc5829.hil.siemens.at)
Sat, 29 Mar 1997 11:26:51 +0100 (MET)


On Sat, 29 Mar 1997, Mark Hemment wrote:

> 2.1.30 sucks up system time (at least on my 486DX33 8MB test target).
> When compiling a kernel, 2.1.30 spends almost 50% more time inside the
> kernel than 2.1.29.

have you turned SMP off in the top Makefile? LCT#15 (Linus Cute Trick #15)

> The problem is the change of search order in get_empty_inode(). Changing
> i_prev back to i_next resolves the problem.
>
> Ingo, wasn't this a performance change for NFS?

duh. nope. wait, does the following help:

--------------------------------------------------------------->
--- linux-2.1.30_vanilla/fs/inode.c Fri Mar 28 12:31:53 1997
+++ linux/fs/inode.c Sat Mar 29 12:20:43 1997
@@ -523,6 +523,7 @@
if (best->i_count)
goto repeat;
found_good:
+ first_inode = best;
clear_inode(best);
best->i_count = 1;
best->i_nlink = 1;
<---------------------------------------------------------------

the problem is that free inodes are inserted in chunks, and
get_free_inode() gets the wrong end ... by moving first_inode we can get
around this: free inodes get always inserted before first_inode and we
search the list backwards.

( i've noticed this one, but Thomas Schoebel-Theuer wrote me about his new
inode implementation, so i didnt care about it. Then Linus put my
half-done patch suggestion into 2.1.30 ... )

please tell me if this fixes the problem so i can post it to linux-kernel.

Ingo