Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752874AbbLJQLv (ORCPT ); Thu, 10 Dec 2015 11:11:51 -0500 Received: from mail-lf0-f41.google.com ([209.85.215.41]:35504 "EHLO mail-lf0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752541AbbLJQLt (ORCPT ); Thu, 10 Dec 2015 11:11:49 -0500 MIME-Version: 1.0 In-Reply-To: <56697DCB.5050800@unitn.it> References: <1449641971-20827-1-git-send-email-smuckle@linaro.org> <1449641971-20827-10-git-send-email-smuckle@linaro.org> <56697DCB.5050800@unitn.it> From: Vincent Guittot Date: Thu, 10 Dec 2015 17:11:27 +0100 Message-ID: Subject: Re: [RFCv6 PATCH 09/10] sched: deadline: use deadline bandwidth in scale_rt_capacity To: Luca Abeni Cc: Steve Muckle , Peter Zijlstra , Ingo Molnar , linux-kernel , "linux-pm@vger.kernel.org" , Morten Rasmussen , Dietmar Eggemann , Juri Lelli , Patrick Bellasi , Michael Turquette Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3194 Lines: 87 On 10 December 2015 at 14:27, Luca Abeni wrote: > Hi Vincent, > > first of all, thanks for adding me in the discussion. > > On 12/09/2015 09:50 AM, Vincent Guittot wrote: >> >> adding Lucas >> >> On 9 December 2015 at 07:19, Steve Muckle wrote: >>> >>> From: Vincent Guittot >>> >>> Instead of monitoring the exec time of deadline tasks to evaluate the >>> CPU capacity consumed by deadline scheduler class, we can directly >>> calculate it thanks to the sum of utilization of deadline tasks on the >>> CPU. We can remove deadline tasks from rt_avg metric and directly use >>> the average bandwidth of deadline scheduler in scale_rt_capacity. >>> >>> Based in part on a similar patch from Luca Abeni . > > Just to check if my understanding of your patch is correct: what you do is > to track the total utilisation of the tasks that are assigned to a CPU/core, > independently from their state (active or inactive). The difference with my > patch is that I try to track the "active utilisation" (eliminating the > utilisation > of the tasks that are blocked). > > Is this understanding correct? yes, i want to know the average utilization of the CPU/core by deadline scheduler. > If yes, I think your approach is safe (and easier to implement - modulo a > small > issue when a task terminates of switches to other scheduling policies; I > think > there already are some "XXX" comments in the current code). However, it > allows to > save less energy (or reclaim less CPU time). For example, if I create a > SCHED_DEADLINE > task with runtime 90ms and period 100ms it will not allow to scale the CPU > frequency > even if it never executes (because is always blocked). Yes, i agree. If the task behavior is not aligned with its deadline parameters, we will over provisioned CPU capacity to the deadline scheduler. This metric is not used to select the OPP but to provisioned some CPU capacity to the deadline scheduler and to inform the CFS scheduler of the remaining capacity. So the main side effect of an always blocked deadline task will be to decrease the rq->cpu_capacity that is then used by the CFS scheduler. > > > [...] >>> >>> + /* This is the "average utilization" for this runqueue */ >>> + s64 avg_bw; >>> }; > > Small nit: why "average" utilization? I think a better name would be > "runqueue utilization" > or "local utilization", or something similar... If I understand correctly > (sorry if I > missed something), this is not an average, but the sum of the utilisations > of the tasks > on this runqueue... No? I have used "average" because it doesn't reflect the active/actual utilization of the run-queue but the forecasted average bandwidth of the CPU that will be used by deadline task. I'm open to change the name if another one makes more sense Regards, Vincent > > > > Luca -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/