From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752897AbbJNJAZ (ORCPT ); Wed, 14 Oct 2015 05:00:25 -0400 Received: from bombadil.infradead.org ([198.137.202.9]:51032 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751918AbbJNJAX (ORCPT ); Wed, 14 Oct 2015 05:00:23 -0400 Date: Wed, 14 Oct 2015 11:00:16 +0200 From: Peter Zijlstra To: byungchul.park@lge.com Cc: mingo@kernel.org, linux-kernel@vger.kernel.org, yuyang.du@intel.com, pjt@google.com, efault@gmx.de, tglx@linutronix.de Subject: Re: [PATCH v2 1/2] sched: make each sched class handle its rq assignment in their own class Message-ID: <20151014090016.GR17308@twins.programming.kicks-ass.net> References: <1444812130-17880-1-git-send-email-byungchul.park@lge.com> <1444812130-17880-2-git-send-email-byungchul.park@lge.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1444812130-17880-2-git-send-email-byungchul.park@lge.com> User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Oct 14, 2015 at 05:42:09PM +0900, byungchul.park@lge.com wrote: > +static inline void set_task_rq(struct task_struct *p, unsigned int cpu) > +{ > + const struct sched_class *class; > + > + for_each_class(class) { > + if (class->set_task_rq) > + class->set_task_rq(p, cpu); > + } > +} So I worry about this, because the class structures are not all in the same translation unit, GCC cannot (without -fwhole-program) optimize that all away. This means we'll do 5 cacheline loads and 2 indirect calls, on _every_ cpu migration.