lkml.org 
[lkml]   [2009]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 8/8] vm: Add an tuning knob for vm.max_writeback_mb
    On Thu, Sep 24, 2009 at 11:38:16PM +0800, Peter Zijlstra wrote:
    > On Thu, 2009-09-24 at 16:33 +0800, Wu Fengguang wrote:
    >
    > > Yeah, FIFO queuing should be good enough.
    > >
    > > I'd like to propose one more data structure for evaluation :)
    > >
    > > - bdi->throttle_lock
    > > - bdi->throttle_list pages to sync for each waiting task, taken from sync_writeback_pages()
    > > - bdi->throttle_pages (counted down) pages to sync for the head task, shall be atomic_t
    > >
    > > In balance_dirty_pages(), it would do
    > >
    > > nr_to_sync = sync_writeback_pages()
    > > if (list_empty(bdi->throttle_list)) # I'm the only task
    > > bdi->throttle_pages = nr_to_sync
    > > append nr_to_sync to bdi->throttle_list
    > > kick off background writeback
    > > wait
    > > remove itself from bdi->throttle_list and wait list
    > > set bdi->throttle_pages for new head task (or LONG_MAX)
    > >
    > > In __bdi_writeout_inc(), it would do
    > >
    > > if (--bdi->throttle_pages <= 0)
    > > check and wake up head task
    > >
    > > In wb_writeback(), it would do
    > >
    > > if (args->for_background && exiting)
    > > wake up all throttled tasks

    > > To prevent wake up too many tasks at the same time, it can relax the
    > > background threshold a bit, so that __bdi_writeout_inc() become the
    > > only wake up point in normal cases.
    > >
    > > if (args->for_background && !list_empty(bdi->throttle_list) &&
    > > over background_thresh - background_thresh / 32)
    > > keep write pages;

    I realized this last change is not necessary, because we already
    have a big enough buffer area:

    (dirty_thresh + background_thresh)/2 ==> background_thresh

    > Right, something like that ought to work well, or at least sounds like
    > worth a try ;-)

    Thanks :)


    \
     
     \ /
      Last update: 2009-09-25 03:37    [W:4.133 / U:0.272 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site