[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <xm26pmxe4ib6.fsf@google.com>
Date: Tue, 25 May 2021 14:25:33 -0700
From: Benjamin Segall <bsegall@...gle.com>
To: Peter Zijlstra <peterz@...radead.org>
Cc: changhuaixin <changhuaixin@...ux.alibaba.com>,
Dietmar Eggemann <dietmar.eggemann@....com>,
dtcccc@...ux.alibaba.com, Juri Lelli <juri.lelli@...hat.com>,
khlebnikov@...dex-team.ru,
open list <linux-kernel@...r.kernel.org>,
Mel Gorman <mgorman@...e.de>, Ingo Molnar <mingo@...hat.com>,
Odin Ugedal <odin@...d.al>, Odin Ugedal <odin@...dal.com>,
pauld@...head.com, Paul Turner <pjt@...gle.com>,
Steven Rostedt <rostedt@...dmis.org>,
Shanpei Chen <shanpeic@...ux.alibaba.com>,
Tejun Heo <tj@...nel.org>,
Vincent Guittot <vincent.guittot@...aro.org>,
xiyou.wangcong@...il.com
Subject: Re: [PATCH v5 1/3] sched/fair: Introduce the burstable CFS controller
Peter Zijlstra <peterz@...radead.org> writes:
> On Mon, May 24, 2021 at 08:42:03PM +0800, changhuaixin wrote:
>
>> >> static inline struct cfs_bandwidth *tg_cfs_bandwidth(struct task_group *tg)
>> >> @@ -4651,6 +4666,9 @@ static int __assign_cfs_rq_runtime(struct cfs_bandwidth *cfs_b,
>> >> if (cfs_b->quota == RUNTIME_INF)
>> >> amount = min_amount;
>> >> else {
>> >> + if (!cfs_b->period_active)
>> >> + __refill_cfs_bandwidth_runtime(cfs_b);
>> >
>> > Why this call?
>>
>> As the cfs bandwidth timer stops on idle with runtime unfilled, refill runtime when it restarts to make
>> use of the underrun when period timer stops. Another way to do this might be:
>>
>> throttled = !list_empty(&cfs_b->throttled_cfs_rq);
>> cfs_b->nr_periods += overrun;
>>
>> + __refill_cfs_bandwidth_runtime(cfs_b);
>> +
>> /*
>> * idle depends on !throttled (for the case of a large deficit), and if
>> * we're going inactive then everything else can be deferred
>> */
>> if (cfs_b->idle && !throttled)
>> goto out_deactivate;
>>
>> - __refill_cfs_bandwidth_runtime(cfs_b);
>> -
>> if (!throttled) {
>>
>
> Ben, do you have a preference?
I think I prefer the latter, possibly with a
/* Refill extra burst quota even if cfs_b->idle */
Powered by blists - more mailing lists