Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp516242ybt; Fri, 19 Jun 2020 07:18:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzdp+9LXBsAjF7N2/kZcJZBiwz1vsGQjgLpvTHgd19fMCaGfAktP8/ontCYFGFjmDKvM3Ul X-Received: by 2002:a17:906:7283:: with SMTP id b3mr4019601ejl.163.1592576289655; Fri, 19 Jun 2020 07:18:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592576289; cv=none; d=google.com; s=arc-20160816; b=gnTyRzjdBXMQLC7FOsJCj4wxN3KF4oVNxJ0WdBvJQXM6xWyAVIX8nWC6b6wWZK7G0m lllbMHOL+Il0iyH8B/HJzM7dErPbfqXqglct6OYuQDx1yhDfulv51VTW9JOxhPyTcK4c LsOJHRVAo2fRVV8aLJrsnKrqOxBeeRUGS5HUsuGyy3iz2gxxyr5mZVNPBurMk1ottW0Q j4TowXSGdbh+eikcTbknGznylz43Qvz4S9/G3kCl2DIoztMU/f21nIxXjn2+SDDWRTOE 85k9q1ZmeGmvJed2BNsfdXt3FLR5xBws58yZzWqFxSc0WIr8W0uNcBnaLJO+Fc+z1d+z cHaQ== 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; bh=6crNTNQ2CM3GYtF0yPyxFAFwPjtUO3S1Mby52m1oKIE=; b=VLROxO+c4ucQdcjPi+ztcR67yA6uvcNBKmwFpoPiLKv76ipW1baG9yNDMn++AgprGO 8YQPT1tlsAtK5gAfL7FST62Fa1EUPc7UW0kdQ85S3+RMbfAPyYJUXm/YPwKaQbcn7U2S oEuRXoeUIN8SBeyQczzL7FfJ8B6O8oDBcL7q0Y6QnySrd6/bw9oq0hAUI0jwd9o8Dc2P ddJJBSJOlcy5qIoBJPgUVHOWRi6ywAtEsJrIUqOv4/T+Qu8hRBn7hZB7CyMbAZSAB0jS lauAFZQghYvA5uJL3pKjf9l18/6vB8ZSlLOdC+rHyr+VwKU06KcPGKs40b26QDALSnc8 tHig== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s12si3739464eju.110.2020.06.19.07.17.47; Fri, 19 Jun 2020 07:18:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732996AbgFSON5 (ORCPT + 99 others); Fri, 19 Jun 2020 10:13:57 -0400 Received: from foss.arm.com ([217.140.110.172]:33514 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725974AbgFSONy (ORCPT ); Fri, 19 Jun 2020 10:13:54 -0400 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 594A32B; Fri, 19 Jun 2020 07:13:53 -0700 (PDT) Received: from e107158-lin.cambridge.arm.com (e107158-lin.cambridge.arm.com [10.1.195.21]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id ADF553F73C; Fri, 19 Jun 2020 07:13:51 -0700 (PDT) Date: Fri, 19 Jun 2020 15:13:49 +0100 From: Qais Yousef To: Valentin Schneider Cc: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Patrick Bellasi , Chris Redpath , Lukasz Luba , linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/2] sched/uclamp: Protect uclamp fast path code with static key Message-ID: <20200619141348.5o5iqomwe6lofgiu@e107158-lin.cambridge.arm.com> References: <20200618195525.7889-1-qais.yousef@arm.com> <20200618195525.7889-3-qais.yousef@arm.com> <20200619125148.y4cq3hwllgozbutq@e107158-lin.cambridge.arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20171215 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/19/20 14:25, Valentin Schneider wrote: > > On 19/06/20 13:51, Qais Yousef wrote: > > On 06/19/20 11:36, Valentin Schneider wrote: > >> > >> On 18/06/20 20:55, Qais Yousef wrote: > >> > There is a report that when uclamp is enabled, a netperf UDP test > >> > regresses compared to a kernel compiled without uclamp. > >> > > >> > https://lore.kernel.org/lkml/20200529100806.GA3070@suse.de/ > >> > > >> > >> ISTR the perennial form for those is: https://lkml.kernel.org/r/ > > > > The link is correct permalinnk from lore and contains the message-id as Peter > > likes and he has accepted this form before. > > > > I think the objections I remember were on using lkml.org rather than > lkml.kernel.org. Sorry! > > > If you look closely you'll see that what you suggest is just moving 'lkml' to > > replace lore in the dns name and put an /r/. I don't see a need to enforce one > > form over the other as the one I used is much easier to get. > > > > My assumption would be that while lore may fade (it hasn't been there for > that long, who knows what will come next), lkml.kernel.org ought to be > perennial. Keyword here being "assumption". > > > If Peter really insists I'll be happy to change. > > > > [...] > > > >> > + * This could happen if sched_uclamp_unused was disabled while the > >> > + * current task was running, hence we could end up with unbalanced call > >> > + * to uclamp_rq_dec_id(). > >> > + */ > >> > + if (unlikely(!bucket->tasks)) > >> > + return; > >> > >> I'm slightly worried about silent returns for cases like these, can we try > >> to cook something up to preserve the previous SCHED_WARN_ON()? Say, > >> something like the horrendous below - alternatively might be feasible with > >> with some clever p->on_rq flag. > > > > I am really against extra churn and debug code to detect an impossible case > > that is not really tricky for reviewers to discern. Outside of enqueue/dequeue > > path, it's only used in update_uclamp_active(). It is quite easy to see that > > it's impossible, except for the legit case now when we have a static key > > changing when a task is running. > > > > Providing it isn't too much of a head scratcher (and admittedly what I am > suggesting is borderline here), I believe it is worthwhile to add debug > helps in what is assumed to be impossible cases - even more so in this case > seeing as it had been deemed worth to check previously. We've been proved > wrong on the "impossible" nature of some things before. > > We have a few of those checks strewn over the scheduler code, so it's not > like we would be starting a new trend. I am sorry I am still not bought in. I think the parts you're talking about are in the lockless part of the scheduler which are really hard to debug as several cpus could be traversing these data from different code paths. But here this is just extra churn. If an imbalance has happend this means either: 1. enqueue/dequeue_task() is imablanced itself 2. uclamp_update_active() calls dec without inc. If 1 happened we have more reasons to be worried about. For 2 the function takes task_rq_lock() and does dec/inc in obvious way. So I don't see any reason to add new info in task_struct and sprinkle #ifdefs to protect against something that I can't see we can't reason correctly about now. We don't use pr_debug() in scheduler (I guess no computer would have booted with that on), otherwise that would have been a good candidate for one, yes. But we can't do that. Thanks -- Qais Yousef