From patchwork Fri May 23 18:16:28 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Morten Rasmussen X-Patchwork-Id: 30840 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-ob0-f198.google.com (mail-ob0-f198.google.com [209.85.214.198]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id C2E6F20369 for ; Fri, 23 May 2014 18:16:55 +0000 (UTC) Received: by mail-ob0-f198.google.com with SMTP id va2sf23747540obc.5 for ; Fri, 23 May 2014 11:16:55 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:from:to:cc:subject :date:message-id:in-reply-to:references:sender:precedence:list-id :x-original-sender:x-original-authentication-results:mailing-list :list-post:list-help:list-archive:list-unsubscribe:content-type :content-transfer-encoding; bh=JAqYBAgUD6lFg4jPctGj22F3+kR4yFtu9hI9jd9fzmo=; b=JFrkhoaDBZR4F0CyH1Sjt2OiZF+kUYnBHUpn8qH+AcDxaUk/rd+29R9ZNjqn5tK/OG HjJJoJaLWlDt+is6JMwCK8x2bsRDxQYtimNhoaGrv9keaFjULsALti23I3wY0mB5qt3X O/t88LR48ID5gV3hJG72RMOiR4nvtz84EVU6hPYr/bWFCqo4QT3yEY9c0BvqCFYfWlx+ u1JleMZRzWK2n3c0ctxPH5fXPh6Wjctufy60AOmaN4LOhsEWqabNGNTeqInYNbmyI1kg FfKz2TDDaMgfnJvgSt2So18tW8S3LufRUZzDM2Uw64HbaQI4pIKUxZqjY0GX1pD74fTz 6jlA== X-Gm-Message-State: ALoCoQlWR/ESmu8V1CGMCRbfed8S6ERv5r95YEwS78xtGYsBh7KxmWkdG5/8Bxwj3OFuR4reiV8H X-Received: by 10.182.213.37 with SMTP id np5mr2898975obc.36.1400869015329; Fri, 23 May 2014 11:16:55 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.89.203 with SMTP id v69ls1838715qgd.6.gmail; Fri, 23 May 2014 11:16:55 -0700 (PDT) X-Received: by 10.220.82.133 with SMTP id b5mr5624162vcl.13.1400869015216; Fri, 23 May 2014 11:16:55 -0700 (PDT) Received: from mail-vc0-f170.google.com (mail-vc0-f170.google.com [209.85.220.170]) by mx.google.com with ESMTPS id f2si2096599vds.107.2014.05.23.11.16.55 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 23 May 2014 11:16:55 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.220.170 as permitted sender) client-ip=209.85.220.170; Received: by mail-vc0-f170.google.com with SMTP id lf12so6668411vcb.15 for ; Fri, 23 May 2014 11:16:55 -0700 (PDT) X-Received: by 10.52.190.138 with SMTP id gq10mr1793832vdc.47.1400869014966; Fri, 23 May 2014 11:16:54 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.220.221.72 with SMTP id ib8csp52262vcb; Fri, 23 May 2014 11:16:54 -0700 (PDT) X-Received: by 10.68.202.167 with SMTP id kj7mr8306295pbc.160.1400869014041; Fri, 23 May 2014 11:16:54 -0700 (PDT) Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id yn4si5051552pac.38.2014.05.23.11.16.53; Fri, 23 May 2014 11:16:53 -0700 (PDT) Received-SPF: none (google.com: linux-pm-owner@vger.kernel.org does not designate permitted sender hosts) client-ip=209.132.180.67; Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751304AbaEWSQv (ORCPT + 12 others); Fri, 23 May 2014 14:16:51 -0400 Received: from service87.mimecast.com ([91.220.42.44]:35914 "EHLO service87.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751257AbaEWSQu (ORCPT ); Fri, 23 May 2014 14:16:50 -0400 Received: from cam-owa2.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Fri, 23 May 2014 19:16:48 +0100 Received: from e103034-lin.cambridge.arm.com ([10.1.255.212]) by cam-owa2.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 23 May 2014 19:16:46 +0100 From: Morten Rasmussen To: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, peterz@infradead.org, mingo@kernel.org Cc: rjw@rjwysocki.net, vincent.guittot@linaro.org, daniel.lezcano@linaro.org, preeti@linux.vnet.ibm.com, dietmar.eggemann@arm.com Subject: [RFC PATCH 01/16] sched: Documentation for scheduler energy cost model Date: Fri, 23 May 2014 19:16:28 +0100 Message-Id: <1400869003-27769-2-git-send-email-morten.rasmussen@arm.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1400869003-27769-1-git-send-email-morten.rasmussen@arm.com> References: <1400869003-27769-1-git-send-email-morten.rasmussen@arm.com> X-OriginalArrivalTime: 23 May 2014 18:16:46.0979 (UTC) FILETIME=[289F5D30:01CF76B3] X-MC-Unique: 114052319164802801 Sender: linux-pm-owner@vger.kernel.org Precedence: list List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: morten.rasmussen@arm.com X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.220.170 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , This documentation patch provide a brief overview of the experimental scheduler energy costing model and associated data structures. Signed-off-by: Morten Rasmussen --- Documentation/scheduler/sched-energy.txt | 66 ++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Documentation/scheduler/sched-energy.txt diff --git a/Documentation/scheduler/sched-energy.txt b/Documentation/scheduler/sched-energy.txt new file mode 100644 index 0000000..c6896c0 --- /dev/null +++ b/Documentation/scheduler/sched-energy.txt @@ -0,0 +1,66 @@ +Energy cost model for energy-aware scheduling (EXPERIMENTAL) + +Introduction +============= +The basic energy model uses platform energy data stored in sched_energy data +structures attached to the sched_groups in the sched_domain hierarchy. The +energy cost model offers two function that can be used to guide scheduling +decisions: + +1. energy_diff_util(cpu, util, wakeups) +2. energy_diff_task(cpu, task) + +Both return the energy cost delta caused by adding/removing utilization or a +task to/from a specific cpu. + +CONFIG_SCHED_ENERGY needs to be defined in Kconfig to enable the energy cost +model and associated data structures. + +The basic algorithm +==================== +The basic idea is to determine the energy cost at each level in sched_domain +hierarchy based on utilization: + + for_each_domain(cpu, sd) { + sg = sched_group_of(cpu) + energy_before = curr_util(sg) * busy_power(sg) + + 1-curr_util(sg) * idle_power(sg) + energy_after = new_util(sg) * busy_power(sg) + + 1-new_util(sg) * idle_power(sg) + + new_util(sg) * task_wakeups + * wakeup_energy(sg) + energy_diff += energy_before - energy_after + } + + return energy_diff + +Platform energy data +===================== +struct sched_energy has the following members: + +cap_states: + List of struct capacity_state representing the supported capacity states + (P-states). struct capacity_state has two members: cap and power, which + represents the compute capacity and the busy power of the state. The + list must ordered by capacity low->high. + +nr_cap_states: + Number of capacity states in cap_states. + +max_capacity: + The highest capacity supported by any of the capacity states in + cap_states. + +idle_power: + Idle power consumption. Will be extended to support multiple C-states + later. + +wakeup_energy: + Energy cost of wakeup/power-down cycle for the sched_group which this is + attached to. Will be extended to support different costs for different + C-states later. + +There are no unit requirements for the energy cost data. Data can be normalized +with any reference, however, the normalization must be consistent across all +energy cost data. That is, one bogo-joule/watt must be same quantity for data, +but we don't care what it is.