From: Guenter Roeck <linux@roeck-us.net>
To: Huang Rui <ray.huang@amd.com>
Cc: "Borislav Petkov" <bp@suse.de>, "Jean Delvare" <jdelvare@suse.de>,
"Andy Lutomirski" <luto@amacapital.net>,
"Andreas Herrmann" <herrmann.der.user@gmail.com>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Peter Zijlstra" <peterz@infradead.org>,
"Ingo Molnar" <mingo@kernel.org>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
"Len Brown" <lenb@kernel.org>,
"John Stultz" <john.stultz@linaro.org>,
"Frédéric Weisbecker" <fweisbec@gmail.com>,
lm-sensors@lm-sensors.org, linux-kernel@vger.kernel.org,
x86@kernel.org,
"Andreas Herrmann" <herrmann.der.user@googlemail.com>,
"Aravind Gopalakrishnan" <Aravind.Gopalakrishnan@amd.com>,
"Borislav Petkov" <bp@alien8.de>,
"Fengguang Wu" <fengguang.wu@intel.com>,
"Aaron Lu" <aaron.lu@intel.com>, "Tony Li" <tony.li@amd.com>
Subject: Re: [lm-sensors] [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algo
Date: Mon, 31 Aug 2015 04:30:28 +0000 [thread overview]
Message-ID: <55E3D864.6090500@roeck-us.net> (raw)
In-Reply-To: <20150831041607.GA15543@hr-slim.amd.com>
T24gMDgvMzAvMjAxNSAwOToxNiBQTSwgSHVhbmcgUnVpIHdyb3RlOgo+IE9uIEZyaSwgQXVnIDI4
LCAyMDE1IGF0IDA3OjA1OjEzQU0gLTA3MDAsIEd1ZW50ZXIgUm9lY2sgd3JvdGU6Cj4+IE9uIDA4
LzI4LzIwMTUgMDM6NDUgQU0sIEh1YW5nIFJ1aSB3cm90ZToKPj4+IE9uIFRodSwgQXVnIDI3LCAy
MDE1IGF0IDEwOjMwOjQzQU0gLTA3MDAsIEd1ZW50ZXIgUm9lY2sgd3JvdGU6Cj4+Pj4gT24gVGh1
LCBBdWcgMjcsIDIwMTUgYXQgMDQ6MDc6NDNQTSArMDgwMCwgSHVhbmcgUnVpIHdyb3RlOgo+Pj4+
PiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYW4gYWxnb3JpdGhtIHRoYXQgY29tcHV0ZXMgdGhlIGF2
ZXJhZ2UgcG93ZXIgYnkKPj4+Pj4gcmVhZGluZyBhIGRlbHRhIHZhbHVlIG9mIOKAnGNvcmUgcG93
ZXIgYWNjdW11bGF0b3LigJ0gcmVnaXN0ZXIgZHVyaW5nCj4+Pj4+IG1lYXN1cmVtZW50IGludGVy
dmFsLCBhbmQgdGhlbiBkaXZpZGluZyBkZWx0YSB2YWx1ZSBieSB0aGUgbGVuZ3RoIG9mCj4+Pj4+
IHRoZSB0aW1lIGludGVydmFsLgo+Pj4+Pgo+Pj4+PiBVc2VyIGlzIGFibGUgdG8gdXNlIHBvd2Vy
MV9hY2MgZW50cnkgdG8gbWVhc3VyZSB0aGUgcHJvY2Vzc29yIHBvd2VyCj4+Pj4+IGNvbnN1bXB0
aW9uIGFuZCBwb3dlcjFfYWNjIGp1c3QgbmVlZHMgdG8gYmUgcmVhZCB0d2ljZSB3aXRoIGFuIG5l
ZWRlZAo+Pj4+PiBpbnRlcnZhbCBpbi1iZXR3ZWVuLgo+Pj4+Pgo+Pj4+PiBBIHNpbXBsZSBleGFt
cGxlOgo+Pj4+Pgo+Pj4+PiAkIGNhdCAvc3lzL2J1cy9wY2kvZGV2aWNlcy8wMDAwXDowMFw6MTgu
NC9od21vbi9od21vbjAvcG93ZXIxX2FjYwo+Pj4+PiAkIHNsZWVwIDEwMDAwcwo+Pj4+PiAkIGNh
dCAvc3lzL2J1cy9wY2kvZGV2aWNlcy8wMDAwXDowMFw6MTguNC9od21vbi9od21vbjAvcG93ZXIx
X2FjYwo+Pj4+Pgo+Pj4+PiBUaGUgcmVzdWx0IGlzIGN1cnJlbnQgYXZlcmFnZSBwcm9jZXNzb3Ig
cG93ZXIgY29uc3VtcHRpb24gaW4gMTAwMDAKPj4+Pj4gc2Vjb25kcy4gVGhlIHVuaXQgb2YgdGhl
IHJlc3VsdCBpcyB1V2F0dC4KPj4+Pj4KPj4+Pj4gU2lnbmVkLW9mZi1ieTogSHVhbmcgUnVpIDxy
YXkuaHVhbmdAYW1kLmNvbT4KPj4+Pj4gLS0tCj4+Pj4+ICAgZHJpdmVycy9od21vbi9mYW0xNWhf
cG93ZXIuYyB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
Cj4+Pj4+ICAgMSBmaWxlIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKykKPj4+Pj4KPj4+Pj4gZGlm
ZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vZmFtMTVoX3Bvd2VyLmMgYi9kcml2ZXJzL2h3bW9uL2Zh
bTE1aF9wb3dlci5jCj4+Pj4+IGluZGV4IGQ1MjllNGIuLjNiYWI3OTcgMTAwNjQ0Cj4+Pj4+IC0t
LSBhL2RyaXZlcnMvaHdtb24vZmFtMTVoX3Bvd2VyLmMKPj4+Pj4gKysrIGIvZHJpdmVycy9od21v
bi9mYW0xNWhfcG93ZXIuYwo+Pj4+PiBAQCAtNjAsNiArNjAsNyBAQCBzdHJ1Y3QgZmFtMTVoX3Bv
d2VyX2RhdGEgewo+Pj4+PiAgIAl1NjQgY3VfYWNjX3Bvd2VyW01BWF9DVVNdOwo+Pj4+PiAgIAkv
KiBwZXJmb3JtYW5jZSB0aW1lc3RhbXAgY291bnRlciAqLwo+Pj4+PiAgIAl1NjQgY3B1X3N3X3B3
cl9wdHNjW01BWF9DVVNdOwo+Pj4+PiArCXN0cnVjdCBtdXRleCBhY2NfcHdyX211dGV4Owo+Pj4+
PiAgIH07Cj4+Pj4+Cj4+Pj4+ICAgc3RhdGljIHNzaXplX3Qgc2hvd19wb3dlcihzdHJ1Y3QgZGV2
aWNlICpkZXYsCj4+Pj4+IEBAIC0xMjEsMTcgKzEyMiw3NCBAQCBzdGF0aWMgREVWSUNFX0FUVFIo
cG93ZXIxX2NyaXQsIFNfSVJVR08sIHNob3dfcG93ZXJfY3JpdCwgTlVMTCk7Cj4+Pj4+ICAgc3Rh
dGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZmFtMTVoX3Bvd2VyX2dyb3VwOwo+Pj4+PiAgIF9f
QVRUUklCVVRFX0dST1VQUyhmYW0xNWhfcG93ZXIpOwo+Pj4+Pgo+Pj4+PiArc3RhdGljIHNzaXpl
X3Qgc2hvd19wb3dlcl9hY2Moc3RydWN0IGRldmljZSAqZGV2LAo+Pj4+PiArCQkJICAgICAgc3Ry
dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPj4+Pj4gK3sKPj4+Pj4gKwlp
bnQgY3B1LCBjdSwgY3VfbnVtLCBjb3Jlc19wZXJfY3U7Cj4+Pj4+ICsJdTY0IGN1cnJfY3VfYWNj
X3Bvd2VyW01BWF9DVVNdLAo+Pj4+PiArCSAgICBjdXJyX3B0c2NbTUFYX0NVU10sIGpkZWx0YVtN
QVhfQ1VTXTsKPj4+Pj4gKwl1NjQgdGRlbHRhLCBhdmdfYWNjOwo+Pj4+PiArCXN0cnVjdCBmYW0x
NWhfcG93ZXJfZGF0YSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+Pj4+PiArCj4+Pj4+
ICsJY29yZXNfcGVyX2N1ID0gYW1kX2dldF9jb3Jlc19wZXJfY3UoKTsKPj4+Pj4gKwljdV9udW0g
PSBib290X2NwdV9kYXRhLng4Nl9tYXhfY29yZXMgLyBjb3Jlc19wZXJfY3U7Cj4+Pj4+ICsKPj4+
Pj4gKwlmb3IgKGNwdSA9IDAsIGF2Z19hY2MgPSAwOyBjcHUgPCBjdV9udW0gKiBjb3Jlc19wZXJf
Y3U7IGNwdSArPSBjb3Jlc19wZXJfY3UpIHsKPj4+Pj4gKwkJY3UgPSBjcHUgLyBjb3Jlc19wZXJf
Y3U7Cj4+Pj4+ICsJCWlmIChyZG1zcmxfc2FmZV9vbl9jcHUoY3B1LCBNU1JfRjE1SF9QVFNDLCAm
Y3Vycl9wdHNjW2N1XSkpIHsKPj4+Pj4gKwkJCXByX2VycigiRmFpbGVkIHRvIHJlYWQgUFRTQyBj
b3VudGVyIE1TUiBvbiBjb3JlJWRcbiIsCj4+Pj4+ICsJCQkgICAgICAgY3B1KTsKPj4+Pj4gKwkJ
CXJldHVybiAwOwo+Pj4+PiArCQl9Cj4+Pj4+ICsKPj4+Pj4gKwkJaWYgKHJkbXNybF9zYWZlX29u
X2NwdShjcHUsIE1TUl9GMTVIX0NVX1BXUl9BQ0NVTVVMQVRPUiwKPj4+Pj4gKwkJCQkgICAgICAg
JmN1cnJfY3VfYWNjX3Bvd2VyW2N1XSkpIHsKPj4+Pj4gKwkJCXByX2VycigiRmFpbGVkIHRvIHJl
YWQgY29tcHV0ZSB1bml0IHBvd2VyIGFjY3VtdWxhdG9yIE1TUiBvbiBjb3JlJWRcbiIsCj4+Pj4+
ICsJCQkgICAgICAgY3B1KTsKPj4+Pj4gKwkJCXJldHVybiAwOwo+Pj4+PiArCQl9Cj4+Pj4+ICsK
Pj4+Pj4gKwkJaWYgKGN1cnJfY3VfYWNjX3Bvd2VyW2N1XSA8IGRhdGEtPmN1X2FjY19wb3dlcltj
dV0pIHsKPj4+Pj4gKwkJCWpkZWx0YVtjdV0gPSBkYXRhLT5tYXhfY3VfYWNjX3Bvd2VyICsgY3Vy
cl9jdV9hY2NfcG93ZXJbY3VdOwo+Pj4+PiArCQkJamRlbHRhW2N1XSAtPSBkYXRhLT5jdV9hY2Nf
cG93ZXJbY3VdOwo+Pj4+PiArCQl9IGVsc2Ugewo+Pj4+PiArCQkJamRlbHRhW2N1XSA9IGN1cnJf
Y3VfYWNjX3Bvd2VyW2N1XSAtIGRhdGEtPmN1X2FjY19wb3dlcltjdV07Cj4+Pj4+ICsJCX0KPj4+
Pj4gKwkJdGRlbHRhID0gY3Vycl9wdHNjW2N1XSAtIGRhdGEtPmNwdV9zd19wd3JfcHRzY1tjdV07
Cj4+Pj4+ICsJCWpkZWx0YVtjdV0gKj0gZGF0YS0+Y3B1X3B3cl9zYW1wbGVfcmF0aW8gKiAxMDAw
Owo+Pj4+PiArCQlkb19kaXYoamRlbHRhW2N1XSwgdGRlbHRhKTsKPj4+Pj4gKwo+Pj4+PiArCQlt
dXRleF9sb2NrKCZkYXRhLT5hY2NfcHdyX211dGV4KTsKPj4+Pj4gKwkJZGF0YS0+Y3VfYWNjX3Bv
d2VyW2N1XSA9IGN1cnJfY3VfYWNjX3Bvd2VyW2N1XTsKPj4+Pj4gKwkJZGF0YS0+Y3B1X3N3X3B3
cl9wdHNjW2N1XSA9IGN1cnJfcHRzY1tjdV07Cj4+Pj4+ICsJCW11dGV4X3VubG9jaygmZGF0YS0+
YWNjX3B3cl9tdXRleCk7Cj4+Pj4+ICsKPj4+Pj4gKwkJLyogdGhlIHVuaXQgaXMgbWljcm9XYXR0
ICovCj4+Pj4+ICsJCWF2Z19hY2MgKz0gamRlbHRhW2N1XTsKPj4+Pj4gKwl9Cj4+Pj4+ICsKPj4+
Pj4gKwlyZXR1cm4gc3ByaW50ZihidWYsICIldVxuIiwgKHVuc2lnbmVkIGludCkgYXZnX2FjYyk7
Cj4+Pj4+ICt9Cj4+Pj4+ICtzdGF0aWMgREVWSUNFX0FUVFIocG93ZXIxX2FjYywgU19JUlVHTywg
c2hvd19wb3dlcl9hY2MsIE5VTEwpOwo+Pj4+Cj4+Pj4gSSBhbSBub3QgcmVhbGx5IGEgZnJpZW5k
IG9mIGludHJvZHVjaW5nIGEgbm9uLXN0YW5kYXJkIGF0dHJpYnV0ZS4KPj4+PiBEb2VzIHRoZSBl
bmVyZ3kgYXR0cmlidXRlIG5vdCB3b3JrIGhlcmUgPwo+Pj4+Cj4+Pgo+Pj4gWW91J3JlIHJpZ2h0
LiBOb24tc3RhbmRhcmQgYXR0cmlidXRlIG1pZ2h0IG5vdCBiZSBnb29kLiBDb3VsZCB5b3UKPj4+
IHBsZWFzZSBnaXZlIG1lIHNvbWUgaGludHMgaWYgSSB1c2UgImVuZXJneSIgaW5zdGVhZD8KPj4+
Cj4+IDEgSm91bGUgPSAxIFdhdHQtc2Vjb25kLgo+Pgo+PiBTb21ldGhpbmcgZWxzZSwgdGhvdWdo
IC0gZGlkIHlvdSBtYWtlIHN1cmUgdGhhdCB5b3VyIGNvZGUgZG9lc24ndCBvdmVyZmxvdyA/Cj4+
IEV2ZW4gdGhvdWdoIHlvdSBjYWxjdWxhdGUgdGhlIGF2ZXJhZ2UgaW4gYW4gdTY0LCB5b3UgZGlz
cGxheSBpdCBhcyB1bnNpZ25lZC4KPj4KPgo+IFRoYW5rcyB0byB5b3VyIHJlbWluZGVyLiBJdCBz
aG91bGQgbm90IGJlIG92ZXJmbG93LiBUaGUgbWF4aW11bSBwb3dlcgo+IGNvbnN1bXB0aW9uIG9m
IHByb2Nlc3NvciAoQU1EIENaIGFuZCBmdXR1cmUgMTVoKSBpcyBhYm91dCAxNSBXYXR0cyA9Cj4g
MTUsMDAwLDAwMCB1V2F0dHMgPSAweEU0RTFDMCB1V2F0dHMsIHRoZSBzaXplIGlzIDI0IDwgMzIg
PCA2NCBiaXRzLgo+Cj4gQWN0dWFsbHksIHRoZSB1bml0IG9mIGpkZWx0YSBpcyBub3QgSm91bGUu
IEJlY2F1c2UgdGhlIHRkZWx0YSBpcyB0aGUKPiBsb29wcyAoY3ljbGVzKSB0aGF0IFBUU0MgY291
bnRlciAodGhlIGZyZXFlbmN5IGlzIGFib3V0IDEwMCBNSHopCj4gY291bnRzIG5vdCBzZWNvbmRz
Lgo+Cj4gU28gYXZnX2FjYyBpcyB0aGUgYXZlcmFnZSBwb3dlciBjb25zdW1wdGlvbiBub3QgdGhl
IGFjY3VtdWxhdGVkIGVuZXJneS4KPgoKV291bGQgcG93ZXIxX2F2ZXJhZ2UgdGhlbiBiZSBiZXR0
ZXIgc3VpdGFibGUgZm9yIHRoZSBhdHRyaWJ1dGUgPwpUaGVyZSBpcyBhbHNvIHBvd2VyMV9hdmVy
YWdlX2ludGVydmFsIHdoaWNoIGNvdWxkIGJlIHVzZWQgdG8gbWFrZQp0aGUgaW50ZXJ2YWwgY29u
ZmlndXJhYmxlLgoKVGhhbmtzLApHdWVudGVyCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29yc0Bs
bS1zZW5zb3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0aW5m
by9sbS1zZW5zb3Jz
WARNING: multiple messages have this Message-ID (diff)
From: Guenter Roeck <linux@roeck-us.net>
To: Huang Rui <ray.huang@amd.com>
Cc: "Borislav Petkov" <bp@suse.de>, "Jean Delvare" <jdelvare@suse.de>,
"Andy Lutomirski" <luto@amacapital.net>,
"Andreas Herrmann" <herrmann.der.user@gmail.com>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Peter Zijlstra" <peterz@infradead.org>,
"Ingo Molnar" <mingo@kernel.org>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
"Len Brown" <lenb@kernel.org>,
"John Stultz" <john.stultz@linaro.org>,
"Frédéric Weisbecker" <fweisbec@gmail.com>,
lm-sensors@lm-sensors.org, linux-kernel@vger.kernel.org,
x86@kernel.org,
"Andreas Herrmann" <herrmann.der.user@googlemail.com>,
"Aravind Gopalakrishnan" <Aravind.Gopalakrishnan@amd.com>,
"Borislav Petkov" <bp@alien8.de>,
"Fengguang Wu" <fengguang.wu@intel.com>,
"Aaron Lu" <aaron.lu@intel.com>, "Tony Li" <tony.li@amd.com>
Subject: Re: [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algorithm
Date: Sun, 30 Aug 2015 21:30:28 -0700 [thread overview]
Message-ID: <55E3D864.6090500@roeck-us.net> (raw)
In-Reply-To: <20150831041607.GA15543@hr-slim.amd.com>
On 08/30/2015 09:16 PM, Huang Rui wrote:
> On Fri, Aug 28, 2015 at 07:05:13AM -0700, Guenter Roeck wrote:
>> On 08/28/2015 03:45 AM, Huang Rui wrote:
>>> On Thu, Aug 27, 2015 at 10:30:43AM -0700, Guenter Roeck wrote:
>>>> On Thu, Aug 27, 2015 at 04:07:43PM +0800, Huang Rui wrote:
>>>>> This patch introduces an algorithm that computes the average power by
>>>>> reading a delta value of “core power accumulator” register during
>>>>> measurement interval, and then dividing delta value by the length of
>>>>> the time interval.
>>>>>
>>>>> User is able to use power1_acc entry to measure the processor power
>>>>> consumption and power1_acc just needs to be read twice with an needed
>>>>> interval in-between.
>>>>>
>>>>> A simple example:
>>>>>
>>>>> $ cat /sys/bus/pci/devices/0000\:00\:18.4/hwmon/hwmon0/power1_acc
>>>>> $ sleep 10000s
>>>>> $ cat /sys/bus/pci/devices/0000\:00\:18.4/hwmon/hwmon0/power1_acc
>>>>>
>>>>> The result is current average processor power consumption in 10000
>>>>> seconds. The unit of the result is uWatt.
>>>>>
>>>>> Signed-off-by: Huang Rui <ray.huang@amd.com>
>>>>> ---
>>>>> drivers/hwmon/fam15h_power.c | 62 ++++++++++++++++++++++++++++++++++++++++++++
>>>>> 1 file changed, 62 insertions(+)
>>>>>
>>>>> diff --git a/drivers/hwmon/fam15h_power.c b/drivers/hwmon/fam15h_power.c
>>>>> index d529e4b..3bab797 100644
>>>>> --- a/drivers/hwmon/fam15h_power.c
>>>>> +++ b/drivers/hwmon/fam15h_power.c
>>>>> @@ -60,6 +60,7 @@ struct fam15h_power_data {
>>>>> u64 cu_acc_power[MAX_CUS];
>>>>> /* performance timestamp counter */
>>>>> u64 cpu_sw_pwr_ptsc[MAX_CUS];
>>>>> + struct mutex acc_pwr_mutex;
>>>>> };
>>>>>
>>>>> static ssize_t show_power(struct device *dev,
>>>>> @@ -121,17 +122,74 @@ static DEVICE_ATTR(power1_crit, S_IRUGO, show_power_crit, NULL);
>>>>> static struct attribute_group fam15h_power_group;
>>>>> __ATTRIBUTE_GROUPS(fam15h_power);
>>>>>
>>>>> +static ssize_t show_power_acc(struct device *dev,
>>>>> + struct device_attribute *attr, char *buf)
>>>>> +{
>>>>> + int cpu, cu, cu_num, cores_per_cu;
>>>>> + u64 curr_cu_acc_power[MAX_CUS],
>>>>> + curr_ptsc[MAX_CUS], jdelta[MAX_CUS];
>>>>> + u64 tdelta, avg_acc;
>>>>> + struct fam15h_power_data *data = dev_get_drvdata(dev);
>>>>> +
>>>>> + cores_per_cu = amd_get_cores_per_cu();
>>>>> + cu_num = boot_cpu_data.x86_max_cores / cores_per_cu;
>>>>> +
>>>>> + for (cpu = 0, avg_acc = 0; cpu < cu_num * cores_per_cu; cpu += cores_per_cu) {
>>>>> + cu = cpu / cores_per_cu;
>>>>> + if (rdmsrl_safe_on_cpu(cpu, MSR_F15H_PTSC, &curr_ptsc[cu])) {
>>>>> + pr_err("Failed to read PTSC counter MSR on core%d\n",
>>>>> + cpu);
>>>>> + return 0;
>>>>> + }
>>>>> +
>>>>> + if (rdmsrl_safe_on_cpu(cpu, MSR_F15H_CU_PWR_ACCUMULATOR,
>>>>> + &curr_cu_acc_power[cu])) {
>>>>> + pr_err("Failed to read compute unit power accumulator MSR on core%d\n",
>>>>> + cpu);
>>>>> + return 0;
>>>>> + }
>>>>> +
>>>>> + if (curr_cu_acc_power[cu] < data->cu_acc_power[cu]) {
>>>>> + jdelta[cu] = data->max_cu_acc_power + curr_cu_acc_power[cu];
>>>>> + jdelta[cu] -= data->cu_acc_power[cu];
>>>>> + } else {
>>>>> + jdelta[cu] = curr_cu_acc_power[cu] - data->cu_acc_power[cu];
>>>>> + }
>>>>> + tdelta = curr_ptsc[cu] - data->cpu_sw_pwr_ptsc[cu];
>>>>> + jdelta[cu] *= data->cpu_pwr_sample_ratio * 1000;
>>>>> + do_div(jdelta[cu], tdelta);
>>>>> +
>>>>> + mutex_lock(&data->acc_pwr_mutex);
>>>>> + data->cu_acc_power[cu] = curr_cu_acc_power[cu];
>>>>> + data->cpu_sw_pwr_ptsc[cu] = curr_ptsc[cu];
>>>>> + mutex_unlock(&data->acc_pwr_mutex);
>>>>> +
>>>>> + /* the unit is microWatt */
>>>>> + avg_acc += jdelta[cu];
>>>>> + }
>>>>> +
>>>>> + return sprintf(buf, "%u\n", (unsigned int) avg_acc);
>>>>> +}
>>>>> +static DEVICE_ATTR(power1_acc, S_IRUGO, show_power_acc, NULL);
>>>>
>>>> I am not really a friend of introducing a non-standard attribute.
>>>> Does the energy attribute not work here ?
>>>>
>>>
>>> You're right. Non-standard attribute might not be good. Could you
>>> please give me some hints if I use "energy" instead?
>>>
>> 1 Joule = 1 Watt-second.
>>
>> Something else, though - did you make sure that your code doesn't overflow ?
>> Even though you calculate the average in an u64, you display it as unsigned.
>>
>
> Thanks to your reminder. It should not be overflow. The maximum power
> consumption of processor (AMD CZ and future 15h) is about 15 Watts =
> 15,000,000 uWatts = 0xE4E1C0 uWatts, the size is 24 < 32 < 64 bits.
>
> Actually, the unit of jdelta is not Joule. Because the tdelta is the
> loops (cycles) that PTSC counter (the freqency is about 100 MHz)
> counts not seconds.
>
> So avg_acc is the average power consumption not the accumulated energy.
>
Would power1_average then be better suitable for the attribute ?
There is also power1_average_interval which could be used to make
the interval configurable.
Thanks,
Guenter
next prev parent reply other threads:[~2015-08-31 4:30 UTC|newest]
Thread overview: 118+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-27 8:07 [lm-sensors] [PATCH 00/15] hwmon, fam15h_power: introduce an accumulated power reporting algorithm Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-27 8:07 ` [lm-sensors] [PATCH 01/15] hwmon, fam15h_power: add support for AMD Carrizo Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-27 14:35 ` [lm-sensors] " Guenter Roeck
2015-08-27 14:35 ` Guenter Roeck
2015-08-27 8:07 ` [lm-sensors] [PATCH 02/15] hwmon, fam15h_power: rename fam15h_power_is_internal_node0 function Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-27 14:35 ` [lm-sensors] " Guenter Roeck
2015-08-27 14:35 ` Guenter Roeck
2015-08-27 8:07 ` [lm-sensors] [PATCH 03/15] hwmon, fam15h_power: refactor attributes for dynamically added Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-27 14:46 ` [lm-sensors] " Guenter Roeck
2015-08-27 14:46 ` Guenter Roeck
2015-08-28 10:05 ` [lm-sensors] " Huang Rui
2015-08-28 10:05 ` Huang Rui
2015-08-27 8:07 ` [lm-sensors] [PATCH 04/15] hwmon, fam15h_power: update running_avg_capture bit field to 28 Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-27 14:48 ` [lm-sensors] " Guenter Roeck
2015-08-27 14:48 ` Guenter Roeck
2015-08-27 8:07 ` [lm-sensors] [PATCH 05/15] hwmon, fam15h_power: enable power1_input on AMD Carrizo Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-27 14:50 ` [lm-sensors] " Guenter Roeck
2015-08-27 14:50 ` Guenter Roeck
2015-08-27 8:07 ` [lm-sensors] [PATCH 06/15] hwmon, fam15h_power: add documentation for new processors support Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-27 14:51 ` [lm-sensors] " Guenter Roeck
2015-08-27 14:51 ` Guenter Roeck
2015-08-27 8:07 ` [lm-sensors] [PATCH 07/15] hwmon, fam15h_power: add ratio of Tsample to the PTSC period Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-27 14:54 ` [lm-sensors] " Guenter Roeck
2015-08-27 14:54 ` Guenter Roeck
2015-08-27 8:07 ` [lm-sensors] [PATCH 08/15] hwmon, fam15h_power: add max compute unit accumulated power Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-27 14:56 ` [lm-sensors] " Guenter Roeck
2015-08-27 14:56 ` Guenter Roeck
2015-08-27 8:07 ` [lm-sensors] [PATCH 09/15] x86, amd: add accessor for number of cores per compute unit Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-27 17:27 ` [lm-sensors] " Guenter Roeck
2015-08-27 17:27 ` Guenter Roeck
2015-08-28 10:28 ` [lm-sensors] " Huang Rui
2015-08-28 10:28 ` Huang Rui
2015-08-28 6:48 ` [lm-sensors] " Borislav Petkov
2015-08-28 6:48 ` Borislav Petkov
2015-08-28 8:00 ` [lm-sensors] " Guenter Roeck
2015-08-28 8:00 ` Guenter Roeck
2015-08-28 8:04 ` [lm-sensors] " Ingo Molnar
2015-08-28 8:04 ` Ingo Molnar
2015-08-28 8:56 ` [lm-sensors] " Borislav Petkov
2015-08-28 8:56 ` Borislav Petkov
2015-08-28 10:18 ` [lm-sensors] " Huang Rui
2015-08-28 10:18 ` Huang Rui
2015-08-29 9:19 ` [lm-sensors] " Ingo Molnar
2015-08-29 9:19 ` Ingo Molnar
2015-08-30 15:53 ` [lm-sensors] " Borislav Petkov
2015-08-30 15:53 ` Borislav Petkov
2015-08-31 8:38 ` [lm-sensors] " Peter Zijlstra
2015-08-31 8:38 ` Peter Zijlstra
2015-08-31 13:26 ` [lm-sensors] " Guenter Roeck
2015-08-31 13:26 ` Guenter Roeck
2015-08-31 13:38 ` [lm-sensors] " Peter Zijlstra
2015-08-31 13:38 ` Peter Zijlstra
2015-08-31 13:53 ` [lm-sensors] " Guenter Roeck
2015-08-31 13:53 ` Guenter Roeck
2015-08-31 14:57 ` [lm-sensors] " Peter Zijlstra
2015-08-31 14:57 ` Peter Zijlstra
2015-08-31 15:11 ` [lm-sensors] " Guenter Roeck
2015-08-31 15:11 ` Guenter Roeck
2015-08-31 16:06 ` [lm-sensors] " Borislav Petkov
2015-08-31 16:06 ` Borislav Petkov
2015-08-31 16:19 ` [lm-sensors] " Guenter Roeck
2015-08-31 16:19 ` Guenter Roeck
2015-08-31 20:44 ` [lm-sensors] " Peter Zijlstra
2015-08-31 20:44 ` Peter Zijlstra
2015-08-31 21:24 ` [lm-sensors] " Guenter Roeck
2015-08-31 21:24 ` Guenter Roeck
2015-09-01 15:56 ` [lm-sensors] " Borislav Petkov
2015-09-01 15:56 ` Borislav Petkov
2015-09-01 16:06 ` [lm-sensors] " Guenter Roeck
2015-09-01 16:06 ` Guenter Roeck
2015-08-27 8:07 ` [lm-sensors] [PATCH 10/15] hwmon, fam15h_power: add compute unit accumulated power Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-28 8:03 ` [lm-sensors] " Ingo Molnar
2015-08-28 8:03 ` Ingo Molnar
2015-08-28 10:42 ` [lm-sensors] " Huang Rui
2015-08-28 10:42 ` Huang Rui
2015-08-27 8:07 ` [lm-sensors] [PATCH 11/15] hwmon, fam15h_power: add ptsc counter value for " Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-27 8:07 ` [lm-sensors] [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algorith Huang Rui
2015-08-27 8:07 ` [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algorithm Huang Rui
2015-08-27 17:30 ` [lm-sensors] [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algo Guenter Roeck
2015-08-27 17:30 ` [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algorithm Guenter Roeck
2015-08-28 10:45 ` [lm-sensors] [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algo Huang Rui
2015-08-28 10:45 ` [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algorithm Huang Rui
2015-08-28 14:05 ` [lm-sensors] [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algo Guenter Roeck
2015-08-28 14:05 ` [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algorithm Guenter Roeck
2015-08-31 4:16 ` [lm-sensors] [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algo Huang Rui
2015-08-31 4:16 ` [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algorithm Huang Rui
2015-08-31 4:30 ` Guenter Roeck [this message]
2015-08-31 4:30 ` Guenter Roeck
2015-08-31 13:11 ` [lm-sensors] [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algo Huang Rui
2015-08-31 13:11 ` [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algorithm Huang Rui
2015-08-31 13:25 ` [lm-sensors] [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algo Peter Zijlstra
2015-08-31 13:25 ` [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algorithm Peter Zijlstra
2015-08-31 14:59 ` [lm-sensors] [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algo Peter Zijlstra
2015-08-31 14:59 ` [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algorithm Peter Zijlstra
2015-08-27 8:07 ` [lm-sensors] [PATCH 13/15] hwmon, fam15h_power: add documentation for previous TDP reporting Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-27 8:07 ` [lm-sensors] [PATCH 14/15] hwmon, fam15h_power: add documentation for accumulated power algorithm Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-27 8:07 ` [lm-sensors] [PATCH 15/15] MAINTAINERS: change the maintainer of fam15h_power driver Huang Rui
2015-08-27 8:07 ` Huang Rui
2015-08-29 16:33 ` [lm-sensors] [15/15] " Guenter Roeck
2015-08-29 16:33 ` Guenter Roeck
2015-08-31 1:11 ` [lm-sensors] " Huang Rui
2015-08-31 1:11 ` Huang Rui
2015-08-31 15:19 ` [lm-sensors] " Andreas Herrmann
2015-08-31 15:19 ` Andreas Herrmann
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=55E3D864.6090500@roeck-us.net \
--to=linux@roeck-us.net \
--cc=Aravind.Gopalakrishnan@amd.com \
--cc=aaron.lu@intel.com \
--cc=bp@alien8.de \
--cc=bp@suse.de \
--cc=fengguang.wu@intel.com \
--cc=fweisbec@gmail.com \
--cc=herrmann.der.user@gmail.com \
--cc=herrmann.der.user@googlemail.com \
--cc=jdelvare@suse.de \
--cc=john.stultz@linaro.org \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lm-sensors@lm-sensors.org \
--cc=luto@amacapital.net \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=ray.huang@amd.com \
--cc=rjw@rjwysocki.net \
--cc=tglx@linutronix.de \
--cc=tony.li@amd.com \
--cc=x86@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.