public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL] blk-throttle: implement proper hierarchy support
@ 2013-05-14 21:09 Tejun Heo
  2013-05-15  8:05 ` Jens Axboe
  0 siblings, 1 reply; 2+ messages in thread
From: Tejun Heo @ 2013-05-14 21:09 UTC (permalink / raw)
  To: Jens Axboe; +Cc: linux-kernel, Vivek Goyal, Li Zefan, containers, cgroups

Hello, Jens.

This is the pull request for patches which implement proper hierarchy
support in blk-throttle and remove .broken_hierarchy tagging from
blkcg.

  http://thread.gmane.org/gmane.linux.kernel.cgroups/7119

The implementation is fairly straight-forward in that it just repeats
the same scheduling at each layer until it reaches the top and thus
isn't very scalable.  It also still has an issue where a nested cgroup
could get lower than configured limits as it travels towards root but
the severity is at an acceptable level after Vivke's start time
adjustment patch.  The issue ultimately is a problem in the scheduling
algorithm itself and can also show up in flat hierarchy given the
right (well, wrong) IO pattern.  If it still is an actual problem,
which I don't think is, we should be able to work on it later on in
fairly isolated manner.

While the implementation isn't perfect, it should be good enough in
most cases with a few levels of nesting and this allows the rest of
cgroup to proceed towards unified hierarchy handling.

The series is based on top of v3.10-rc1 and available in the following
git branch

  git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git blk-throttle-hierarchy

for you to fetch changes up to 9138125beabbb76b4a373d4a619870f6f5d86fc5:

  blk-throttle: implement proper hierarchy support (2013-05-14 13:52:38 -0700)

Thanks.

----------------------------------------------------------------
Tejun Heo (32):
      blkcg: fix error return path in blkg_create()
      blkcg: move blkg_for_each_descendant_pre() to block/blk-cgroup.h
      blkcg: implement blkg_for_each_descendant_post()
      blkcg: invoke blkcg_policy->pd_init() after parent is linked
      blkcg: move bulk of blkcg_gq release operations to the RCU callback
      blk-throttle: remove spurious throtl_enqueue_tg() call from throtl_select_dispatch()
      blk-throttle: remove deferred config application mechanism
      blk-throttle: collapse throtl_dispatch() into the work function
      blk-throttle: relocate throtl_schedule_delayed_work()
      blk-throttle: remove pointless throtl_nr_queued() optimizations
      blk-throttle: rename throtl_rb_root to throtl_service_queue
      blk-throttle: simplify throtl_grp flag handling
      blk-throttle: add backlink pointer from throtl_grp to throtl_data
      blk-throttle: pass around throtl_service_queue instead of throtl_data
      blk-throttle: reorganize throtl_service_queue passed around as argument
      blk-throttle: add throtl_grp->service_queue
      blk-throttle: move bio_lists[] and friends to throtl_service_queue
      blk-throttle: dispatch to throtl_data->service_queue.bio_lists[]
      blk-throttle: generalize update_disptime optimization in blk_throtl_bio()
      blk-throttle: add throtl_service_queue->parent_sq
      blk-throttle: implement sq_to_tg(), sq_to_td() and throtl_log()
      blk-throttle: set REQ_THROTTLED from throtl_charge_bio() and gate stats update with it
      blk-throttle: separate out throtl_service_queue->pending_timer from throtl_data->dispatch_work
      blk-throttle: implement dispatch looping
      blk-throttle: dispatch from throtl_pending_timer_fn()
      blk-throttle: make blk_throtl_drain() ready for hierarchy
      blk-throttle: make blk_throtl_bio() ready for hierarchy
      blk-throttle: make tg_dispatch_one_bio() ready for hierarchy
      blk-throttle: make throtl_pending_timer_fn() ready for hierarchy
      blk-throttle: add throtl_qnode for dispatch fairness
      blk-throttle: implement throtl_grp->has_rules[]
      blk-throttle: implement proper hierarchy support

Vivek Goyal (1):
      blk-throttle: Account for child group's start time in parent while bio climbs up

 Documentation/cgroups/blkio-controller.txt |   29 +-
 block/blk-cgroup.c                         |  105 ++-
 block/blk-cgroup.h                         |   38 +-
 block/blk-throttle.c                       | 1064 +++++++++++++++++++---------
 include/linux/cgroup.h                     |    2 +
 5 files changed, 837 insertions(+), 401 deletions(-)

--
tejun

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [GIT PULL] blk-throttle: implement proper hierarchy support
  2013-05-14 21:09 [GIT PULL] blk-throttle: implement proper hierarchy support Tejun Heo
@ 2013-05-15  8:05 ` Jens Axboe
  0 siblings, 0 replies; 2+ messages in thread
From: Jens Axboe @ 2013-05-15  8:05 UTC (permalink / raw)
  To: Tejun Heo; +Cc: linux-kernel, Vivek Goyal, Li Zefan, containers, cgroups

On Tue, May 14 2013, Tejun Heo wrote:
> Hello, Jens.
> 
> This is the pull request for patches which implement proper hierarchy
> support in blk-throttle and remove .broken_hierarchy tagging from
> blkcg.
> 
>   http://thread.gmane.org/gmane.linux.kernel.cgroups/7119
> 
> The implementation is fairly straight-forward in that it just repeats
> the same scheduling at each layer until it reaches the top and thus
> isn't very scalable.  It also still has an issue where a nested cgroup
> could get lower than configured limits as it travels towards root but
> the severity is at an acceptable level after Vivke's start time
> adjustment patch.  The issue ultimately is a problem in the scheduling
> algorithm itself and can also show up in flat hierarchy given the
> right (well, wrong) IO pattern.  If it still is an actual problem,
> which I don't think is, we should be able to work on it later on in
> fairly isolated manner.
> 
> While the implementation isn't perfect, it should be good enough in
> most cases with a few levels of nesting and this allows the rest of
> cgroup to proceed towards unified hierarchy handling.
> 
> The series is based on top of v3.10-rc1 and available in the following
> git branch
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git blk-throttle-hierarchy
> 
> for you to fetch changes up to 9138125beabbb76b4a373d4a619870f6f5d86fc5:
> 
>   blk-throttle: implement proper hierarchy support (2013-05-14 13:52:38 -0700)

Thanks Tejun, I'll pull this in for 3.11.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-05-15  8:06 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-14 21:09 [GIT PULL] blk-throttle: implement proper hierarchy support Tejun Heo
2013-05-15  8:05 ` Jens Axboe

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