Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp443189imm; Thu, 31 May 2018 03:28:25 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJsuSM2tgKRiXcGfejBx0cJEaPLBFQ4wdqvF2VzxAGHJ+d6bzOx8dB5720hkRNuY+XHJTNV X-Received: by 2002:a62:df89:: with SMTP id d9-v6mr6209522pfl.147.1527762505541; Thu, 31 May 2018 03:28:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527762505; cv=none; d=google.com; s=arc-20160816; b=BpXD7farhC5tFxu+jXK9CWChkK1OUwruwl/JQ3HQIloC1A8eQ8kd5DBMVW1U4t3dR6 Qz87Dhujpnarw037QjqocbFXlC42mUq+AuxNWHR7LC9aqljy+bvvWIoV1ShBQwFA0Gyw iA5qgjLXjr6G5CymGf5uBo9OZY+TorSsvJjiZT/34KsF0CSliJyV2+i8m7rA4wj+pgM2 0MYxRs50zVRzpuw+jPR+UCXANsGsUfqvDiXyMbVJfGP6UuKrBA6NppinSv00M0ZO2sV0 JfxilHSPOxtjIY69/1U8osfXFBU0E7JR4XDJyWzjwH5YONd1nop4nwRCiqT5f7MFbE7s 62AQ== 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=lwaOCtfGkw1pgiq2J4gNeYAcphdG83n4KcVkIQaqQrs=; b=Mb66FPLMDXCcmKAtGIoACM6EJuBOBZWLYDB5EdxEBRga41rNIRI4TbByy7c0UqyIYa oebKOZrjm3+RO8MPl6aIqMu74SUMtPaQl8Jlvl37UoyMchTh1NBStbz+ZqMXuf0K2ZgW ekjQAIbOEJCXTJvIT1MKg/UCSYZ+n1VuohQYicuFlRL2nZ35fK0YXg9QyIETpvTKJqxh 7orroR1JhSM9KXKBsIEkX6r28SaTT6A7jZ0u3uX2e3lBjRS8YTQuDafvNus4MU21VJmg SYGU5MHKyLNjkwkzYm+A4iwWDtV0UwzUykonrAQVOe8kXXVcT6hXeS2DmdsGtOJ5fcyD WujQ== 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 u75-v6si36738680pfd.328.2018.05.31.03.28.11; Thu, 31 May 2018 03:28:25 -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 S1754420AbeEaK1n (ORCPT + 99 others); Thu, 31 May 2018 06:27:43 -0400 Received: from foss.arm.com ([217.140.101.70]:39118 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754250AbeEaK1l (ORCPT ); Thu, 31 May 2018 06:27:41 -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 0F2C51596; Thu, 31 May 2018 03:27:41 -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 87F8B3F24A; Thu, 31 May 2018 03:27:38 -0700 (PDT) Date: Thu, 31 May 2018 11:27:36 +0100 From: Patrick Bellasi To: Vincent Guittot Cc: Juri Lelli , Peter Zijlstra , Ingo Molnar , linux-kernel , "Rafael J. Wysocki" , Dietmar Eggemann , Morten Rasmussen , viresh kumar , Valentin Schneider , Quentin Perret , Luca Abeni , Claudio Scordino , Joel Fernandes , Alessio Balsini Subject: Re: [PATCH v5 05/10] cpufreq/schedutil: get max utilization Message-ID: <20180531102735.GM30654@e110439-lin> References: <1527253951-22709-1-git-send-email-vincent.guittot@linaro.org> <1527253951-22709-6-git-send-email-vincent.guittot@linaro.org> <20180528101234.GA1293@localhost.localdomain> <20180528152243.GD1293@localhost.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: 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 Hi Vincent, Juri, On 28-May 18:34, Vincent Guittot wrote: > On 28 May 2018 at 17:22, Juri Lelli wrote: > > On 28/05/18 16:57, Vincent Guittot wrote: > >> Hi Juri, > >> > >> On 28 May 2018 at 12:12, Juri Lelli wrote: > >> > Hi Vincent, > >> > > >> > On 25/05/18 15:12, Vincent Guittot wrote: > >> >> Now that we have both the dl class bandwidth requirement and the dl class > >> >> utilization, we can use the max of the 2 values when agregating the > >> >> utilization of the CPU. > >> >> > >> >> Signed-off-by: Vincent Guittot > >> >> --- > >> >> kernel/sched/sched.h | 6 +++++- > >> >> 1 file changed, 5 insertions(+), 1 deletion(-) > >> >> > >> >> diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h > >> >> index 4526ba6..0eb07a8 100644 > >> >> --- a/kernel/sched/sched.h > >> >> +++ b/kernel/sched/sched.h > >> >> @@ -2194,7 +2194,11 @@ static inline void cpufreq_update_util(struct rq *rq, unsigned int flags) {} > >> >> #ifdef CONFIG_CPU_FREQ_GOV_SCHEDUTIL > >> >> static inline unsigned long cpu_util_dl(struct rq *rq) > >> >> { > >> >> - return (rq->dl.running_bw * SCHED_CAPACITY_SCALE) >> BW_SHIFT; > >> >> + unsigned long util = (rq->dl.running_bw * SCHED_CAPACITY_SCALE) >> BW_SHIFT; > >> > > >> > I'd be tempted to say the we actually want to cap to this one above > >> > instead of using the max (as you are proposing below) or the > >> > (theoretical) power reduction benefits of using DEADLINE for certain > >> > tasks might vanish. > >> > >> The problem that I'm facing is that the sched_entity bandwidth is > >> removed after the 0-lag time and the rq->dl.running_bw goes back to > >> zero but if the DL task has preempted a CFS task, the utilization of > >> the CFS task will be lower than reality and schedutil will set a lower > >> OPP whereas the CPU is always running. With UTIL_EST enabled I don't expect an OPP reduction below the expected utilization of a CFS task. IOW, when a periodic CFS task is preempted by a DL one, what we use for OPP selection once the DL task is over is still the estimated utilization for the CFS task itself. Thus, schedutil will eventually (since we have quite conservative down scaling thresholds) go down to the right OPP to serve that task. > >> The example with a RT task described in the cover letter can be > >> run with a DL task and will give similar results. In the cover letter you says: A rt-app use case which creates an always running cfs thread and a rt threads that wakes up periodically with both threads pinned on same CPU, show lot of frequency switches of the CPU whereas the CPU never goes idles during the test. I would say that's a quite specific corner case where your always running CFS task has never accumulated a util_est sample. Do we really have these cases in real systems? Otherwise, it seems to me that we are trying to solve quite specific corner cases by adding a not negligible level of "complexity". Moreover, I also have the impression that we can fix these use-cases by: - improving the way we accumulate samples in util_est i.e. by discarding preemption time - maybe by improving the utilization aggregation in schedutil to better understand DL requirements i.e. a 10% utilization with a 100ms running time is way different then the same utilization with a 1ms running time -- #include Patrick Bellasi