Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp365412pxb; Wed, 3 Feb 2021 07:21:29 -0800 (PST) X-Google-Smtp-Source: ABdhPJxa+HjKCq1A2f4KJBUsf5b8aKqnVYNMPx0vPzz1RkU7+jn//bCJ2KqoAPNiPtZIi1xDEfgm X-Received: by 2002:a17:907:7891:: with SMTP id ku17mr3242313ejc.69.1612365688939; Wed, 03 Feb 2021 07:21:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612365688; cv=none; d=google.com; s=arc-20160816; b=nF9Sv/DaBdfzaNB2CM2pwccvGwMZadObAoodVYdsZ3++t4LPdlWFsjBSpEgwrmIAL/ FmX1qqsOba9V5mI9/ti5t0srtwb2krErdSd0NSFtqSro3/ze+rpMYaiA27mieydte6Fm ZXVuEKYRxniw2MH2ed414w0qfojCWB5JR9u9HtkcQnQnrKnbXOdCTTrzkBF5NLaOhZZf hLObcoXPqhPsmiO7AX9TEmuIFgapK5qzOHg1NLaVwkCT1mVNBfVXe9bodWpWvZ71jv+N DSEsEP9CXe6+ihC69CZ92r7EvIesCj6Z1kalnAmRJ0VHlitu5xJ3MLR/4Fm7l7c0Ip0L Wx1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=oDy70YGFF4E1ROodAMhI47TXggtViFRDlSbrvrAK5SY=; b=YbuwUzGWr+2XfKgzwNjDk551+1P1pYjRb5QaqsUkzZreJUtYqd2MBYQZJ2K0/72VWv KzFc1Kk9rA9sGKdNsBwp5usKgMYzRFOmQhRJW3XYpUEp3nQjTzCk8rVS2lo59hOkg/BE rOf+tL7crUvKKoQJL0Mv58YjqpLGvk82sWM5Is9wo1ly3AN+hLOrh1y6QmkJi9XTBbsM 7JSivoXBwlY1zDXDC0EFE5z8sC6YA8ZW4pFIdcanyzvtZYzCKhJsw72SHJ8q99JjAoFX iu3jgOKSMv9aXPgjhXK3bZYdT0BAWRwisijzx0W68NPy5Cp9f+6M5rVQI0HsLYnxtN/Q p3Og== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dp17si1301850ejc.439.2021.02.03.07.21.03; Wed, 03 Feb 2021 07:21:28 -0800 (PST) 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234157AbhBCPRo (ORCPT + 99 others); Wed, 3 Feb 2021 10:17:44 -0500 Received: from foss.arm.com ([217.140.110.172]:41880 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234232AbhBCPQU (ORCPT ); Wed, 3 Feb 2021 10:16:20 -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 598CB143D; Wed, 3 Feb 2021 07:15:34 -0800 (PST) Received: from e107158-lin (e107158-lin.cambridge.arm.com [10.1.194.78]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 09D7B3F73B; Wed, 3 Feb 2021 07:15:32 -0800 (PST) Date: Wed, 3 Feb 2021 15:15:30 +0000 From: Qais Yousef To: Valentin Schneider Cc: linux-kernel@vger.kernel.org, Peter Zijlstra , Ingo Molnar , Vincent Guittot , Dietmar Eggemann , Morten Rasmussen , Quentin Perret , Pavan Kondeti , Rik van Riel Subject: Re: [PATCH 4/8] sched/fair: Use dst_cpu's capacity rather than group {min, max} capacity Message-ID: <20210203151530.aptdehsruoj6flxf@e107158-lin> References: <20210128183141.28097-1-valentin.schneider@arm.com> <20210128183141.28097-5-valentin.schneider@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20210128183141.28097-5-valentin.schneider@arm.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/28/21 18:31, Valentin Schneider wrote: > Comparing capacity extrema of local and source sched_group's doesn't make > much sense when at the day of the day the imbalance will be pulled by a > known env->dst_cpu, whose capacity can be anywhere within the local group's > capacity extrema. > > Replace group_smaller_{min, max}_cpu_capacity() with comparisons of the > source group's min/max capacity and the destination CPU's capacity. > > Signed-off-by: Valentin Schneider > --- Reviewed-by: Qais Yousef Thanks -- Qais Yousef > kernel/sched/fair.c | 31 +++---------------------------- > 1 file changed, 3 insertions(+), 28 deletions(-) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 58ce0b22fcb0..0959a770ecc0 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -8352,26 +8352,6 @@ group_is_overloaded(unsigned int imbalance_pct, struct sg_lb_stats *sgs) > return false; > } > > -/* > - * group_smaller_min_cpu_capacity: Returns true if sched_group sg has smaller > - * per-CPU capacity than sched_group ref. > - */ > -static inline bool > -group_smaller_min_cpu_capacity(struct sched_group *sg, struct sched_group *ref) > -{ > - return capacity_greater(ref->sgc->min_capacity, sg->sgc->min_capacity); > -} > - > -/* > - * group_smaller_max_cpu_capacity: Returns true if sched_group sg has smaller > - * per-CPU capacity_orig than sched_group ref. > - */ > -static inline bool > -group_smaller_max_cpu_capacity(struct sched_group *sg, struct sched_group *ref) > -{ > - return capacity_greater(ref->sgc->max_capacity, sg->sgc->max_capacity); > -} > - > static inline enum > group_type group_classify(unsigned int imbalance_pct, > struct sched_group *group, > @@ -8523,15 +8503,10 @@ static bool update_sd_pick_busiest(struct lb_env *env, > if (!sgs->sum_h_nr_running) > return false; > > - /* > - * Don't try to pull misfit tasks we can't help. > - * We can use max_capacity here as reduction in capacity on some > - * CPUs in the group should either be possible to resolve > - * internally or be covered by avg_load imbalance (eventually). > - */ > + /* Don't try to pull misfit tasks we can't help */ > if (static_branch_unlikely(&sched_asym_cpucapacity) && > sgs->group_type == group_misfit_task && > - (!group_smaller_max_cpu_capacity(sg, sds->local) || > + (!capacity_greater(capacity_of(env->dst_cpu), sg->sgc->max_capacity) || > sds->local_stat.group_type != group_has_spare)) > return false; > > @@ -8615,7 +8590,7 @@ static bool update_sd_pick_busiest(struct lb_env *env, > */ > if (sd_has_asym_cpucapacity(env->sd) && > (sgs->group_type <= group_fully_busy) && > - (group_smaller_min_cpu_capacity(sds->local, sg))) > + (capacity_greater(sg->sgc->min_capacity, capacity_of(env->dst_cpu)))) > return false; > > return true; > -- > 2.27.0 >