From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E6063C2D0A3 for ; Thu, 12 Nov 2020 12:30:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8397B22201 for ; Thu, 12 Nov 2020 12:30:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728008AbgKLMaE (ORCPT ); Thu, 12 Nov 2020 07:30:04 -0500 Received: from foss.arm.com ([217.140.110.172]:49070 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727035AbgKLMaE (ORCPT ); Thu, 12 Nov 2020 07:30:04 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 54FD0101E; Thu, 12 Nov 2020 04:30:03 -0800 (PST) Received: from e113632-lin (e113632-lin.cambridge.arm.com [10.1.194.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6CA6B3F718; Thu, 12 Nov 2020 04:30:01 -0800 (PST) References: <20201112111201.2081902-1-qperret@google.com> User-agent: mu4e 0.9.17; emacs 26.3 From: Valentin Schneider To: Quentin Perret Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Morten Rasmussen , Quentin Perret , "open list\:SCHEDULER" , kernel-team@android.com, Rick Yiu Subject: Re: [PATCH] sched/fair: Fix overutilized update in enqueue_task_fair() In-reply-to: <20201112111201.2081902-1-qperret@google.com> Date: Thu, 12 Nov 2020 12:29:59 +0000 Message-ID: MIME-Version: 1.0 Content-Type: text/plain Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Quentin, On 12/11/20 11:12, Quentin Perret wrote: > enqueue_task_fair() attempts to skip the overutilized update for new > tasks as their util_avg is not accurate yet. However, the flag we check > to do so is overwritten earlier on in the function, which makes the > condition pretty much a nop. > > Fix this by saving the flag early on. > > Fixes: 2802bf3cd936 ("sched/fair: Add over-utilization/tipping point > indicator") > Reported-by: Rick Yiu > Signed-off-by: Quentin Perret Reviewed-by: Valentin Schneider Alternatively: how much does not updating the overutilized status here help us? The next tick will unconditionally update it, which for arm64 is anywhere in the next ]0, 4]ms. That "fake" fork-time util_avg should already be accounted in the rq util_avg, and even if the new task was running the entire time, 4ms doesn't buy us much decay. > --- > kernel/sched/fair.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 290f9e38378c..f3ee60b92718 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -5477,6 +5477,7 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags) > struct cfs_rq *cfs_rq; > struct sched_entity *se = &p->se; > int idle_h_nr_running = task_has_idle_policy(p); > + int task_new = !(flags & ENQUEUE_WAKEUP); > > /* > * The code below (indirectly) updates schedutil which looks at > @@ -5549,7 +5550,7 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags) > * into account, but that is not straightforward to implement, > * and the following generally works well enough in practice. > */ > - if (flags & ENQUEUE_WAKEUP) > + if (!task_new) > update_overutilized_status(rq); > > enqueue_throttle: