From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755977AbdLOUil convert rfc822-to-8bit (ORCPT ); Fri, 15 Dec 2017 15:38:41 -0500 Received: from mout.gmx.net ([212.227.17.20]:61340 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755638AbdLOUik (ORCPT ); Fri, 15 Dec 2017 15:38:40 -0500 Message-ID: <1513370286.11185.136.camel@gmx.de> Subject: Re: [PATCH] sched: Only migrate tasks due to interrupts on an idle CPU if prev and target CPUs share cache From: Mike Galbraith To: Mel Gorman , Peter Zijlstra Cc: Ingo Molnar , linux-kernel@vger.kernel.org, Matt Fleming Date: Fri, 15 Dec 2017 21:38:06 +0100 In-Reply-To: <20171215165241.ckrs7c6zobjj6rcx@techsingularity.net> References: <20171215165241.ckrs7c6zobjj6rcx@techsingularity.net> Content-Type: text/plain; charset="ISO-8859-15" X-Mailer: Evolution 3.20.5 Mime-Version: 1.0 Content-Transfer-Encoding: 8BIT X-Provags-ID: V03:K0:lJfH/19yaGHeuy97jsMSoP2OcHxYzva1PJvhkXIWVHnA5tqMR+/ wDWdMAUnUWEnCVcaUhQX20VDC5iK6X1SCvw0Rjym6K7yRvy8rH+X1hM5ebLcFKIjfjkpbjI aV/T+ac82UDXsEg43HxO9QVsNwZE4Y8FM29TF8sV97e0KW6Ly/4+OngKHVH1TyHxnxOsEh/ pWnyxcHqed1E/oMyuIrHg== X-UI-Out-Filterresults: notjunk:1;V01:K0:xxdCaKvLrsg=:XXiAO4JOI6eEV/djQpm33u i4dfb6o8Bw/6AOcr/Gq6lNFp8CDlEn3r1qVf58h2o2J3h4k8buYtsNGr5Z88l+WAhTFnp4BVU YU+K5sygkDX4ojxk6nbeqhtqpmx+gmpvpuLSLr3qK6er20GBe5guBCkyx1SzDs5ixUwcDbbfl vxcI5srGiGxtq1adOrknMVZExXXApaC0tR19TDQIieN69I5RV+fmUZslMvO88v5nzD+oQal91 C2fUemTZPHPmXyhJGS7yp5/oDd/aTVO93qhMBhXWqSMdS2ELo7sqDYH20zNcXc/1wmeUGlO2H Uk5/fpLx5xmvPIz85PF+6HzMqkVO7VJEuFMBNyTxdvAqd8ZAAT3+2Z3/FUlErzOKcLXxFaudD VlD3FmSAnkaOxL6PxZnYTCKpGiyJO5GhW6/IgNqomXOjkm+u1HHkbEULnBoSrFOhGbi37Dc+2 gtv7yMIT73a+3tiw8RD40PoKK7UJojoiRFaAS8UgGPD9ytqgPcGbu9G9sx3VXTGzxNMu9O+5X Ot1IWruOoUnOA9OHOts8AjBE6G8WRIr2LZuNNMIc5i/Vr3Pjq9hogwNKbWxLqaDMmhUG498gY EzpwH0jYGruhyfZfWxgdecshXWNF6rWmiW9p5iV1X6RTGaFyp0r/zLodlrz8fW53eBaKimbGe FaETjSU5M4WXlfoVsrbaj06uR3gK8oxp7zSHIMfenSqgIxp+uuY2UdkLtX3KwEG/5M3u6MsJN Fel+p1AsPuhm/w6xtD2dcvALX0/D3hCv+6ezQbiw+fYu8eNsywUTO0xp7LRtJ3ZZa7TJBQzYa EFRGCX2n2i0iT4v/9z2uHWohNNBfa4EXq+3RSfwGf6j2Q5RyTA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 2017-12-15 at 16:52 +0000, Mel Gorman wrote: > > It's a small improvement... >>From my log on corr.arch.suse.de (2x8 box) 4.15.0.g2db767d-default Throughput 2665.88 MB/sec  8 clients  8 procs  max_latency=21.472 ms 4.15.0.g2db767d-default NO_WA_IDLE Throughput 3416.35 MB/sec  8 clients  8 procs  max_latency=9.825 ms Not so small improvement.  WA_IDLE ripped corr up pretty bad, turning it off restored 4.4 performance. > > Signed-off-by: Mel Gorman > --- > kernel/sched/fair.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 2fe3aa853e4d..4a1f7d32ecf6 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -5701,7 +5701,13 @@ static bool > wake_affine_idle(struct sched_domain *sd, struct task_struct *p, > int this_cpu, int prev_cpu, int sync) > { > - if (idle_cpu(this_cpu)) > + /* > + * If this_cpu is idle, it implies the wakeup is from interrupt > + * context. Only allow the move if cache is shared. Otherwise an > + * interrupt intensive workload could force all tasks onto one > + * node depending on the IO topology or IRQ affinity settings. > + */ > + if (idle_cpu(this_cpu) && cpus_share_cache(this_cpu, prev_cpu)) > return true; > > if (sync && cpu_rq(this_cpu)->nr_running == 1)