Linux Container Development
 help / color / mirror / Atom feed
  • [parent not found: <1367880372-28312-34-git-send-email-tj@kernel.org>]
  • * [PATCHSET v2] blk-throttle: implement proper hierarchy support
    @ 2013-05-06 22:45 Tejun Heo
      0 siblings, 0 replies; 39+ messages in thread
    From: Tejun Heo @ 2013-05-06 22:45 UTC (permalink / raw)
      To: axboe-tSWWG44O7X1aa/9Udqfwiw
      Cc: cgroups-u79uwXL29TY76Z2rM5mHXA,
    	containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
    	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
    	vgoyal-H+wXaHxf7aLQT0dZR+AlfA
    
    Changes since the last take[L] are
    
    * Unnecessary throtl_schedule_delayed_work() call dropped from 0007.
    
    * throtl_log() implement in 0021 forgot to print space after blkg
      path.  Fixed.
    
    * 0030-blk-throttle-add-throtl_qnode-for-dispatch-fairness.patch added
      to address dispatch fairness.
    
    * 0031-blk-throttle-Account-for-child-group-s-start-time-in.patch
      added to address unwarranted penalty of nested limit enforcement due
      to staggered delays of slice start times at multiple levels.
    
    The original patchset description follows.
    
    blk-throttle is the last controller with broken hierarchy support
    making blkcg the last one tagged with .broken_hierarchy.  This
    patchset implements hierarchy support for blk-throttle.  The semantics
    is pretty simple - limits on an intermediate node applies to the whole
    subtree and the statistics remain local.
    
    As this changes the meaning of the knobs in an incompatible manner -
    e.g. configuring limits on root cgroup now means setting the limit for
    the whole system - the hierarchy mode is enabled by "sane_behavior"
    cgroup mount flag.  If the flag is not specified, the original broken
    flat hierarchy behavior is retained.
    
    While this patchset contains many patches, the implementation is
    pretty straight-forward.  throtl_grp's form a tree anchored at
    throtl_data and bios climb the tree as they get dispatched at each
    level.  The bios which reach the top of the tree - throl_data - are
    issued.  The scheduling algorithm remains unchanged at each level and
    blk-throttle should behave the same for flat hierarchy after the
    changes.  The same algorithm is repeated until bios clear all limits
    to the top of the tree.
    
    This patchset contains the following 33 patches.
    
     0001-blkcg-fix-error-return-path-in-blkg_create.patch
     0002-blkcg-move-blkg_for_each_descendant_pre-to-block-blk.patch
     0003-blkcg-implement-blkg_for_each_descendant_post.patch
     0004-blkcg-invoke-blkcg_policy-pd_init-after-parent-is-li.patch
     0005-blkcg-move-bulk-of-blkcg_gq-release-operations-to-th.patch
     0006-blk-throttle-remove-spurious-throtl_enqueue_tg-call-.patch
     0007-blk-throttle-removed-deferred-config-application-mec.patch
     0008-blk-throttle-collapse-throtl_dispatch-into-the-work-.patch
     0009-blk-throttle-relocate-throtl_schedule_delayed_work.patch
     0010-blk-throttle-remove-pointless-throtl_nr_queued-optim.patch
     0011-blk-throttle-rename-throtl_rb_root-to-throtl_service.patch
     0012-blk-throttle-simplify-throtl_grp-flag-handling.patch
     0013-blk-throttle-add-backlink-pointer-from-throtl_grp-to.patch
     0014-blk-throttle-pass-around-throtl_service_queue-instea.patch
     0015-blk-throttle-reorganize-throtl_service_queue-passed-.patch
     0016-blk-throttle-add-throtl_grp-service_queue.patch
     0017-blk-throttle-move-bio_lists-and-friends-to-throtl_se.patch
     0018-blk-throttle-dispatch-to-throtl_data-service_queue.b.patch
     0019-blk-throttle-generalize-update_disptime-optimization.patch
     0020-blk-throttle-add-throtl_service_queue-parent_sq.patch
     0021-blk-throttle-implement-sq_to_tg-sq_to_td-and-throtl_.patch
     0022-blk-throttle-set-REQ_THROTTLED-from-throtl_charge_bi.patch
     0023-blk-throttle-separate-out-throtl_service_queue-pendi.patch
     0024-blk-throttle-implement-dispatch-looping.patch
     0025-blk-throttle-dispatch-from-throtl_pending_timer_fn.patch
     0026-blk-throttle-make-blk_throtl_drain-ready-for-hierarc.patch
     0027-blk-throttle-make-blk_throtl_bio-ready-for-hierarchy.patch
     0028-blk-throttle-make-tg_dispatch_one_bio-ready-for-hier.patch
     0029-blk-throttle-make-throtl_pending_timer_fn-ready-for-.patch
     0030-blk-throttle-add-throtl_qnode-for-dispatch-fairness.patch
     0031-blk-throttle-Account-for-child-group-s-start-time-in.patch
     0032-blk-throttle-implement-throtl_grp-has_rules.patch
     0033-blk-throttle-implement-proper-hierarchy-support.patch
    
    0001-0005 prepare blkcg so that hierarchy operations are easier.
    
    0006-0016 reorganize code piece-by-piece so that hierarchy support can
    be added.  These don't change behaviors.
    
    0017-0025 prepare for hierarchy support.  Moves fields which are used
    in hierarchy to throtl_service_queue and define parent-child
    relationship.
    
    0026-0032 make queueing, dispatching and configuration changes
    propagate through the hierarchy.
    
    0033 implemenats hierarchy support.
    
    As we're in the middle of a merge window, this patchset is currently
    based on cgroup/for-3.10.  Once 3.10-rc1 drops, I'll rebase the tree
    and send pull request to Jens so that it can be routed with other
    block changes.  The patches are also available on the following git
    branch.
    
     git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git review-throtl-hierarchy
    
    diffstat follows.  Thanks.
    
     block/blk-cgroup.c     |  105 +---
     block/blk-cgroup.h     |   38 +
     block/blk-throttle.c   | 1064 ++++++++++++++++++++++++++++++++++---------------
     include/linux/cgroup.h |    2 
     4 files changed, 822 insertions(+), 387 deletions(-)
    
    --
    tejun
    
    [L] http://thread.gmane.org/gmane.linux.kernel.containers/25845
    
    ^ permalink raw reply	[flat|nested] 39+ messages in thread

    end of thread, other threads:[~2013-05-07 16:50 UTC | newest]
    
    Thread overview: 39+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <1367880372-28312-1-git-send-email-tj@kernel.org>
         [not found] ` <1367880372-28312-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2013-05-06 22:45   ` [PATCH 01/33] blkcg: fix error return path in blkg_create() Tejun Heo
    2013-05-06 22:45   ` [PATCH 02/33] blkcg: move blkg_for_each_descendant_pre() to block/blk-cgroup.h Tejun Heo
    2013-05-06 22:45   ` [PATCH 03/33] blkcg: implement blkg_for_each_descendant_post() Tejun Heo
    2013-05-06 22:45   ` [PATCH 04/33] blkcg: invoke blkcg_policy->pd_init() after parent is linked Tejun Heo
    2013-05-06 22:45   ` [PATCH 05/33] blkcg: move bulk of blkcg_gq release operations to the RCU callback Tejun Heo
    2013-05-06 22:45   ` [PATCH 06/33] blk-throttle: remove spurious throtl_enqueue_tg() call from throtl_select_dispatch() Tejun Heo
    2013-05-06 22:45   ` [PATCH 07/33] blk-throttle: removed deferred config application mechanism Tejun Heo
    2013-05-06 22:45   ` [PATCH 08/33] blk-throttle: collapse throtl_dispatch() into the work function Tejun Heo
    2013-05-06 22:45   ` [PATCH 09/33] blk-throttle: relocate throtl_schedule_delayed_work() Tejun Heo
    2013-05-06 22:45   ` [PATCH 10/33] blk-throttle: remove pointless throtl_nr_queued() optimizations Tejun Heo
    2013-05-06 22:45   ` [PATCH 11/33] blk-throttle: rename throtl_rb_root to throtl_service_queue Tejun Heo
    2013-05-06 22:45   ` [PATCH 12/33] blk-throttle: simplify throtl_grp flag handling Tejun Heo
    2013-05-06 22:45   ` [PATCH 13/33] blk-throttle: add backlink pointer from throtl_grp to throtl_data Tejun Heo
    2013-05-06 22:45   ` [PATCH 14/33] blk-throttle: pass around throtl_service_queue instead of throtl_data Tejun Heo
    2013-05-06 22:45   ` [PATCH 15/33] blk-throttle: reorganize throtl_service_queue passed around as argument Tejun Heo
    2013-05-06 22:45   ` [PATCH 16/33] blk-throttle: add throtl_grp->service_queue Tejun Heo
    2013-05-06 22:45   ` [PATCH 17/33] blk-throttle: move bio_lists[] and friends to throtl_service_queue Tejun Heo
    2013-05-06 22:45   ` [PATCH 18/33] blk-throttle: dispatch to throtl_data->service_queue.bio_lists[] Tejun Heo
    2013-05-06 22:45   ` [PATCH 19/33] blk-throttle: generalize update_disptime optimization in blk_throtl_bio() Tejun Heo
    2013-05-06 22:45   ` [PATCH 20/33] blk-throttle: add throtl_service_queue->parent_sq Tejun Heo
    2013-05-06 22:46   ` [PATCH 21/33] blk-throttle: implement sq_to_tg(), sq_to_td() and throtl_log() Tejun Heo
    2013-05-06 22:46   ` [PATCH 22/33] blk-throttle: set REQ_THROTTLED from throtl_charge_bio() and gate stats update with it Tejun Heo
    2013-05-06 22:46   ` [PATCH 23/33] blk-throttle: separate out throtl_service_queue->pending_timer from throtl_data->dispatch_work Tejun Heo
    2013-05-06 22:46   ` [PATCH 24/33] blk-throttle: implement dispatch looping Tejun Heo
    2013-05-06 22:46   ` [PATCH 25/33] blk-throttle: dispatch from throtl_pending_timer_fn() Tejun Heo
    2013-05-06 22:46   ` [PATCH 26/33] blk-throttle: make blk_throtl_drain() ready for hierarchy Tejun Heo
    2013-05-06 22:46   ` [PATCH 27/33] blk-throttle: make blk_throtl_bio() " Tejun Heo
    2013-05-06 22:46   ` [PATCH 28/33] blk-throttle: make tg_dispatch_one_bio() " Tejun Heo
    2013-05-06 22:46   ` [PATCH 29/33] blk-throttle: make throtl_pending_timer_fn() " Tejun Heo
    2013-05-06 22:46   ` [PATCH 30/33] blk-throttle: add throtl_qnode for dispatch fairness Tejun Heo
    2013-05-06 22:46   ` [PATCH 31/33] blk-throttle: Account for child group's start time in parent while bio climbs up Tejun Heo
    2013-05-06 22:46   ` [PATCH 32/33] blk-throttle: implement throtl_grp->has_rules[] Tejun Heo
    2013-05-06 22:46   ` [PATCH 33/33] blk-throttle: implement proper hierarchy support Tejun Heo
    2013-05-07 14:02   ` [PATCHSET v2] " Vivek Goyal
    2013-05-07 14:16   ` Vivek Goyal
         [not found] ` <1367880372-28312-34-git-send-email-tj@kernel.org>
         [not found]   ` <1367880372-28312-34-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2013-05-07 13:55     ` [PATCH 33/33] " Vivek Goyal
         [not found]       ` <20130507135511.GA7082-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
    2013-05-07 16:14         ` Tejun Heo
    2013-05-07 16:50     ` [PATCH v2 " Tejun Heo
    2013-05-06 22:45 [PATCHSET v2] " Tejun Heo
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox