On Tuesday, April 29, 2014 08:46:05 PM Stratos Karafotis wrote:
> According to Intel 64 and IA-32 Architectures SDM, Volume 3,
> Chapter 14.2, "Software needs to exercise care to avoid delays
> between the two RDMSRs (for example interrupts)".
> 
> So, disable interrupts during reading MSRs IA32_APERF and IA32_MPERF.
> Since the TSC is also takes place in the calculation include it in
> the protected section. This should increase the accuracy of the
> calculations.
> 
> Tested on Intel i7-3770 CPU @ 3.40GHz.
> Benchmarks (Phoronix Linux compilation) show a slightly increase
> in performance by ~0.1% and a decrease in power consumption by
> ~0.13%.
> 
> Signed-off-by: Stratos Karafotis <[email protected]>

This looks good to me, but I need Dirk Brandewie to review and comment
all intel_pstate patches before I apply any of them.

Thanks!

> ---
> 
> I hope it's not too inappropriate to post test results in
> conjunction with my previous patch about the change of calculation
> method of next p-state (https://lkml.org/lkml/2014/4/27/100).
> I used Phoronix benchmark - Linux Kernel Compilation 3.1.
> Below the test results using turbostat (5 iterations):
> 
> Without 2 patches:
> 
> Ph. avg Time  Total time      PkgWatt         Total Energy
>       79.63   266.416         57.74           15382.85984
>       79.63   265.609         57.87           15370.79283
>       79.57   266.994         57.54           15362.83476
>       79.53   265.304         57.83           15342.53032
>       79.71   265.977         57.76           15362.83152
> avg   79.61   266.06          57.74           15364.36985
> 
> With change calculation patch:
> 
> Ph. avg Time  Total time      PkgWatt         Total Energy
>       78.23   258.826         59.14           15306.96964
>       78.41   259.110         59.15           15326.35650
>       78.40   258.530         59.26           15320.48780
>       78.46   258.673         59.20           15313.44160
>       78.19   259.075         59.16           15326.87700
> avg   78.34   258.842         59.18           15318.82650
> 
> With change calculation patch + this one
> 
> Ph. avg Time  Total time      PkgWatt         Total Energy
>       78.33   259.320         59.06           15315.43920
>       78.28   258.245         59.20           15288.10400
>       78.08   257.523         59.32           15276.26436
>       78.38   259.084         59.13           15319.63692
>       78.31   258.232         59.22           15292.49904
> avg   78.27   258.480         59.18           15298.38870
> 
> 
>  drivers/cpufreq/intel_pstate.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
> index 8e309db..95b3958 100644
> --- a/drivers/cpufreq/intel_pstate.c
> +++ b/drivers/cpufreq/intel_pstate.c
> @@ -576,10 +576,13 @@ static inline void intel_pstate_sample(struct cpudata 
> *cpu)
>  {
>       u64 aperf, mperf;
>       unsigned long long tsc;
> +     unsigned long flags;
>  
> +     local_irq_save(flags);
>       rdmsrl(MSR_IA32_APERF, aperf);
>       rdmsrl(MSR_IA32_MPERF, mperf);
>       tsc = native_read_tsc();
> +     local_irq_restore(flags);
>  
>       aperf = aperf >> FRAC_BITS;
>       mperf = mperf >> FRAC_BITS;
> 

-- 
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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to