lkml.org 
[lkml]   [2010]   [Oct]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v3 3/7] sched: throttle cfs_rq entities which exceed their local quota
    On Wed, Oct 13, 2010 at 12:00 AM, KAMEZAWA Hiroyuki
    <kamezawa.hiroyu@jp.fujitsu.com> wrote:
    > On Tue, 12 Oct 2010 23:44:29 -0700
    > Paul Turner <pjt@google.com> wrote:
    >
    >> On Tue, Oct 12, 2010 at 11:34 PM, KAMEZAWA Hiroyuki
    >> <kamezawa.hiroyu@jp.fujitsu.com> wrote:
    >> > On Tue, 12 Oct 2010 13:22:02 +0530
    >> > Bharata B Rao <bharata@linux.vnet.ibm.com> wrote:
    >
    >> >>  /*
    >> >>   * Re-compute the task group their per cpu shares over the given domain.
    >> >>   * This needs to be done in a bottom-up fashion because the rq weight of a
    >> >> @@ -1688,7 +1691,14 @@ static int tg_shares_up(struct task_grou
    >> >>       usd_rq_weight = per_cpu_ptr(update_shares_data, smp_processor_id());
    >> >>
    >> >>       for_each_cpu(i, sched_domain_span(sd)) {
    >> >> -             weight = tg->cfs_rq[i]->load.weight;
    >> >> +             /*
    >> >> +              * bandwidth throttled entities cannot contribute to load
    >> >> +              * balance
    >> >> +              */
    >> >> +             if (!cfs_rq_throttled(tg->cfs_rq[i]))
    >> >> +                     weight = tg->cfs_rq[i]->load.weight;
    >> >> +             else
    >> >> +                     weight = 0;
    >> >
    >> > cpu.share and bandwidth control can't be used simultaneously or...
    >> > is this fair ? I'm not familiar with scheduler but this allows boost this tg.
    >> > Could you add a brief documentaion of a spec/feature. in the next post ?
    >> >
    >>
    >> Bandwidth control is orthogonal to shares, shares continue controls
    >> distribution of bandwidth when within quota.  Bandwidth control only
    >> has 'perceivable' effect when you exceed your reservation within a
    >> quota period.
    >>
    >> What the above is doing is removing any throttled entities from the
    >> load-balancer's weight calculations (based on contribution from
    >> throttled entities) since these entities are already dequeued and
    >> cannot be balanced.
    >>
    >> Or have I misunderstood your question?
    >>
    >
    > Thank you for quick reply.
    > It seems I don't undestand what "cfs_rq_throttled()==1" means.

    cfs_rq_throttled() == 1 correlates to cfs_rq->throttled == 1.

    This is set when a cfs_rq exceeds it's local bandwidth quota and there
    is no quota available in the global pool to refresh it.

    At that point the cfs_rq is forcibly throttled, we accomplish this by

    a) Ending its execution
    b) Removing it from the entity tree (se->on_rq == 0)
    c) Setting the throttled flag

    The cfs_rq->throttled flag is required to track this state so that we
    do not re-enqueue a throttled entity on child wake-up.

    It also tells us here that we should update the accounting since these
    se's, while containing runnable entities, are not actually on_rq.
    >
    > Thanks,
    > -Kame
    >
    >
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2010-10-13 09:17    [W:0.025 / U:30.524 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site