• Tejun Heo's avatar
    writeback: implement wb_domain · 380c27ca
    Tejun Heo authored
    Dirtyable memory is distributed to a wb (bdi_writeback) according to
    the relative bandwidth the wb is writing out in the whole system.
    This distribution is global - each wb is measured against all other
    wb's and gets the proportinately sized portion of the memory in the
    whole system.
    
    For cgroup writeback, the amount of dirtyable memory is scoped by
    memcg and thus each wb would need to be measured and controlled in its
    memcg.  IOW, a wb will belong to two writeback domains - the global
    and memcg domains.
    
    Currently, what constitutes the global writeback domain are scattered
    across a number of global states.  This patch starts collecting them
    into struct wb_domain.
    
    * fprop_global which serves as the basis for proportional bandwidth
      measurement and its period timer are moved into struct wb_domain.
    
    * global_wb_domain hosts the states for the global domain.
    
    * While at it, flatten wb_writeout_fraction() into its callers.  This
      thin wrapper doesn't provide any actual benefits while getting in
      the way.
    
    This is pure reorganization and doesn't introduce any behavioral
    changes.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Wu Fengguang <fengguang.wu@intel.com>
    Cc: Greg Thelen <gthelen@google.com>
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    380c27ca
page-writeback.c 76.2 KB