Re: [PATCH 2/2] Make read requests in IpcIo bypass max-swap-rate limit.

From: Alex Rousskov <rousskov_at_measurement-factory.com>
Date: Thu, 27 Oct 2011 16:52:40 -0600

On 10/13/2011 08:05 AM, Dmitry Kurochkin wrote:
>
> Before the change, IpcIoFile::WaitBeforePop() delayed both swap ins
> (hits) and swap outs (misses). This is suboptimal because reads do
> not usually accumulate unfinished I/O requests in OS buffers and,
> hence, do not eventually require the OS to block all I/O.
>
> Ideally, a disker should probably dequeue all pending disker requests,
> satisfy reads ASAP, and then handle writes, but that is difficult for
> several reasons. The patch implements a simpler approach: peek the
> next request to be popped, and if it is a swap in (i.e., read or hit),
> then pop it without any delay.
>
> When a read is popped, we still adjust the balance member and LastIo,
> because we do want to maintain the configured average I/O rate. When a
> write request comes in, it will be delayed [longer] if needed.
>
> In the extreme case of a very long stream of read requests (no writes
> at all), there will be essentially no I/O rate limit and that is what
> we want.

Committed to trunk as r11825.

Thank you,

Alex.
Received on Thu Oct 27 2011 - 22:52:50 MDT

This archive was generated by hypermail 2.2.0 : Fri Oct 28 2011 - 12:00:11 MDT