Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp531044imm; Fri, 11 May 2018 02:14:22 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrA79cKyEFSdTOwwTW8lLCrU1IGbx0wAXbRbjdo422FkjGOQQzgQnnPs7YLQvmoD+SjHb0j X-Received: by 2002:a17:902:2f84:: with SMTP id t4-v6mr4873240plb.24.1526030061991; Fri, 11 May 2018 02:14:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526030061; cv=none; d=google.com; s=arc-20160816; b=fXZwCAsExBZALRJjtoGv7HuXCl/RpVQz3Pvvj0xMfPOk3QOHfU8lxq7rGowxPTag8h KZ5R2s5ajFNLwn8+mZM3u2w+Dn2eMl/rSYGoJhafu/k6yds3MBfB0wi7QG3qiIzPxOkR HOxJ1CWyEEyM5Tt9ooMvgKCZVb1aKk/afTTc3F+/CQ02VXaYYFD8Kyw4o4iu4phT+YJ5 bGOtozVDxo144RyboMxNnzC7zZffCShDLPDkDpq6Fr7DaVXs8fQQND7Vo2BBpPNnHh1Z /TLrJUuhc0uP6576ngv62ooFEtb7JXNR3DE1CNypadGMtj4mHgrUGolJ9wCet+7qaLzw FEnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=AKuH915oG8zOKXdZTfOjQ2+F/436KZxx1AU3ggBIJ5Q=; b=p175BllXR3ERk57Hxet91JFVYFmjggvwh4xmayL7ISptqiV4NjFyUcMTpEI5ydYpPY xz+Chra4YhWTI22kzJx/jPKgxcx2dqLuNFi4ran5CNbb5j68achx6u5ZZgbY4/71/8Bt 0Nc7jAbQT45zUgGwHlbrfIDwF9LYJc6kMs/x5v4SoJrUebjXAP+nQZ7LX/LqQEZ7dxbS ceZzOD/gU2LEX+71Tm9XRnMCIYmYKg3L6SpX0Z6PxhOEfFLQMAUQJfqPJ5H1QnSSoAPp w8W6n+BIg+arCM6xzEm/3HrPENnlBveDASElZ+RoL7B4GAA/oS/kMwL1J/5Z2SeweYEH 94Lw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 206-v6si3025658pfw.130.2018.05.11.02.14.07; Fri, 11 May 2018 02:14:21 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752833AbeEKJMs (ORCPT + 99 others); Fri, 11 May 2018 05:12:48 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:38376 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751406AbeEKJMr (ORCPT ); Fri, 11 May 2018 05:12:47 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id EC83F1596; Fri, 11 May 2018 02:12:46 -0700 (PDT) Received: from e110439-lin (e110439-lin.cambridge.arm.com [10.1.210.68]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DB1D73F73E; Fri, 11 May 2018 02:12:44 -0700 (PDT) Date: Fri, 11 May 2018 10:12:42 +0100 From: Patrick Bellasi To: Viresh Kumar Cc: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Ingo Molnar , Peter Zijlstra , "Rafael J . Wysocki" , Vincent Guittot , Dietmar Eggemann , Morten Rasmussen , Juri Lelli , Joel Fernandes , Steve Muckle Subject: Re: [PATCH 1/3] sched/cpufreq: always consider blocked FAIR utilization Message-ID: <20180511091242.GE30654@e110439-lin> References: <20180510150553.28122-1-patrick.bellasi@arm.com> <20180510150553.28122-2-patrick.bellasi@arm.com> <20180511054407.qxwyyqsgyzqsf6e4@vireshk-i7> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180511054407.qxwyyqsgyzqsf6e4@vireshk-i7> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11-May 11:14, Viresh Kumar wrote: > On 10-05-18, 16:05, Patrick Bellasi wrote: > > Since the refactoring introduced by: > > > > commit 8f111bc357aa ("cpufreq/schedutil: Rewrite CPUFREQ_RT support") > > > > we aggregate FAIR utilization only if this class has runnable tasks. > > This was mainly due to avoid the risk to stay on an high frequency just > > because of the blocked utilization of a CPU not being properly decayed > > while the CPU was idle. > > > > However, since: > > > > commit 31e77c93e432 ("sched/fair: Update blocked load when newly idle") > > > > the FAIR blocked utilization is properly decayed also for IDLE CPUs. > > > > This allows us to use the FAIR blocked utilization as a safe mechanism > > to gracefully reduce the frequency only if no FAIR tasks show up on a > > CPU for a reasonable period of time. > > > > Moreover, we also reduce the frequency drops of CPUs running periodic > > tasks which, depending on the task periodicity and the time required > > for a frequency switch, was increasing the chances to introduce some > > undesirable performance variations. > > > > Reported-by: Vincent Guittot > > Signed-off-by: Patrick Bellasi > > Cc: Ingo Molnar > > Cc: Peter Zijlstra > > Cc: Rafael J. Wysocki > > Cc: Vincent Guittot > > Cc: Viresh Kumar > > Cc: Joel Fernandes > > Cc: linux-kernel@vger.kernel.org > > Cc: linux-pm@vger.kernel.org > > --- > > kernel/sched/cpufreq_schedutil.c | 17 ++++++++--------- > > 1 file changed, 8 insertions(+), 9 deletions(-) > > Do we need a Fixes tag and Cc stable ? Mmm... no sure, I would say that's not a fix. As I say in the changelog above, 8f111bc357aa was doing the correct thing but, since the recent Vincent's commit 31e77c93e432, this is an update worth to have, since now we can trust the decay of blocked utilization. Regarding stable, well... if Vincent patches are not going to be considered for stable, then we should not consider this too, do we? > > > > diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c > > index d2c6083304b4..a74d05160e66 100644 > > --- a/kernel/sched/cpufreq_schedutil.c > > +++ b/kernel/sched/cpufreq_schedutil.c > > @@ -183,22 +183,21 @@ static void sugov_get_util(struct sugov_cpu *sg_cpu) > > static unsigned long sugov_aggregate_util(struct sugov_cpu *sg_cpu) > > { > > struct rq *rq = cpu_rq(sg_cpu->cpu); > > - unsigned long util; > > > > - if (rq->rt.rt_nr_running) { > > - util = sg_cpu->max; > > - } else { > > - util = sg_cpu->util_dl; > > - if (rq->cfs.h_nr_running) > > - util += sg_cpu->util_cfs; > > - } > > + if (rq->rt.rt_nr_running) > > + return sg_cpu->max; > > > > /* > > + * Utilization required by DEADLINE must always be granted while, for > > + * FAIR, we use blocked utilization of IDLE CPUs as a mechanism to > > + * gracefully reduce the frequency when no tasks show up for longer > > + * periods of time. > > + * > > * Ideally we would like to set util_dl as min/guaranteed freq and > > * util_cfs + util_dl as requested freq. However, cpufreq is not yet > > * ready for such an interface. So, we only do the latter for now. > > */ > > - return min(util, sg_cpu->max); > > + return min(sg_cpu->max, (sg_cpu->util_dl + sg_cpu->util_cfs)); > > } > > > > static void sugov_set_iowait_boost(struct sugov_cpu *sg_cpu, u64 time, unsigned int flags) > > Acked-by: Viresh Kumar > > -- > viresh -- #include Patrick Bellasi