Skip to contentSkip to conversation

2.[45] fixes for design locking bug in wait_on_page/wait_on_buffer/get_request_wait

DISCUSSION Marc-Christian Petersen 2 participants 4 messages Nov 16, 2002 – Nov 17, 2002

lore
Share & tools
lore
#0 lore raw

Hi Andrea,

Quoted 6 lines

just to make a quick test, can you try an hack like this combined with a setting of elvtune -r 128 -w 256 on top of 2.4.20rc1?

drivers/block/ll_rw_blk.c Sat Nov 16 19:44:20 2002 static void blk_init_free_list(request_q · line 438

Quoted 8 lines
drivers/block/ll_rw_blk.c Sat Nov 16 19:44:20 2002 renamed from drivers/block/ll_rw_blk.c.~1~ Sat Nov 2 19:45:33 2002 +1 -1
@@ -432,7 +432,7 @@ static void blk_init_free_list(request_q
 
        si_meminfo(&si);
        megs = si.totalram >> (20 - PAGE_SHIFT);
-       nr_requests = 128;
+       nr_requests = 16;
        if (megs < 32)
                nr_requests /= 2;
        blk_grow_request_list(q, nr_requests);

hehe, Andrea, it seem's we both think of the same ... :-) ... I am just recompiling the kernel ... hang on.

ciao, Marc

#1 lore raw

On Saturday 16 November 2002 19:58, Marc-Christian Petersen wrote:

Hi Andrea,

Quoted 7 lines
Quoted 7 lines

just to make a quick test, can you try an hack like this combined with a setting of elvtune -r 128 -w 256 on top of 2.4.20rc1?

drivers/block/ll_rw_blk.c Sat Nov 16 19:44:20 2002 renamed from drivers/block/ll_rw_blk.c.~1~ Sat Nov 2 19:45:33 2002 +0 -0
@@ -432,7 +432,7 @@ static void blk_init_free_list(request_q
 
Quoted 10 lines

drivers/block/ll_rw_blk.c Sat Nov 16 19:44:20 2002 static void blk_init_free_list(request_q · line 438

Quoted 7 lines
drivers/block/ll_rw_blk.c Sat Nov 16 19:44:20 2002 renamed from drivers/block/ll_rw_blk.c.~1~ Sat Nov 2 19:45:33 2002 +1 -1
        si_meminfo(&si);
        megs = si.totalram >> (20 - PAGE_SHIFT);
-       nr_requests = 128;
+       nr_requests = 16;
        if (megs < 32)
                nr_requests /= 2;
        blk_grow_request_list(q, nr_requests);

hehe, Andrea, it seem's we both think of the same ... :-) ... I am just recompiling the kernel ... hang on.

Andrea, this makes a difference! The pausings are much less than before, but still occur. Situation below.

Another thing I've noticed, while doing the "cp -a xyz abc" in a loop the available memory decreases alot (silly caching of files)

Before copying:
---------------

MemTotal:       515992 kB
MemFree:        440876 kB
Buffers:          3808 kB
Cached:          24128 kB

While copying:
--------------
root@codeman:[/usr/src] # ./bla.sh
+ cd /usr/src
+ rm -rf linux-2.4.19-blaold linux-2.4.19-blanew
+ COUNT=0
+ echo 0
0
+ cp -a linux-2.4.19-vanilla linux-2.4.19-blaold
+ cp -a linux-2.4.19-vanilla linux-2.4.19-blanew

not yet finished the above and memory is this:

MemTotal:       515992 kB
MemFree:          3348 kB
Buffers:         12244 kB
Cached:         451608 kB

swap (500mb) turned off. Pausings are almost none. (without your patch / elvtune) even there were massive pauses.

If swap is turned on, swapusage grows alot and then, if SWAP is used, we have pauses (even more less than without your patch).

To free the used/cached memory I use umount /usr/src.

I think your proposal is good. Anything else I should test/change? Any further informations/test I can/should run?

Thnx alot!

ciao, Marc

#2 lore raw

On Saturday 16 November 2002 22:55, Marc-Christian Petersen wrote:

Hi Andrea,

Quoted 2 lines

Andrea, this makes a difference! The pausings are much less than before, but still occur. Situation below.

So, after some time in trying to exchange 2.4.20-rc2 files with the following files from 2.4.18 (and compile successfully)

drivers/block/ll_rw_blk.c
drivers/block/elevator.c
include/linux/elevator.h

those "pauses/stopps" are _GONE_!

I've also tested all this situations with totally different mashines. No changes, all behaves the same.

I am really afraid that no one else (seems so) noticed this but me! I cannot believe that?! :-(

It is a really serious "bug" I cannot live with. Doing that high disk i/o and even pings are ignored for the amount of time the stop occurs, is an absolutely inacceptable situation! *imho*

What do you think? :-)

ciao, Marc

#3 lore raw
Quoted 2 lines

Andrea, this makes a difference! The pausings are much less than before, but still occur. Situation below.

MP> So, after some time in trying to exchange 2.4.20-rc2 files with the following
MP> files from 2.4.18 (and compile successfully)
MP> drivers/block/ll_rw_blk.c
MP> drivers/block/elevator.c
MP> include/linux/elevator.h
MP> those "pauses/stopps" are _GONE_!

What is really strange, is that while I run the following in the boodscripts:

echo "90 500 0 0 600000 600000 95 20 0" > /proc/sys/vm/bdflush elvtune /dev/hda1 -r 2048 -w 131072

I never experience those stalls at all!
And that was surely I was expecting (clean buffers at 90% and do that synchronouse at 95% gives little room for the first to complete before new buffers get dirty. also that elevator-fiddling should force large bursts (why am I doing this anyway? I wanted to configure the kernel et al so that as minimal as possible disk-reads/writes occur))