From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751357AbcFXMC4 (ORCPT ); Fri, 24 Jun 2016 08:02:56 -0400 Received: from bombadil.infradead.org ([198.137.202.9]:45311 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750951AbcFXMCz (ORCPT ); Fri, 24 Jun 2016 08:02:55 -0400 Date: Fri, 24 Jun 2016 14:02:50 +0200 From: Peter Zijlstra To: Jirka Hladky Cc: linux-kernel@vger.kernel.org, Ingo Molnar , Kamil Kolakowski , Morten Rasmussen , Yuyang Du , Dietmar Eggemann , Vincent Guittot , umgwanakikbuti@gmail.com, bsegall@google.com, pjt@google.com, matt@codeblueprint.co.uk Subject: Re: Kernel 4.7rc3 - Performance drop 30-40% for SPECjbb2005 and SPECjvm2008 benchmarks against 4.6 kernel Message-ID: <20160624120250.GY30154@twins.programming.kicks-ass.net> References: <20160616172256.GJ30921@twins.programming.kicks-ass.net> <20160623183318.GN30154@twins.programming.kicks-ass.net> <20160623184318.GX30927@twins.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23.1 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jun 24, 2016 at 09:44:41AM +0200, Jirka Hladky wrote: > Hi Peter, > > thanks a lot for looking into it! > > I have tried to disable autogroups > > sysctl -w kernel.sched_autogroup_enabled=0 > > and I can confirm that performance is then back at level as in 4.6 kernel. So unless the heat has made me do really silly things, the below seems to cure things. Could you please verify? --- kernel/sched/fair.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 22d64b3f5876..d4f6fb2f3057 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -2484,7 +2484,7 @@ static inline long calc_tg_weight(struct task_group *tg, struct cfs_rq *cfs_rq) */ tg_weight = atomic_long_read(&tg->load_avg); tg_weight -= cfs_rq->tg_load_avg_contrib; - tg_weight += cfs_rq->load.weight; + tg_weight += cfs_rq->avg.load_avg; return tg_weight; } @@ -2494,7 +2494,7 @@ static long calc_cfs_shares(struct cfs_rq *cfs_rq, struct task_group *tg) long tg_weight, load, shares; tg_weight = calc_tg_weight(tg, cfs_rq); - load = cfs_rq->load.weight; + load = cfs_rq->avg.load_avg; shares = (tg->shares * load); if (tg_weight)