I recently upgraded from 2.4.6 to 2.4.9 and since then noticed that my
hd (old noisy thing in an old P100 box) repeatedly
sounds strange (read on, please!) when dealing with lots of small files.
(No physical problem; it's a kernel flushing issue.)
This turned out to be the sign of a quite huge performance loss anywhere
between 2.4.7 and 2.4.9 (sorry, using a 56k Modem, I cannot test them
all and it's a shame that I already deleted 2.4.6 sources).
I verified this on a PII-350 (440BX, 196Mb) using 600 files (instead of 300).
I only tested things on reiserfs (v3.6. using 3.5 partitions) becuase I
don't have ext2 around any longer.
For testing purposes, I used:
sync ; cat /proc/version ; sleep 1 ; /usr/bin/time sh -c 'declare -i cnt=0 ;
while test $cnt -lt 300 ; do echo -en "\b\b\b\b\b\b\b$cnt " ;
dd if=/dev/zero of=file-$cnt bs=1 count=16 >/dev/null 2>&1 ;
cnt=$cnt+1 ; done ; echo' ; rm file-*
This creates lots of 16-byte files using 16 write() calls [second test
with 160kb files using 16 write() calls] and prints out the time
(On P-100; 72Mb, 1Gb hd; besides kernel: equal setup for
all tests; machine idle; all tests ran several times; all kernels compiled
with gcc version 2.95.2 19991024 (release)):
| (dd bs=1 count=16) | (dd bs=10240 count=16)
kernel | user system elapsed CPU | user system elapsed CPU
2.4.9 | 3.12 5.10 32.46 25% | 3.84 14.31 73.09 24%
2.4.6 | 3.28 4.17 8.17 91% | 3.96 14.76 25.76 72%
2.2.19 | 2.82 3.75 7.12 92% | 4.42 12.90 19.26 89%
(user, system, elapsed time in seconds)
Look at the elapsed times! 2.4.9 takes >=3 times as long as 2.4.6
(and 2.2.19 performs even better).
This is a huge performance issue and I actually notice it using when
squid or doing a CVS checkout with lots of small files.
When listening to the hd you note a difference. While 2.4.6 does
a clustered write call from time to time, 2.4.9 starts to burst out in
accessing the hd (always moving the hd's head) and does not
finish until the test is over (same with my PII-350 and IBM 12Gb)
Anyone reproducing this? Reiserfs issue or cache/buffer/flush issue?
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to email@example.com
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/