lkml.org 
[lkml]   [2007]   [Jan]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[BLOCK] 0/4 explicit io plugging
    Date
    This series of 4 patches switch the block layer to use explicit
    plugging instead of the implicit plugging that takes place now when io
    is queued against an empty queue.

    The first three patches update RCU to include a QRCU method similar to
    SRCU. QRCU is a bit heavier on the reader side, but a _lot_ cheaper for
    the synchronization part. The new plugging scheme needs to synchronize
    queue plugs for barriers and queue quiescing, so it needs to be cheap.

    The fourth patch is the actual meat of the series. It also has a longer
    explanation of the benefits of the explicit plugging.

    I'm sending this out to get some review of the code, and to ask people
    to do some testing. I'm looking for both the "hey it works for me" as
    well as benchmark runs. In the performance category, I'm interested in
    both high end (lots of CPUs) testing to see whether this actually does
    reduce lock contention and block layer cpu utilization as well as more
    simplistic io performance results on "normal" boxes to make sure we are
    not regressing anywhere.

    This code is also available in the 'plug' branch of the block layer git
    repo:

    git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git/

    Documentation/RCU/checklist.txt | 13 +
    Documentation/RCU/rcu.txt | 6
    Documentation/RCU/torture.txt | 15 -
    Documentation/RCU/whatisRCU.txt | 3
    Documentation/block/biodoc.txt | 5
    block/as-iosched.c | 15 -
    block/cfq-iosched.c | 8
    block/deadline-iosched.c | 9
    block/elevator.c | 44 ---
    block/ll_rw_blk.c | 483 ++++++++++++++++++++--------------------
    block/noop-iosched.c | 8
    drivers/block/cciss.c | 6
    drivers/block/cpqarray.c | 3
    drivers/block/floppy.c | 1
    drivers/block/loop.c | 12
    drivers/block/pktcdvd.c | 5
    drivers/block/rd.c | 2
    drivers/block/umem.c | 16 -
    drivers/ide/ide-cd.c | 9
    drivers/ide/ide-io.c | 25 --
    drivers/md/bitmap.c | 1
    drivers/md/dm-emc.c | 2
    drivers/md/dm-table.c | 14 -
    drivers/md/dm.c | 18 -
    drivers/md/dm.h | 1
    drivers/md/linear.c | 14 -
    drivers/md/md.c | 3
    drivers/md/multipath.c | 32 --
    drivers/md/raid0.c | 17 -
    drivers/md/raid1.c | 70 -----
    drivers/md/raid10.c | 73 ------
    drivers/md/raid5.c | 60 ----
    drivers/message/i2o/i2o_block.c | 6
    drivers/mmc/mmc_queue.c | 3
    drivers/s390/block/dasd.c | 3
    drivers/s390/char/tape_block.c | 1
    drivers/scsi/ide-scsi.c | 2
    drivers/scsi/scsi_lib.c | 47 +--
    fs/adfs/inode.c | 1
    fs/affs/file.c | 2
    fs/befs/linuxvfs.c | 1
    fs/bfs/file.c | 1
    fs/block_dev.c | 2
    fs/buffer.c | 25 --
    fs/cifs/file.c | 2
    fs/direct-io.c | 7
    fs/ecryptfs/mmap.c | 23 -
    fs/efs/inode.c | 1
    fs/ext2/inode.c | 2
    fs/ext3/inode.c | 3
    fs/ext4/inode.c | 3
    fs/fat/inode.c | 1
    fs/freevxfs/vxfs_subr.c | 1
    fs/fuse/inode.c | 1
    fs/gfs2/ops_address.c | 1
    fs/hfs/inode.c | 2
    fs/hfsplus/inode.c | 2
    fs/hpfs/file.c | 1
    fs/isofs/inode.c | 1
    fs/jfs/inode.c | 1
    fs/jfs/jfs_metapage.c | 1
    fs/minix/inode.c | 1
    fs/ntfs/aops.c | 4
    fs/ntfs/compress.c | 2
    fs/ocfs2/aops.c | 1
    fs/ocfs2/cluster/heartbeat.c | 4
    fs/qnx4/inode.c | 1
    fs/reiserfs/inode.c | 1
    fs/sysv/itree.c | 1
    fs/udf/file.c | 1
    fs/udf/inode.c | 1
    fs/ufs/inode.c | 1
    fs/ufs/truncate.c | 2
    fs/xfs/linux-2.6/xfs_aops.c | 1
    fs/xfs/linux-2.6/xfs_buf.c | 15 -
    include/linux/backing-dev.h | 3
    include/linux/blkdev.h | 75 +++---
    include/linux/buffer_head.h | 1
    include/linux/elevator.h | 8
    include/linux/fs.h | 1
    include/linux/pagemap.h | 12
    include/linux/raid/md.h | 1
    include/linux/sched.h | 1
    include/linux/srcu.h | 30 ++
    include/linux/swap.h | 2
    kernel/rcutorture.c | 71 +++++
    kernel/sched.c | 1
    kernel/srcu.c | 105 ++++++++
    mm/filemap.c | 62 -----
    mm/nommu.c | 4
    mm/page-writeback.c | 8
    mm/readahead.c | 11
    mm/shmem.c | 1
    mm/swap_state.c | 5
    mm/swapfile.c | 37 ---
    mm/vmscan.c | 6
    96 files changed, 632 insertions(+), 989 deletions(-)

    --
    Jens Axboe


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

    \
     
     \ /
      Last update: 2007-01-03 08:49    [W:5.797 / U:0.364 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site