Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp385340pxb; Wed, 24 Feb 2021 05:03:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJy9DxuI9sBI7tfqA9fqsis2tr4GaD00F4W6Pwr+hBGl2IYXG23A9y9ZLL5rUPIQXHWhbJNF X-Received: by 2002:a05:6402:78e:: with SMTP id d14mr28626553edy.171.1614171799672; Wed, 24 Feb 2021 05:03:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614171799; cv=none; d=google.com; s=arc-20160816; b=yYRWq/GAJMfqlNDup0eAHFjDMmss4FnQvnQ/gqoNk/yGTiJGgr59SGiD84OkXi3Yl0 SbSH810j+w+Xw+/ZPJ3EoNzZ4F3sD61R5a5MJEDeS0FB07gyOE6lV6icaAWmEUZ1XeX2 G99U/PhYgH14vWXNsB5W6ddb6yCqBuOB+p0l489ptZzcZ6qLE2j2dVEnPD8KCvi48vLx BdVGZU5OE7roEmVD+Cep4cbFcwY5mB95tgAtEmSkFUxbhADRBpfeF9hNT6OLOULlqKQg w+v20eC3bzm22dJE9oycCq/Fdt4Lom2/sf4aXIvHS4szyumNqa7ZuaUWBRVvA73Tzl8J bRBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from:ironport-sdr :ironport-sdr; bh=FHiJW91qibcDHbEyubAZdg7HiXXj46mee7N/kSHd/8s=; b=AldqLH0bZu5iNYLPkD842EyPDdC8Vy9ZBOVPT5azywk2eP9PHgHoRZDaYP7rEXMU0e NmdMEsTA//ElhITe0DlDIPkh9kh0LYmso8z1GjBgYKqWFzPcgDj+LWWlhyHo8xVvIMq9 ssmiOl22V1XJb7j26/ewwgPZKbj7Gv8G5cs7b0NCr39CBpXtg5OLV83bffWCCZY0d45N 7qkAM3vx8wfDnidHIj72wk6m7e5Dd77yHzV890c+xYOtpTWLruzEPB8SFHcua9oNWMcY ce8y/BmquxHUDWgqS1XK4p6DacCpu4Y1NpIwsTOrLX2EE9NTPMpmsvqggHFA3XfS7DjK SGCg== 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=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id qt10si1308099ejb.462.2021.02.24.05.02.55; Wed, 24 Feb 2021 05:03:19 -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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232203AbhBXIGu (ORCPT + 99 others); Wed, 24 Feb 2021 03:06:50 -0500 Received: from mga12.intel.com ([192.55.52.136]:27997 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230010AbhBXIGt (ORCPT ); Wed, 24 Feb 2021 03:06:49 -0500 IronPort-SDR: DVBEM5nC088uzGWSRlAaZW48ZY/EHW4pCYq4r1aufXRgxdmSBFBux1LTS6ab/w89HLA+1+VgK1 QgoMMKFgyRng== X-IronPort-AV: E=McAfee;i="6000,8403,9904"; a="164304608" X-IronPort-AV: E=Sophos;i="5.81,202,1610438400"; d="scan'208";a="164304608" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Feb 2021 00:06:08 -0800 IronPort-SDR: G+vnAu6JCZJLXYRZd3lK1ODn3Lvab4u5CdsUjcUy8A8UT0ZWqp3xLY+LWd3Iyvr1j8PocUiVrh R+rGtI4zw+6g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,202,1610438400"; d="scan'208";a="423955222" Received: from aubrey-ubuntu.sh.intel.com ([10.239.53.27]) by fmsmga004.fm.intel.com with ESMTP; 24 Feb 2021 00:06:05 -0800 From: Aubrey Li To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@techsingularity.net, bristot@redhat.com Cc: linux-kernel@vger.kernel.org, Aubrey Li , Andi Kleen , Tim Chen , Srinivas Pandruvada , "Rafael J . Wysocki" , Aubrey Li Subject: [PATCH v2] sched/fair: reduce long-tail newly idle balance cost Date: Wed, 24 Feb 2021 16:15:49 +0800 Message-Id: <1614154549-116078-1-git-send-email-aubrey.li@intel.com> X-Mailer: git-send-email 2.7.4 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A long-tail load balance cost is observed on the newly idle path, this is caused by a race window between the first nr_running check of the busiest runqueue and its nr_running recheck in detach_tasks. Before the busiest runqueue is locked, the tasks on the busiest runqueue could be pulled by other CPUs and nr_running of the busiest runqueu becomes 1 or even 0 if the running task becomes idle, this causes detach_tasks breaks with LBF_ALL_PINNED flag set, and triggers load_balance redo at the same sched_domain level. In order to find the new busiest sched_group and CPU, load balance will recompute and update the various load statistics, which eventually leads to the long-tail load balance cost. This patch clears LBF_ALL_PINNED flag for this race condition, and hence reduces the long-tail cost of newly idle balance. Cc: Vincent Guittot Cc: Mel Gorman Cc: Andi Kleen Cc: Tim Chen Cc: Srinivas Pandruvada Cc: Rafael J. Wysocki Signed-off-by: Aubrey Li --- kernel/sched/fair.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 04a3ce2..5c67804 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -7675,6 +7675,15 @@ static int detach_tasks(struct lb_env *env) lockdep_assert_held(&env->src_rq->lock); + /* + * Source run queue has been emptied by another CPU, clear + * LBF_ALL_PINNED flag as we will not test any task. + */ + if (env->src_rq->nr_running <= 1) { + env->flags &= ~LBF_ALL_PINNED; + return 0; + } + if (env->imbalance <= 0) return 0; -- 2.7.4