lkml.org 
[lkml]   [2002]   [Nov]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Date
Subject[PATCH 2.4.20-rc4] 2.4.19 / 2.4.20 Pauses/stopps with high disk I/O
Hi Con, Andrea, Jens,

Con and me were testing your, Andrea, lowlatency elevator hack the last days.
It's much impressive that I/O pauses/stopps are almost gone with the hack,
even though the throughput is decreased (22mb/s to 12mb/s for my mashine).

Con did a 3 line change to drivers/block/ll_rw_blk.c and
include/linux/elevator.h and those pauses/stopps are _totally_ gone. Even
throughput increased from 12mb/s, with the lowlat elevator from Andrea, to
14mb/s with that 3 liner. Patch attached + Config option for 2.4.20-rc4.

Exchanging the files mentioned above with the 2.4.18 ones has either no effect
to throughput (22mb/s) and also has no pauses/stopps.

We think the approach with the lowlatency elevator's is fine, but there must
have changed something very seriously in the mentioned files that this occur
with >= 2.4.19.

This is just a "we want to inform you about it" mail :)

Have fun!

ciao, Marc



# Patch from: Con Kolivas (private Mail) / me

diff -ruN linux-old/Documentation/Configure.help linux-wolk/Documentation/Configure.help
--- linux-old/Documentation/Configure.help Mon Feb 25 20:37:51 2002
+++ linux-wolk/Documentation/Configure.help Sat Apr 27 23:52:48 2002
@@ -867,6 +867,18 @@

If unsure, say N.

+Low Latency Elevator
+CONFIG_BLK_DEV_ELEVATOR_LOWLAT
+ If you are building your kernel for desktop usage it is highly
+ recommended to say Y here. With this option set, you can have the
+ highest disk i/o you ever dreamed of and still have interactive
+ behaviour of your kernel without stops/pauses or kinda that.
+ For sure, this decreases throughput, for me from 22mb/s to 14mb/s
+ but this is unrelevant for desktop usage.
+
+ If unsure, or if you're building a kernel for serverusage,
+ say N, otherwise say Y.
+
ISA-PNP EIDE support
CONFIG_BLK_DEV_ISAPNP
If you have an ISA EIDE card that is PnP (Plug and Play) and
diff -urN linux-old/drivers/block/Config-elevator.in linux-wolk/drivers/block/Config-elevator.in
--- linux-old/drivers/block/Config-elevator.in Thu Jan 1 01:00:00 1970
+++ linux-wolk/drivers/block/Config-elevator.in Mon Sep 17 13:46:19 2001
@@ -0,0 +1,10 @@
+#
+# Elevator configuration
+#
+mainmenu_option next_comment
+comment 'Elevator'
+
+bool 'Low Latency Elevator' CONFIG_BLK_DEV_ELEVATOR_LOWLAT
+
+endmenu
+
diff -urN linux-old/arch/i386/config.in linux-wolk/arch/i386/config.in
--- linux-old/arch/i386/config.in Thu Jan 1 01:00:00 1970
+++ linux-wolk/arch/i386/config.in Mon Sep 17 13:46:19 2001
@@ -326,6 +326,8 @@

source drivers/block/Config.in

+source drivers/block/Config-elevator.in
+
source drivers/md/Config.in

if [ "$CONFIG_NET" = "y" ]; then
diff -urN linux-2.4.19/arch/i386/config.in linux-2.4.19-ck14/arch/i386/config.in
--- linux-2.4.19/drivers/block/ll_rw_blk.c 2002-08-03 13:14:45.000000000 +1000
+++ linux-2.4.19-ck14/drivers/block/ll_rw_blk.c 2002-11-26 21:55:18.000000000 +1100
@@ -432,9 +433,13 @@

si_meminfo(&si);
megs = si.totalram >> (20 - PAGE_SHIFT);
+#ifndef CONFIG_BLK_DEV_ELEVATOR_LOWLAT
nr_requests = 128;
if (megs < 32)
nr_requests /= 2;
+#else
+ nr_requests = 4;
+#endif
blk_grow_request_list(q, nr_requests);

init_waitqueue_head(&q->wait_for_requests[0]);
diff -urN linux-2.4.19/include/linux/elevator.h linux-2.4.19-ck14/include/linux/elevator.h
--- linux-2.4.19/include/linux/elevator.h 2001-02-16 11:58:34.000000000 +1100
+++ linux-2.4.19-ck14/include/linux/elevator.h 2002-11-26 22:45:01.000000000 +1100
@@ -91,6 +91,7 @@
elevator_noop_merge_req, /* elevator_merge_req_fn */ \
})

+#ifndef CONFIG_BLK_DEV_ELEVATOR_LOWLAT
#define ELEVATOR_LINUS \
((elevator_t) { \
2048, /* read passovers */ \
@@ -100,4 +101,17 @@
elevator_linus_merge_req, /* elevator_merge_req_fn */ \
})

-#endif
+#else /* CONFIG_BLK_DEV_ELEVATOR_LOWLAT */
+
+#define ELEVATOR_LINUS \
+((elevator_t) { \
+ 0, /* read passovers */ \
+ 0, /* write passovers */ \
+ \
+ elevator_linus_merge, /* elevator_merge_fn */ \
+ elevator_linus_merge_req, /* elevator_merge_req_fn */ \
+ })
+
+#endif /* CONFIG_BLK_DEV_ELEVATOR_LOWLAT */
+
+#endif /* _LINUX_ELEVATOR_H */
\
 
 \ /
  Last update: 2005-03-22 13:31    [W:0.033 / U:0.084 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site