Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3416424imm; Mon, 4 Jun 2018 03:18:34 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJSsjeusXRaECaq0zOI+EJu/aXMy4Jrb4XkeyrTesjy5IzTbzyxtvbLA1DzqgIKQ9+JpnYU X-Received: by 2002:aa7:810f:: with SMTP id b15-v6mr20478495pfi.79.1528107514053; Mon, 04 Jun 2018 03:18:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528107514; cv=none; d=google.com; s=arc-20160816; b=V3tQ0qJftPhYWU6KKsZfjioFFCDJncF7Ue2Bho3mHkD7ZyPkqscYHKCqDbArsr3quK MGt5ernmDyheHVQN+e2xYdR5vcU5NUh4sQYn1TWD8WkhpOrN3QG9F3m04Q3JnwQ2BEpt U4BPLMKpX9hNl8UpnTCgO/mpeNRjAmpFHw9f7td47DM9NuA93jhgasyx1gAIyv8zlRBs ycp71b2nuoDIuMzDBHVAVfdAUCPiVAiMhUBuISpiL8qzcCN+mvjk4e+QZy7pjeXQRi3N SXUvOrj8BdHcSjEViKkfs9hlLVhCypu8XErNi98JeLLkVrdwPJVec7nULlHcbbiJWMzh ndJQ== 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=tFhdt9qnte7zw0wKOmnd1WnQ0f1qL5Gy3LXA8nx/rXE=; b=A6UDf9wCcsMH807+XS8z69/gQxJ2tKefX3nCjAjjvgZQFyVJPc2CcfFQXym/iFh1YM 5ddeP5EzlPEkhkIdSZk2Rs77GjtkBpwwuUIlSTrofzPeg8cozvuv0I7DJuF5cKZRiCCB DbucFY3Wh2GCZCB/hzWG6lcbqyO2/LZYwpwRjnknLAu8GiqitDCaITydEbBmcRdO6hJD iz044GDFoGeiLaZFS22td0x4OcSB9VynL+JSPlz0cm0Ji6fOEAwqhHyczMAEJXjoc0Gd MCsh0wEndFjIN7b+F4wza9Il6SV9GO9UtrITo1LCUpKpgn0FS0V6XkonO13ZHNi3eH5Q i8Gg== 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 67-v6si46360787pla.475.2018.06.04.03.18.19; Mon, 04 Jun 2018 03:18:34 -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 S1752478AbeFDKR5 (ORCPT + 99 others); Mon, 4 Jun 2018 06:17:57 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:41166 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751941AbeFDKR4 (ORCPT ); Mon, 4 Jun 2018 06:17:56 -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 AA10E80D; Mon, 4 Jun 2018 03:17:55 -0700 (PDT) Received: from e108498-lin.cambridge.arm.com (e108498-lin.cambridge.arm.com [10.1.210.84]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BD45C3F557; Mon, 4 Jun 2018 03:17:53 -0700 (PDT) Date: Mon, 4 Jun 2018 11:17:52 +0100 From: Quentin Perret To: Patrick Bellasi Cc: Peter Zijlstra , Juri Lelli , Vincent Guittot , mingo@kernel.org, linux-kernel@vger.kernel.org, rjw@rjwysocki.net, dietmar.eggemann@arm.com, Morten.Rasmussen@arm.com, viresh.kumar@linaro.org, valentin.schneider@arm.com Subject: Re: [PATCH v5 03/10] cpufreq/schedutil: add rt utilization tracking Message-ID: <20180604101751.GB3082@e108498-lin.cambridge.arm.com> References: <1527253951-22709-1-git-send-email-vincent.guittot@linaro.org> <1527253951-22709-4-git-send-email-vincent.guittot@linaro.org> <20180530164601.GC2174@e108498-lin.cambridge.arm.com> <20180531084607.GB17937@localhost.localdomain> <20180601162357.GT12180@hirez.programming.kicks-ass.net> <20180601172359.GN30654@e110439-lin> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180601172359.GN30654@e110439-lin> User-Agent: Mutt/1.8.3 (2017-05-23) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Friday 01 Jun 2018 at 18:23:59 (+0100), Patrick Bellasi wrote: > On 01-Jun 18:23, Peter Zijlstra wrote: > > On Thu, May 31, 2018 at 10:46:07AM +0200, Juri Lelli wrote: > > > On 30/05/18 17:46, Quentin Perret wrote: > > > > > > So I understand why we want to got to max freq when a RT task is running, > > > > but I think there are use cases where we might want to be more conservative > > > > and use the util_avg of the RT rq instead. The first use case is > > > > battery-powered devices where going to max isn't really affordable from > > > > an energy standpoint. Android, for example, has been using a RT > > > > utilization signal to select OPPs for quite a while now, because going > > > > to max blindly is _very_ expensive. > > > > > > > > And the second use-case is thermal pressure. On some modern CPUs, going to > > > > max freq can lead to stringent thermal capping very quickly, at the > > > > point where your CPUs might not have enough capacity to serve your tasks > > > > properly. And that can ultimately hurt the very RT tasks you originally > > > > tried to run fast. In these systems, in the long term, you'd be better off > > > > not asking for more than what you really need ... > > > > > > Proposed the same at last LPC. Peter NAKed it (since RT is all about > > > meeting deadlines, and when using FIFO/RR we don't really know how fast > > > the CPU should go to meet them, so go to max is the only safe decision). > > > > > > > So what about having a sched_feature to select between going to max and > > > > using the RT util_avg ? Obviously the default should keep the current > > > > behaviour. > > > > > > Peter, would SCHED_FEAT make a difference? :) > > > > Hurmph... :) > > > > > Or Patrick's utilization capping applied to RT.. > > > > There might be something there, IIRC that tracks the max potential > > utilization for the running tasks. So at that point we can set a > > frequency to minimize idle time. > > Or we can do the opposite: we go to max by default (as it is now) and > if you think that some RT tasks don't need the full speed, you can > apply a util_max to them. > > That way, when a RT task is running alone on a CPU, we can run it > only at a custom max freq which is known to be ok according to your > latency requirements. > > If instead it's running with other CFS tasks, we add already the CFS > utilization, which will result into a speedup of the RT task to give > back the CPU to CFS. Hmmm why not setting a util_min constraint instead ? The default for a RT task should be a util_min of 1024, which means go to max. And then if userspace has knowledge about the tasks it could decide to lower the util_min value. That way, you would still let the util_avg grow if a RT task runs flat out for a long time, and you would still be able to go to higher frequencies. But if the util of the RT tasks is very low, you wouldn't necessarily run at max freq, you would run at the freq matching the util_min constraint. So you probably want to: 1) forbid setting max_util constraints for RT; 2) have schedutil look at the min-capped RT util if rt_nr_running > 0; and 3) have schedutil look at the non-capped RT util if rt_nr_running == 0. Does that make any sense ? Thanks, Quentin > > > It's not perfect, because while the clamping thing effectively sets a > > per-task bandwidth, the max filter is wrong. Also there's no CBS to > > enforce anything. > > Right, well... from user-space potentially if you carefully set the RT > cpu's controller (both bandwidth and clamping) and keep track of the > allocated bandwidth, you can still ensure that all your RT tasks will > be able to run, according to their prio. > > > With RT servers we could aggregate the group bandwidth and limit from > > that... > > What we certainly miss I think it's the EDF scheduler: it's not > possible to run certain RT tasks before others irrespectively of they > relative priority. > > -- > #include > > Patrick Bellasi