[PATCH] 2.2.17pre9 interactiveness under high IO

From: Marcelo Tosatti (marcelo@conectiva.com.br)
Date: Sat Jul 01 2000 - 17:11:44 EST


Hi,

Under 2.2.17pre9, a process trying to free memory itself will queue IO
request(s) in case it finds a page which contain dirty buffers.

The problem is that this process will block in case the request queue is
full (high IO workloads), and wait until it finds a free request on the
queue.

This silly patch avoids that by making ll_rw_block() ignore the IO if the
request queue is full, causing the process to search for more freeable
pages instead blocking.

This patch does not affect stability with the huge MAP_SHARED case.

(note that I've tested this patch together with Andrea's
balance_dirty_state patch which causes kswapd to be waken up correctly.
This means if you try to run it with stock 2.2.17pre9 the huge MAP_SHARED
case may fail).

--- fs/buffer.c.orig Sat Jul 1 20:49:19 2000
+++ fs/buffer.c Sat Jul 1 20:28:36 2000
@@ -1517,7 +1517,7 @@
                         if (wait)
                                 __wait_on_buffer(p);
                 } else if (buffer_dirty(p))
- ll_rw_block(WRITE, 1, &p);
+ ll_rw_block(WRITEA, 1, &p);
         } while (tmp != bh);
 
         do {

(sorry for not compressing it)

 

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Jul 07 2000 - 21:00:09 EST