Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp1381792ybb; Wed, 25 Mar 2020 22:55:02 -0700 (PDT) X-Google-Smtp-Source: ADFU+vtW2vqApKES30pD2n/81atstzG+BfV7RAzvj0m5w9MqC6MLLS20kUeG+9iuNlDK4k+BkfjF X-Received: by 2002:a4a:9c41:: with SMTP id c1mr4088013ook.43.1585202102234; Wed, 25 Mar 2020 22:55:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585202102; cv=none; d=google.com; s=arc-20160816; b=wArLmNFq8+8CxyDmL4FVwCG93PPIIPMBkbX2Y0srjFAKT6PmGpL/cvCFNEV6QbEy1J 2pYZpDykskNvQ4BIQQsmeR8ARDOX19jfM5bkXlmwAZeY67ewWdeWyXnd4xbuCm0thLCF /cH5QWyi+X4mi9aqX85sCNtFEjMdpvRjpkfZHbGKxlis37sUcIQ3UYMHNdPOHhrW/PQz DjD5GjFUkTPLP14jyEEtu3bUG8IjPAJZHdgQfxfWZVWHd92Q0SZQB2zlbSt9i+mVcyOi CTI+oIPQgy6JLkSUZx0auW15gU1Fc3gQDkKvV44Cxn9I/U7pOIzn6l0DfmdGaID9JLB1 nc3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :ironport-sdr:ironport-sdr; bh=f34A0+A+7JpZnWbkN5jpMS0e6qILdSQLFKy7sQ8s+OM=; b=RIEPtuOGRmvXPOmHQH735jIzr2gp5X8bVTUem35KSHWGvCDwRFs50NrFLvYMEOcL0q 0lWFL7P59BRoQ6ITr2KeyFKt8zdSN2YL/BMGqB2c6ZJhPkx3OzJiXFfVDuQ0raTggllR 5rkiz1kzqlBsSzLyI6uzYudjic1CSQSc9rh/c2IUlGVnaI/hAtMT2ftOpQaeDVdPEO9D Rw9ay3MMQlOwu/FGcXH1/hMpDo7OEY36l8tmWI6GId0+qNgzvGmxS0bwEYuFJZj7iS3O +uN+YwqAfYTMBLynf8lpKXQhJFwTtSc14jDEyuW0cj8V3hgl7YjcAF9PI6IKlaebyWYZ 8+tA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v11si538191otj.299.2020.03.25.22.54.50; Wed, 25 Mar 2020 22:55:02 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726279AbgCZFxH (ORCPT + 99 others); Thu, 26 Mar 2020 01:53:07 -0400 Received: from mga03.intel.com ([134.134.136.65]:24516 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726138AbgCZFxH (ORCPT ); Thu, 26 Mar 2020 01:53:07 -0400 IronPort-SDR: IpqVKyYP5+2EddAv3A7QlF/dlHhfBpvsWtF4qysRuHUttd1/bF2sUDLHc53b4OtloPoDvHkvt0 6VXV8o3KCdEg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2020 22:53:06 -0700 IronPort-SDR: 1Xzkm47HHv8vFco/3O8phmKYaO3oY+BCjzVOdL+0aY4OFPQjDxsgzY8CMpgzDd7RBWbOlvP6/t a4bzIyCpomFg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,307,1580803200"; d="scan'208";a="358041731" Received: from aubrey-ubuntu.sh.intel.com ([10.239.53.16]) by fmsmga001.fm.intel.com with ESMTP; 25 Mar 2020 22:53:03 -0700 From: Aubrey Li To: vincent.guittot@linaro.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, linux-kernel@vger.kernel.org Cc: tim.c.chen@linux.intel.com, vpillai@digitalocean.com, joel@joelfernandes.org, Aubrey Li , Aubrey Li , Phil Auld Subject: [PATCH] sched/fair: Fix negative imbalance in imbalance calculation Date: Thu, 26 Mar 2020 13:42:29 +0800 Message-Id: <1585201349-70192-1-git-send-email-aubrey.li@intel.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A negative imbalance value was observed after imbalance calculation, this happens when the local sched group type is group_fully_busy, and the average load of local group is greater than the selected busiest group. Fix this problem by comparing the average load of the local and busiest group before imbalance calculation formula. Suggested-by: Vincent Guittot Signed-off-by: Aubrey Li Cc: Phil Auld --- kernel/sched/fair.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index c1217bf..4a2ba3f 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -8761,6 +8761,14 @@ static inline void calculate_imbalance(struct lb_env *env, struct sd_lb_stats *s sds->avg_load = (sds->total_load * SCHED_CAPACITY_SCALE) / sds->total_capacity; + /* + * If the local group is more loaded than the selected + * busiest group don't try to pull any tasks. + */ + if (local->avg_load >= busiest->avg_load) { + env->imbalance = 0; + return; + } } /* -- 2.7.4