From: Lin Ming <ming.m.lin@intel.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: "Zhang, Rui" <rui.zhang@intel.com>,
LKML <linux-kernel@vger.kernel.org>,
"mingo@elte.hu" <mingo@elte.hu>,
"robert.richter@amd.com" <robert.richter@amd.com>,
"acme@redhat.com" <acme@redhat.com>,
"paulus@samba.org" <paulus@samba.org>,
"dzickus@redhat.com" <dzickus@redhat.com>,
"gorcunov@gmail.com" <gorcunov@gmail.com>,
"fweisbec@gmail.com" <fweisbec@gmail.com>,
"Brown, Len" <lenb@kernel.org>,
Matthew Garrett <mjg59@srcf.ucam.org>,
Matt Fleming <matt@console-pimps.org>
Subject: Re: [RFC PATCH 0/3] perf: show package power consumption in perf
Date: Thu, 19 Aug 2010 10:43:31 +0800 [thread overview]
Message-ID: <1282185811.11858.92.camel@minggr.sh.intel.com> (raw)
In-Reply-To: <1282134329.1926.3918.camel@laptop>
On Wed, 2010-08-18 at 20:25 +0800, Peter Zijlstra wrote:
> On Wed, 2010-08-18 at 15:59 +0800, Zhang Rui wrote:
> > Hi, all,
> >
> > RAPL(running average power limit) is a new feature which provides
> > mechanisms to enforce power consumption limit, on some new processors.
> >
> > Generally speaking, by using RAPL, OS can set a power budget in a
> > certain time window, and let Hardware to throttle the processor
> > P/T-state to meet this energy limitation.
> >
> > RAPL also provides a new MSR, i.e. MSR_PKG_ENERGY_STATUS, which reports
> > the total amount of energy consumed by the package.
> >
> > I'm not sure if to support RAPL or not, but anyway, it sounds like a
> > good idea to export the energy status in perf.
> >
> > So a new perf pmu and event to show the package energy consumed is
> > introduced in this patch.
> >
> > Here is what I get after applying the three patches,
> >
> > #./perf stat -e energy test
> > Performance counter stats for 'test':
> >
> > 202 Joules cost by package
> > 7.926001238 seconds time elapsed
> >
> >
> > Note that this patch set is made based on Peter's perf-pmu branch,
> > git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-perf.git
> > which provides better interfaces to register/unregister a new pmu.
> >
> > any comment are welcome. :)
>
>
> Nice,.. however:
>
> - if it is a pure read-only counter without sampling support,
> expose it as such, don't fudge in the hrtimer stuff. Simply
> fail to create a sampling event.
>
> SH has the same problem for its 'normal' PMU, the solution is
> to use event groups, Matt was looking at adding support to
> perf-record for that, if creating a sampling event fails, fall
> back to {hrtimer, $event} groups.
>
> - since its a free-running, non-configurable counter, you can indeed
> act like its a 'software' event in that you can schedule consumers
> without constraints, however I don't think the PERF_COUNT_SW_* space
> is the right way to expose this counter.
>
> Better would be to use the sysfs stuff Lin has been working on (for
Sorry that I have no good idea how to export the various tracepoints
events automatically, so this work will take time.
Lin Ming
> which I still need to catch up on the latest discussions), it would
> then be tied to the pmu instance and appear/disappear when you load/
> unload the module.
>
> However for testing purposes I see why you'd want to have _a_
> interface :-)
>
> - it would be nice if you'd write the cpu detection a bit more readable,
> also, it looks like you forgot to check x86_vendor == X86_VENDOR_INTEL.
>
> > +static int __init intel_rapl_init(void)
> > +{
> > + /*
> > + * RAPL features are only supported on processors have a CPUID
> > + * signature with DisplayFamily_DisplayModel of 06_2AH, 06_2DH
> > + */
> > + if (boot_cpu_data.x86 != 0x06 ||
> > + (boot_cpu_data.x86_model != 0x2A &&
> > + boot_cpu_data.x86_model != 0x2D))
> > + return -ENODEV;
> > +
> > + if (rapl_check_unit())
> > + return -ENODEV;
> > +
> > + perf_pmu_register(&rapl_pmu);
> > + return 0;
> > +}
>
> Maybe something like (see intel_pmu_init() for example):
>
> if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL)
> return -ENODEV;
>
> if (boot_cpu_data.x86 != 0x06)
> return -ENODEV;
>
> switch (boot_cpu_data.x86_model) {
> case 0x2A: /* sandybridge ?! 32nm */
> case 0x2D: /* othermodel 32nm */
> break;
>
> default:
> return -ENODEV;
> }
>
> Which again reminds me to ask of Intel, a comprehensive x86_model list,
> please?
>
> Alternatively, you can create a X86_FEATURE_RAPL and simply use
> boot_cpu_has(X86_FEATURE_RAPL) (much like intel_ds_init() has).
next prev parent reply other threads:[~2010-08-19 2:43 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-18 7:59 Zhang Rui
2010-08-18 12:25 ` Peter Zijlstra
2010-08-18 12:41 ` Matt Fleming
2010-08-19 3:28 ` Lin Ming
2010-08-19 7:54 ` Matt Fleming
2010-08-19 8:15 ` Lin Ming
2010-08-19 8:31 ` Zhang Rui
2010-08-19 8:32 ` Matt Fleming
2010-08-19 9:44 ` Peter Zijlstra
2010-08-21 1:18 ` Frederic Weisbecker
2010-08-21 9:30 ` Ingo Molnar
2010-08-23 9:31 ` Peter Zijlstra
2010-08-19 9:02 ` Peter Zijlstra
2010-08-20 1:44 ` Zhang Rui
2010-08-20 9:34 ` Peter Zijlstra
2010-08-20 12:31 ` Ingo Molnar
2010-08-20 21:34 ` acme
2010-08-19 2:43 ` Lin Ming [this message]
2010-08-19 8:54 ` Peter Zijlstra
2010-08-20 0:21 ` Lin Ming
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1282185811.11858.92.camel@minggr.sh.intel.com \
--to=ming.m.lin@intel.com \
--cc=acme@redhat.com \
--cc=dzickus@redhat.com \
--cc=fweisbec@gmail.com \
--cc=gorcunov@gmail.com \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matt@console-pimps.org \
--cc=mingo@elte.hu \
--cc=mjg59@srcf.ucam.org \
--cc=paulus@samba.org \
--cc=peterz@infradead.org \
--cc=robert.richter@amd.com \
--cc=rui.zhang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome