Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1226062 > unrolled thread

[PATCH] Added multiplier for APERF and MPERF counters

Started byLukasz Anaczkowski <lukasz.anaczkowski@intel.com>
First post2015-09-16 15:00 +0200
Last post2015-09-18 23:50 +0200
Articles 4 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] Added multiplier for APERF and MPERF counters Lukasz Anaczkowski <lukasz.anaczkowski@intel.com> - 2015-09-16 15:00 +0200
    Re: [PATCH] Added multiplier for APERF and MPERF counters "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2015-09-17 18:40 +0200
      RE: [PATCH] Added multiplier for APERF and MPERF counters "Anaczkowski, Lukasz" <lukasz.anaczkowski@intel.com> - 2015-09-18 09:10 +0200
        Re: [PATCH] Added multiplier for APERF and MPERF counters "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2015-09-18 23:50 +0200

#1226062 — [PATCH] Added multiplier for APERF and MPERF counters

FromLukasz Anaczkowski <lukasz.anaczkowski@intel.com>
Date2015-09-16 15:00 +0200
Subject[PATCH] Added multiplier for APERF and MPERF counters
Message-ID<q9ktA-4U2-23@gated-at.bofh.it>
From: Hubert Chrzaniuk <hubert.chrzaniuk@intel.com>

Intel(R) Xeon Phi x200 (KNL) increments APERF/MPERF every
1024 clocks, which is different than other Intel architectures
(incremented every single clock).
It results in understated values for %Busy and Avg_MHz values,
thus multiplier for APERF/MPERF counters.

Signed-off-by: Hubert Chrzaniuk <hubert.chrzaniuk@intel.com>
Signed-off-by: Lukasz Anaczkowski <lukasz.anaczkowski@intel.com>
---
 tools/power/x86/turbostat/turbostat.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c
index 9655cb4..1dda607 100644
--- a/tools/power/x86/turbostat/turbostat.c
+++ b/tools/power/x86/turbostat/turbostat.c
@@ -71,6 +71,7 @@ unsigned int extra_msr_offset32;
 unsigned int extra_msr_offset64;
 unsigned int extra_delta_offset32;
 unsigned int extra_delta_offset64;
+unsigned int aperf_mperf_multiplier = 1;
 int do_smi;
 double bclk;
 unsigned int show_pkg;
@@ -984,6 +985,8 @@ int get_counters(struct thread_data *t, struct core_data *c, struct pkg_data *p)
 			return -3;
 		if (get_msr(cpu, MSR_IA32_MPERF, &t->mperf))
 			return -4;
+		t->aperf = t->aperf * aperf_mperf_multiplier;
+		t->mperf = t->mperf * aperf_mperf_multiplier;
 	}
 
 	if (do_smi) {
@@ -2543,6 +2546,13 @@ int is_knl(unsigned int family, unsigned int model)
 	return 0;
 }
 
+unsigned int get_aperf_mperf_multiplier(unsigned int family, unsigned int model)
+{
+	if (is_knl(family, model))
+		return 1024;
+	return 1;
+}
+
 #define SLM_BCLK_FREQS 5
 double slm_freq_table[SLM_BCLK_FREQS] = { 83.3, 100.0, 133.3, 116.7, 80.0};
 
@@ -2744,6 +2754,9 @@ void process_cpuid()
 		}
 	}
 
+	if (has_aperf)
+		aperf_mperf_multiplier = get_aperf_mperf_multiplier(family, model);
+
 	do_nhm_platform_info = do_nhm_cstates = do_smi = probe_nhm_msrs(family, model);
 	do_snb_cstates = has_snb_msrs(family, model);
 	do_pc2 = do_snb_cstates && (pkg_cstate_limit >= PCL__2);
-- 
1.8.3.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1227195

From"Rafael J. Wysocki" <rjw@rjwysocki.net>
Date2015-09-17 18:40 +0200
Message-ID<q9Ko1-Kl-3@gated-at.bofh.it>
In reply to#1226062
On Wednesday, September 16, 2015 02:52:18 PM Lukasz Anaczkowski wrote:
> From: Hubert Chrzaniuk <hubert.chrzaniuk@intel.com>
> 
> Intel(R) Xeon Phi x200 (KNL) increments APERF/MPERF every
> 1024 clocks, which is different than other Intel architectures
> (incremented every single clock).
> It results in understated values for %Busy and Avg_MHz values,
> thus multiplier for APERF/MPERF counters.
> 
> Signed-off-by: Hubert Chrzaniuk <hubert.chrzaniuk@intel.com>
> Signed-off-by: Lukasz Anaczkowski <lukasz.anaczkowski@intel.com>

Please *always* send PM-related patches to linux-pm@vger.kernel.org (CCed now).

> ---
>  tools/power/x86/turbostat/turbostat.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c
> index 9655cb4..1dda607 100644
> --- a/tools/power/x86/turbostat/turbostat.c
> +++ b/tools/power/x86/turbostat/turbostat.c
> @@ -71,6 +71,7 @@ unsigned int extra_msr_offset32;
>  unsigned int extra_msr_offset64;
>  unsigned int extra_delta_offset32;
>  unsigned int extra_delta_offset64;
> +unsigned int aperf_mperf_multiplier = 1;
>  int do_smi;
>  double bclk;
>  unsigned int show_pkg;
> @@ -984,6 +985,8 @@ int get_counters(struct thread_data *t, struct core_data *c, struct pkg_data *p)
>  			return -3;
>  		if (get_msr(cpu, MSR_IA32_MPERF, &t->mperf))
>  			return -4;
> +		t->aperf = t->aperf * aperf_mperf_multiplier;
> +		t->mperf = t->mperf * aperf_mperf_multiplier;
>  	}
>  
>  	if (do_smi) {
> @@ -2543,6 +2546,13 @@ int is_knl(unsigned int family, unsigned int model)
>  	return 0;
>  }
>  
> +unsigned int get_aperf_mperf_multiplier(unsigned int family, unsigned int model)
> +{
> +	if (is_knl(family, model))
> +		return 1024;
> +	return 1;
> +}
> +
>  #define SLM_BCLK_FREQS 5
>  double slm_freq_table[SLM_BCLK_FREQS] = { 83.3, 100.0, 133.3, 116.7, 80.0};
>  
> @@ -2744,6 +2754,9 @@ void process_cpuid()
>  		}
>  	}
>  
> +	if (has_aperf)
> +		aperf_mperf_multiplier = get_aperf_mperf_multiplier(family, model);
> +
>  	do_nhm_platform_info = do_nhm_cstates = do_smi = probe_nhm_msrs(family, model);
>  	do_snb_cstates = has_snb_msrs(family, model);
>  	do_pc2 = do_snb_cstates && (pkg_cstate_limit >= PCL__2);
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1227608

From"Anaczkowski, Lukasz" <lukasz.anaczkowski@intel.com>
Date2015-09-18 09:10 +0200
Message-ID<q9XXX-3Se-13@gated-at.bofh.it>
In reply to#1227195
RnJvbTogUmFmYWVsIEouIFd5c29ja2kgW21haWx0bzpyandAcmp3eXNvY2tpLm5ldF0gDQpTZW50
OiBUaHVyc2RheSwgU2VwdGVtYmVyIDE3LCAyMDE1IDc6MDUgUE0NCg0KPiBQbGVhc2UgKmFsd2F5
cyogc2VuZCBQTS1yZWxhdGVkIHBhdGNoZXMgdG8gbGludXgtcG1Admdlci5rZXJuZWwub3JnIChD
Q2VkIG5vdykuDQoNCk9rLCB0aGFua3MgZm9yIG5vdGljaW5nLg0KSSd2ZSBhZGRyZXNzZWQgbXkg
cGF0Y2ggYmFzZWQgb24gb3V0cHV0IG9mIC4vc2NyaXB0cy9nZXRfbWFpbnRhaW5lci5wbA0KYW5k
IGdhdmUgbWUgb3V0cHV0IGxpa2UgdGhpczoNCg0KTGVuIEJyb3duIDxsZW4uYnJvd25AeHh4Pg0K
RGFzYXJhdGhhcmFtYW4gQ2hhbmRyYW1vdWxpIDxkYXNhcmF0aGFyYW1hbi5jaGFuZHJhbW91bGlA
eHh4Pg0KbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZw0KDQpTaG91bGQgaXQgYmUgZml4ZWQg
c29tZWhvdz8NCg0KQ2hlZXJzLA0KTHVrYXN6DQo=
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1228299

From"Rafael J. Wysocki" <rjw@rjwysocki.net>
Date2015-09-18 23:50 +0200
Message-ID<qabHz-6x4-3@gated-at.bofh.it>
In reply to#1227608
On Friday, September 18, 2015 07:08:47 AM Anaczkowski, Lukasz wrote:
> From: Rafael J. Wysocki [mailto:rjw@rjwysocki.net] 
> Sent: Thursday, September 17, 2015 7:05 PM
> 
> > Please *always* send PM-related patches to linux-pm@vger.kernel.org (CCed now).
> 
> Ok, thanks for noticing.
> I've addressed my patch based on output of ./scripts/get_maintainer.pl
> and gave me output like this:
> 
> Len Brown <len.brown@xxx>
> Dasaratharaman Chandramouli <dasaratharaman.chandramouli@xxx>
> linux-kernel@vger.kernel.org
> 
> Should it be fixed somehow?

Well, so to speak, the script is not an intelligent entity and while it can
give you hints, it by no means is an ultimate source of information.

If you did "grep -r -I -l APERF *" in the kernel source tree, you'll
immediately see that PM uses it.

And while at it, we really should only be using the APERF/MPERF ratio so I'm
not sure why this patch actually matters?

Thanks,
Rafael

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web