On Tue, 2004-07-20 at 08:19, Jens Axboe wrote:
> On Tue, Jul 20 2004, Ingo Molnar wrote:
> > > How much I/O do you allow to be in flight at once?  It seems like by
> > > decreasing the maximum size of I/O that you handle in one interrupt
> > > you could improve this quite a bit.  Disk throughput is good enough,
> > > anyone in the real world who would feel a 10% hit would just throw
> > > hardware at the problem.
> > 
> > i'm not sure whether this particular value (max # of sg-entries per IO
> > op) is runtime tunable. Jens? Might make sense to enable elvtune-alike
> > tunability of this value.
> 
> elvtune is long dead :-)
> 
> it's not tweakable right now, but if you wish to experiment you just
> need to add a line to ide-disk.c:idedisk_setup() - pseudo patch:
> 
> +     blk_queue_max_sectors(drive->queue, 32);
> +
>       printk("%s: max request size: %dKiB\n", drive->name, drive->queue->max_sectors 
> / 2);
> 
>       /* Extract geometry if we did not already have one for the drive */
> 
> above will limit max request to 16kb, experiment as you see fit.

I tested this and the improvement is drastic.  With the default value of
1024KB, running 'bonnie' produced XRUNS of 10+ ms.  When this is changed
to 16KB, running bonnie only produces latency spikes of up to about 90
usecs, I did not see a single one hit 100usecs.

According to hdparm, the throughput is still quite good (42MB/sec on a 
sub-$100 IDE drive).

This should definitely be made tunable, I would imagine this would be
easy to put in /proc.  The default could stay at 1024KB, and users with
low latency requirements could lower it.

I am currently testing the effect on throughput and will have some
better numbers soon.

Lee

Reply via email to