Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753148AbbFATjC (ORCPT ); Mon, 1 Jun 2015 15:39:02 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:17402 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750851AbbFATix (ORCPT ); Mon, 1 Jun 2015 15:38:53 -0400 Message-ID: <556CB4A8.1050509@fb.com> Date: Mon, 1 Jun 2015 15:38:16 -0400 From: Josef Bacik User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Peter Zijlstra CC: , , , , , kernel-team Subject: Re: [PATCH RESEND] sched: prefer an idle cpu vs an idle sibling for BALANCE_WAKE References: <1432761736-22093-1-git-send-email-jbacik@fb.com> <20150528102127.GD3644@twins.programming.kicks-ass.net> <20150528110514.GR18673@twins.programming.kicks-ass.net> <5568D43D.20703@fb.com> In-Reply-To: <5568D43D.20703@fb.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [192.168.52.123] X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.14.151,1.0.33,0.0.0000 definitions=2015-06-01_08:2015-05-29,2015-06-01,1970-01-01 signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1682 Lines: 52 On 05/29/2015 05:03 PM, Josef Bacik wrote: > On 05/28/2015 07:05 AM, Peter Zijlstra wrote: >> >> So maybe you want something like the below; that cures the thing Morten >> raised, and we continue looking for sd, even after we found affine_sd. >> >> It also avoids the pointless idle_cpu() check Mike raised by making >> select_idle_sibling() return -1 if it doesn't find anything. >> >> Then it continues doing the full balance IFF sd was set, which is keyed >> off of sd->flags. >> >> And note (as Mike already said), BALANCE_WAKE does _NOT_ look for idle >> CPUs, it looks for the least loaded CPU. And its damn expensive. >> >> >> Rewriting this entire thing is somewhere on the todo list :/ >> > Ok I got this patch to give me the same performance as all our other crap, just need to apply this incremental diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index b71eb2b..e11cfec 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -4761,13 +4761,10 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int sd_flag, int wake_f if (tmp->flags & sd_flag) sd = tmp; - else if (!want_affine || (want_affine && affine_sd)) - break; } if (affine_sd && cpu != prev_cpu && wake_affine(affine_sd, p, sync)) { prev_cpu = cpu; - sd = NULL; /* WAKE_AFFINE trumps BALANCE_WAKE */ } if (sd_flag & SD_BALANCE_WAKE) { And everything works fine. Does that seem reasonable? Thanks, Josef -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/