James Sutherland wrote:
> In terms of latency, I'd suggest we aim to keep the device in use all the
> time we have outstanding requests: every time the device is ready to
> accept a request, we feed it the "next" one in the queue; until it is free
> again, requests pile up in the queue, being sorted, merged etc.
>
> This should perform very well under light loads - requests just get passed
> to the device as fast as they can be handled - and under very heavy loads
> - we have a large queue in play, with plenty of scope for reordering,
> merges etc.
The "large queue" goes against the whole point of this exercise - that
is that if there are many items in the "queue" being sorted then
unlucky requests can end up waiting a long time to get serviced.
You want to have some reasonable break-off point where you just
decide to make an elevator swipe in order to avoid starving those
requests.
Keep in mind that I'm using the word "queue" in a confusing manner
here - we're talking about how much we'll try to elevator-sort in
a go, not the actual queue of all requests. I've been calling this
a queue because from a performance standpoint that's what it is,
so I think it helps to think of the problem that way.
Oh yeah one other thing about huge elevator queues to think about
(although its not too pertinant these days). A friend of mine had
a job 15 years or so ago to working on a commercial UNIX flavor.
They were having some severe I/O performance problems under high
loads. The problem was that they were trying to sort and merge
all the pending requests. When I/O was heavy this ended up
chewing all the CPU time and the kernel wouldn't actually be
able to keep up sending requests to the disk :-) However, keep
in mind that this was int the bad-old-days when "hard drive"
meant a rack-mount Eagle and the elevator was expected to consider
things like head positioning and rotational speed when doing
a sort...
-Mitch
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Fri Sep 15 2000 - 21:00:20 EST