Re: [PATCH] cfq-prio #2

From: Nick Piggin
Date: Mon Nov 10 2003 - 09:40:44 EST




Jens Axboe wrote:

On Tue, Nov 11 2003, Nick Piggin wrote:


Jens Axboe wrote:


Hi,



Hi Jens


@@ -1553,6 +1559,10 @@
struct io_context *ioc = get_io_context(gfp_mask);

spin_lock_irq(q->queue_lock);
+
+ if (!elv_may_queue(q, rw))
+ goto out_lock;
+
if (rl->count[rw]+1 >= q->nr_requests) {
/*
* The queue will fill after this allocation, so set it as
@@ -1566,15 +1576,12 @@
}
}

- if (blk_queue_full(q, rw)
- && !ioc_batching(ioc) && !elv_may_queue(q, rw)) {


I know I hijacked elv_may_queue from you... any chance we could seperate
these so our schedulers can live in peace? ;)


IOW, you completely broke it! I'm just changing it back to the
original. When was this done, btw? Just discovered it when updating the
patch. Pretty annoying...


You acked the change actually :P
I guess it was done in mainline when AS was merged.


Maybe my version should be called elv_force_queue?


I just hate to see more of these, really. The original idea for
may_queue was just that, may this process queue io or not. We can make
it return something else, though, to indicate whether the process must
be able to queue. Is it really needed?


Its quite important. If the queue is full, and AS is waiting for a process
to submit a request, its got a long wait.

Maybe a lower limit for per process nr_requests. Ie. you may queue if this
queue has less than 128 requests _or_ you have less than 8 requests
outstanding. This would solve my problem. It would also give you a much more
appropriate scaling for server workloads, I think. Still, thats quite a
change in behaviour (simple to code though).


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