lkml.org 
[lkml]   [2012]   [Apr]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 0/6] buffered write IO controller in balance_dirty_pages()
    On 03/28/2012 05:43 PM, Fengguang Wu wrote:
    > Here is one possible solution to "buffered write IO controller", based on Linux
    > v3.3
    >
    > git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux.git buffered-write-io-controller
    >

    The implementation looks unbelievably simple. I ran a few tests
    (throttling) and I found it working well generally.

    > Features:
    > - support blkio.weight
    > - support blkio.throttle.buffered_write_bps
    >
    > Possibilities:
    > - it's trivial to support per-bdi .weight or .buffered_write_bps
    >
    > Pros:
    > 1) simple
    > 2) virtually no space/time overheads
    > 3) independent of the block layer and IO schedulers, hence
    > 3.1) supports all filesystems/storages, eg. NFS/pNFS, CIFS, sshfs, ...
    > 3.2) supports all IO schedulers. One may use noop for SSDs, inside virtual machines, over iSCSI, etc.
    >
    > Cons:
    > 1) don't try to smooth bursty IO submission in the flusher thread (*)
    > 2) don't support IOPS based throttling
    > 3) introduces semantic differences to blkio.weight, which will be
    > - working by "bandwidth" for buffered writes
    > - working by "device time" for direct IO

    There is a chance that this semantic difference might confuse users.

    > (*) Maybe not a big concern, since the bursties are limited to 500ms: if one dd
    > is throttled to 50% disk bandwidth, the flusher thread will be waking up on
    > every 1 second, keep the disk busy for 500ms and then go idle for 500ms; if
    > throttled to 10% disk bandwidth, the flusher thread will wake up on every 5s,
    > keep busy for 500ms and stay idle for 4.5s.
    >
    > The test results included in the last patch look pretty good in despite of the
    > simple implementation.
    >
    > [PATCH 1/6] blk-cgroup: move blk-cgroup.h in include/linux/blk-cgroup.h
    > [PATCH 2/6] blk-cgroup: account dirtied pages
    > [PATCH 3/6] blk-cgroup: buffered write IO controller - bandwidth weight
    > [PATCH 4/6] blk-cgroup: buffered write IO controller - bandwidth limit
    > [PATCH 5/6] blk-cgroup: buffered write IO controller - bandwidth limit interface
    > [PATCH 6/6] blk-cgroup: buffered write IO controller - debug trace
    >

    How about a BOF on this topic during LSF/MM as there seems to be enough
    interest?


    Thanks
    Suresh



    \
     
     \ /
      Last update: 2012-04-01 06:19    [W:4.202 / U:0.360 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site