From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751558AbcBWJT1 (ORCPT ); Tue, 23 Feb 2016 04:19:27 -0500 Received: from casper.infradead.org ([85.118.1.10]:48030 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751162AbcBWJTV (ORCPT ); Tue, 23 Feb 2016 04:19:21 -0500 Date: Tue, 23 Feb 2016 10:19:16 +0100 From: Peter Zijlstra To: "Rafael J. Wysocki" Cc: Steve Muckle , Ingo Molnar , Linux Kernel Mailing List , "linux-pm@vger.kernel.org" , Vincent Guittot , Morten Rasmussen , Dietmar Eggemann , Juri Lelli , Patrick Bellasi , Michael Turquette Subject: Re: [RFCv7 PATCH 01/10] sched: Compute cpu capacity available at current frequency Message-ID: <20160223091916.GF6356@twins.programming.kicks-ass.net> References: <1456190570-4475-1-git-send-email-smuckle@linaro.org> <1456190570-4475-2-git-send-email-smuckle@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: 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 Tue, Feb 23, 2016 at 02:41:20AM +0100, Rafael J. Wysocki wrote: > > /* > > + * Returns the current capacity of cpu after applying both > > + * cpu and freq scaling. > > + */ > > +static unsigned long capacity_curr_of(int cpu) > > +{ > > + return cpu_rq(cpu)->cpu_capacity_orig * > > + arch_scale_freq_capacity(NULL, cpu) > > What about architectures that don't have this? They get the 'default' which is a constant SCHED_CAPACITY_SCALE unit. > Why is that an architecture feature? Because not all archs can tell the frequency the same way. Some you program the DVFS state and they really run at this speed, for those you can simply report back. For others, x86 for example, you program a DVFS 'hint' and the hardware does whatever, we'd have to do APERF/MPERF samples to get an idea of the actual frequency we ran at. Also, the having of this makes the load tracking slightly more expensive, instead of compile time constants we get function calls and actual multiplications. Its not _too_ bad, but still. > I can easily imagine two x86 platforms using different > scale_freq_capacity(), for example. That's up to the arch, if different x86 platforms need different thingies the arch implementation needs to offer a selector -- this isn't 'hard'.