Re: Status of the IO scheduler fixes for 2.4

Chris Mason (mason@suse.com)
04 Jul 2003 17:37:35 -0400


This is a MIME-formatted message. If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-14640-1057357643-0001-2
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 7bit

On Fri, 2003-07-04 at 16:01, Marcelo Tosatti wrote:

> Chris,
>
> Would you please separate those tree fixes in separate diffs?
>
> For me it seems low latency and fix-pausing patches should be enough for
> "better" IO fairness. I might be wrong about that, though.
>
> Lets try this: Include elevator-low-latency in -pre3 (which I'm trying to
> release today), then fix pausing in -pre4.

I don't believe elevator-low-latency is good without fix-pausing, we
need the smp corner cases fix-pausing provides.

> If the IO fairness still doesnt
> get somewhat better for general use (well get isolated user reports and
> benchmarks for both the two patches), then I might consider the q->full
> patch (it has throughtput drawbacks and I prefer avoiding a tunable
> there).
>
>
> Sounds good?

We effectively had this in 2.4.19-aa and 2.4.20-aa, and people still
reported stalls on those kernels. So, aside from testing them
separately I'm not sure what benefit we really get. I really like the
tunable for max_queue_sectors at least (without the q->full overload),
I'd like to get that in sometime during 2.4.22-pre if we take
elevator-low-latency.

It's a holiday weekend here, so I don't have a huge amount of time to
rediff and test. The code below is fix-pausing and elevator-low-latency
combined, without any of the q->full code. It is lightly tested, so
please run it through a few paces locally if you plan on applying it.

I've also attached a patch I've been working on to solve the latencies a
different way. bdflush-progress.diff changes balance_dirty to wait on
bdflush instead of trying to start io. It helps a lot here (both
throughput and latency) but hasn't yet been tested on a box with tons of
drives.

-chris

--=_courier-14640-1057357643-0001-2
Content-Type: text/plain; name="bdflush_progress-3.diff"; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=bdflush_progress-3.diff

--- 1.87/fs/buffer.c Thu Jul 3 13:43:56 2003
+++ edited/fs/buffer.c Fri Jul 4 13:01:28 2003
@@ -83,6 +83,8 @@
static int nr_unused_buffer_heads;
static spinlock_t unused_list_lock = SPIN_LOCK_UNLOCKED;
static DECLARE_WAIT_QUEUE_HEAD(buffer_wait);
+static DECLARE_WAIT_