Re: io_request_lock patch?

Jens Axboe
2001-07-11T08:54:26Z

On Wed, Jul 11 2001, Dipankar Sarma wrote:
> > I would like to know why the request_freelist is going empty? Having
> > __get_request_wait being called alot would appear to be not optimal.
>
> It is not unreasonable for request IOCB pools to go empty, the important
> issue is at what rate ? If a large portion of I/Os have to wait for
> request structures to be freed, we may not be able to utilize the available
> hardware bandwidth of the system optimally when we need, say, large
> # of IOs/Sec. On the other hand, having large number of request structures
> available may not necessarily give you large IOs/sec. The thing to look
> at would be - how well are we utilizing the queueing capablility
> of the hardware given a particular type of workload.

The queue lengths should always be long enough to keep the hw busy of
course. And in addition, the bigger the queues the bigger the chance of
skipping seeks due to reordering. But don't worry, I've scaled the queue
lengths so I'm pretty sure that they are always on the safe side in
size.

It's pretty easy to test for yourself if you want, just change
QUEUE_NR_REQUESTS in blkdev.h. It's currently 8192, the request slots
are scaled down from this value. 8k will give you twice the amount of
slots that you have RAM in mb, ie 2048 on a 1gig machine.

block: queued sectors max/low 683554kB/552482kB, 2048 slots per queue

--
Jens Axboe