lkml.org 
[lkml]   [2011]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [CFS Bandwidth Control v4 3/7] sched: throttle cfs_rq entities which exceed their local quota
    Hi Paul,

    On Tue, Feb 15, 2011 at 07:18:34PM -0800, Paul Turner wrote:
    > @@ -1015,6 +1046,14 @@ enqueue_entity(struct cfs_rq *cfs_rq, st
    > * Update run-time statistics of the 'current'.
    > */
    > update_curr(cfs_rq);
    > +
    > +
    > +#ifdef CONFIG_CFS_BANDWIDTH
    > + if (!entity_is_task(se) && (cfs_rq_throttled(group_cfs_rq(se)) ||
    > + !group_cfs_rq(se)->nr_running))
    > + return;
    > +#endif
    > +
    > update_cfs_load(cfs_rq, 0);
    > account_entity_enqueue(cfs_rq, se);
    > update_cfs_shares(cfs_rq);

    > @@ -1363,6 +1407,9 @@ enqueue_task_fair(struct rq *rq, struct
    > break;
    > cfs_rq = cfs_rq_of(se);
    > enqueue_entity(cfs_rq, se, flags);
    > + /* don't continue to enqueue if our parent is throttled */
    > + if (cfs_rq_throttled(cfs_rq))
    > + break;

    1. This check (in enqueue_task_fair) ensures that if the cfs_rq we just enqueued
    se to is throttled, we bail our from futher enqueueing of the hierarchy.

    2. In enqueue_entity() we check if the entity we are enqueing owns a throttled
    hieararchy and refuse to enqueue if true. And we silently refuse but continue
    with futher enqueue attempts.

    I see that 1 can happen when there a task belonging to a throttled group
    wakes up.

    Can you pls explain the scenario when 2 is needed ?

    Regards,
    Bharata.


    \
     
     \ /
      Last update: 2011-03-02 08:27    [from the cache]
    ©2003-2011 Jasper Spaans