Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S944794AbcJSPVG (ORCPT ); Wed, 19 Oct 2016 11:21:06 -0400 Received: from bombadil.infradead.org ([198.137.202.9]:54825 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S944642AbcJSPUy (ORCPT ); Wed, 19 Oct 2016 11:20:54 -0400 Date: Wed, 19 Oct 2016 11:53:50 +0200 From: Peter Zijlstra To: Vincent Guittot Cc: Matt Fleming , Wanpeng Li , Ingo Molnar , "linux-kernel@vger.kernel.org" , Mike Galbraith , Yuyang Du , Dietmar Eggemann Subject: Re: [PATCH] sched/fair: Do not decay new task load on first enqueue Message-ID: <20161019095350.GH3102@twins.programming.kicks-ass.net> References: <20161010100107.GZ16071@codeblueprint.co.uk> <20161010173440.GA28945@linaro.org> <20161011102453.GA16071@codeblueprint.co.uk> <20161018102937.GI16071@codeblueprint.co.uk> <20161018111017.GY3142@twins.programming.kicks-ass.net> <20161018112957.GJ16071@codeblueprint.co.uk> <20161018121557.GA3142@twins.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23.1 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1447 Lines: 48 On Wed, Oct 19, 2016 at 08:38:12AM +0200, Vincent Guittot wrote: > > It might make sense to have helper functions to evaluate those > > The main issue is the number of parameters used in these conditions > that makes helper function not really more readable. Fair enough I suppose.. > > conditions, because currently there's two instances of each, once in the > > branch selection and then again (but inverted, we miss the == case fwiw) > > not sure to catch the comment about inverted and miss the == case Oh, you're right. Which proves my point on this not being entirely readable :/ Initially I thought the things were of the form: else if (ineq) { } ... if (... || !ineq || ...) Which would get you things like: ab, and leave a==b undefined. But if I put them along side one another like: + } else if (min_runnable_load > (runnable_load + imbalance)) { + (min_runnable_load > (this_runnable_load + imbalance)) || + } else if ((runnable_load < (min_runnable_load + imbalance)) && + (100*min_avg_load > sd->imbalance_pct*avg_load)) { + ((this_runnable_load < (min_runnable_load + imbalance)) && + (100*min_avg_load > sd->imbalance_pct*this_avg_load))) We can see this is not in fact the case. Blergh, I also cannot see a pretty way to increase readability here, because while they have the same general shape, there's this small variation with this_*. A well..