RE: per-cpu blk_plug_list

From: Chen, Kenneth W <>
Date: 2004-03-03 15:20:53
I don't understand the proposal here.  There is a per-device lock
already.  But the plugged queue need to be on some list outside itself
so a group of them can be unplugged later on to flush all the I/O.

- Ken

-----Original Message-----
From: Andrew Morton [] 
Sent: Tuesday, March 02, 2004 7:56 PM
To: Jesse Barnes
Cc: Chen, Kenneth W;
Subject: Re: per-cpu blk_plug_list

> On Mon, Mar 01, 2004 at 01:18:40PM -0800, Chen, Kenneth W wrote:
> > blk_plug_list/blk_plug_lock manages plug/unplug action.  When you
> > lots of cpu simultaneously submits I/O, there are lots of movement
> > the device queue on and off that global list.  Our measurement
> > that blk_plug_lock contention prevents linux-2.6.3 kernel to scale
> > beyond 40 thousand I/O per second in the I/O submit path.
> This helped out our machines quite a bit too.  Without the patch, we
> weren't able to scale above 80000 IOPS, but now we exceed 110000 (and
> parity with our internal XSCSI based tree).
> Maybe the plug lists and locks should be per-device though, rather
> per-cpu?  That would make the migration case easier I think.  Is that
> possible?

It's possible, yes.  It is the preferred solution.  We need to identify
the queues which need to be unplugged to permit a VFS-level IO request
complete.  It involves running down the device stack and running around
the contributing queues at each level.

Relatively straightforward, but first those dang sempahores in device
mapper need to become spinlocks.  I haven't looked into what
might be present in the RAID implementation.
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to
More majordomo info at
Received on Tue Mar 2 23:21:29 2004

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:24 EST