All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jörg Otte" <jrg.otte@gmail.com>
To: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux PM list <linux-pm@vger.kernel.org>,
	Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>,
	Doug Smythies <dsmythies@telus.net>
Subject: Re: [intel-pstate driver regression] processor frequency very high even if in idle
Date: Thu, 31 Mar 2016 19:27:35 +0200	[thread overview]
Message-ID: <CADDKRnAYPXip0EG0Y7ADuyt9L=FL-Nd1giHBVvPexs4kGkRj4g@mail.gmail.com> (raw)
In-Reply-To: <2727017.UmaUvtBLeX@vostro.rjw.lan>

2016-03-31 17:43 GMT+02:00 Rafael J. Wysocki <rjw@rjwysocki.net>:
> On Thursday, March 31, 2016 05:25:18 PM Jörg Otte wrote:
>> 2016-03-31 13:42 GMT+02:00 Rafael J. Wysocki <rjw@rjwysocki.net>:
>> > On Thursday, March 31, 2016 11:05:56 AM Jörg Otte wrote:
>> >
>> > [cut]
>> >
>> >> >
>> >>
>> >> Yes, works for me.
>> >>
>> >> CPUID(7): No-SGX
>> >>      CPU Avg_MHz   Busy% Bzy_MHz TSC_MHz
>> >>        -      11    0.66 1682 2494
>> >>        0      11    0.60 1856 2494
>> >>        1       6    0.34    1898    2494
>> >>        2      13    0.82    1628    2494
>> >>        3      13    0.87    1528    2494
>> >>      CPU Avg_MHz   Busy% Bzy_MHz TSC_MHz
>> >>        -       6    0.58     963    2494
>> >>        0       8    0.83     957    2494
>> >>        1       1    0.08     984    2494
>> >>        2      10    1.04     975    2494
>> >>        3       3    0.35     934    2494
>> >>
>> >
>
> [cut]
>
>> >
>>
>> No, this patch doesn't help.
>
> Well, more work to do then.
>
> I've just noticed a bug in this patch, which is not relevant for the results,
> but below is a new version.
>
>> CPUID(7): No-SGX
>>       CPU Avg_MHz   Busy% Bzy_MHz TSC_MHz
>>        -       8    0.32    2507    2495
>>        0      13    0.53    2505    2495
>>        1       3    0.11    2523    2495
>>        2       1    0.06    2555    2495
>>        3      15    0.59    2500    2495
>>      CPU Avg_MHz   Busy% Bzy_MHz TSC_MHz
>>        -       8    0.33    2486    2495
>>        0      12    0.50    2482    2495
>>        1       5    0.22    2489    2495
>>        2       1    0.04    2492    2495
>>        3      15    0.59    2487    2495
>
> Please apply the patch below and take a (1s or so) trace from the pstate_sample
> tracepoint (under /sys/kernel/debug/tracing/events/power/ on my systems).
>
> Then please apply the revert instead of it and take a trace from that tracepoint
> again and send both of the traces to me.
>
> ---
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> Subject: [PATCH] intel_pstate: Do not set utilization update hook too early
>
> The utilization update hook in the intel_pstate driver is set too
> early, as it only should be set after the policy has been fully
> initialized by the core.  That may cause intel_pstate_update_util()
> to use incorrect data and put the CPUs into incorrect P-states as
> a result.
>
> To prevent that from happening, make intel_pstate_set_policy() set
> the utilization update hook instead of intel_pstate_init_cpu() so
> intel_pstate_update_util() only runs when all things have been
> initialized as appropriate.
>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
>  drivers/cpufreq/intel_pstate.c |   27 +++++++++++++++++++--------
>  1 file changed, 19 insertions(+), 8 deletions(-)
>
> Index: linux-pm/drivers/cpufreq/intel_pstate.c
> ===================================================================
> --- linux-pm.orig/drivers/cpufreq/intel_pstate.c
> +++ linux-pm/drivers/cpufreq/intel_pstate.c
> @@ -1103,7 +1103,6 @@ static int intel_pstate_init_cpu(unsigne
>         intel_pstate_sample(cpu, 0);
>
>         cpu->update_util.func = intel_pstate_update_util;
> -       cpufreq_set_update_util_data(cpunum, &cpu->update_util);
>
>         pr_debug("intel_pstate: controlling: cpu %d\n", cpunum);
>
> @@ -1122,18 +1121,29 @@ static unsigned int intel_pstate_get(uns
>         return get_avg_frequency(cpu);
>  }
>
> +static void intel_pstate_set_update_util_hook(unsigned int cpu)
> +{
> +       cpufreq_set_update_util_data(cpu, &all_cpu_data[cpu]->update_util);
> +}
> +
> +static void intel_pstate_clear_update_util_hook(unsigned int cpu)
> +{
> +       cpufreq_set_update_util_data(cpu, NULL);
> +       synchronize_sched();
> +}
> +
>  static int intel_pstate_set_policy(struct cpufreq_policy *policy)
>  {
>         if (!policy->cpuinfo.max_freq)
>                 return -ENODEV;
>
> +       intel_pstate_clear_update_util_hook(policy->cpu);
> +
>         if (policy->policy == CPUFREQ_POLICY_PERFORMANCE &&
>             policy->max >= policy->cpuinfo.max_freq) {
>                 pr_debug("intel_pstate: set performance\n");
>                 limits = &performance_limits;
> -               if (hwp_active)
> -                       intel_pstate_hwp_set(policy->cpus);
> -               return 0;
> +               goto out;
>         }
>
>         pr_debug("intel_pstate: set powersave\n");
> @@ -1163,6 +1173,9 @@ static int intel_pstate_set_policy(struc
>         limits->max_perf = div_fp(int_tofp(limits->max_perf_pct),
>                                   int_tofp(100));
>
> + out:
> +       intel_pstate_set_update_util_hook(policy->cpu);
> +
>         if (hwp_active)
>                 intel_pstate_hwp_set(policy->cpus);
>
> @@ -1187,8 +1200,7 @@ static void intel_pstate_stop_cpu(struct
>
>         pr_debug("intel_pstate: CPU %d exiting\n", cpu_num);
>
> -       cpufreq_set_update_util_data(cpu_num, NULL);
> -       synchronize_sched();
> +       intel_pstate_clear_update_util_hook(cpu_num);
>
>         if (hwp_active)
>                 return;
> @@ -1455,8 +1467,7 @@ out:
>         get_online_cpus();
>         for_each_online_cpu(cpu) {
>                 if (all_cpu_data[cpu]) {
> -                       cpufreq_set_update_util_data(cpu, NULL);
> -                       synchronize_sched();
> +                       intel_pstate_clear_update_util_hook(cpu);
>                         kfree(all_cpu_data[cpu]);
>                 }
>         }
>

OK, patch is applied.
After some configurations and compilations I'm there.
Under pstate_sample I see:
enable  filter  format  id  trigger

what to do now ? (never did tracing before)

Thanks, Jörg

  parent reply	other threads:[~2016-03-31 17:27 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-29 17:24 [intel-pstate driver regression] processor frequency very high even if in idle Jörg Otte
2016-03-29 17:32 ` Jörg Otte
2016-03-29 21:34   ` Rafael J. Wysocki
2016-03-30 10:17     ` Jörg Otte
2016-03-30 11:05       ` Rafael J. Wysocki
2016-03-30 15:29         ` Jörg Otte
2016-03-30 18:39           ` Rafael J. Wysocki
2016-03-31  9:05             ` Jörg Otte
2016-03-31 11:42               ` Rafael J. Wysocki
2016-03-31 15:25                 ` Jörg Otte
2016-03-31 15:43                   ` Rafael J. Wysocki
2016-03-31 16:10                     ` Srinivas Pandruvada
2016-03-31 17:27                     ` Jörg Otte [this message]
2016-03-31 17:55                       ` Srinivas Pandruvada
2016-04-01  0:08                         ` Rafael J. Wysocki
2016-04-01  9:42                         ` Jörg Otte
2016-04-01 15:05                           ` Srinivas Pandruvada
2016-04-01 20:24                             ` Rafael J. Wysocki
2016-04-01  9:20                     ` Jörg Otte
2016-04-01 12:40                       ` Rafael J. Wysocki
2016-04-01 14:06                         ` Jörg Otte
2016-04-01 17:44                           ` Srinivas Pandruvada
2016-04-01 18:31                             ` Doug Smythies
2016-04-01 18:41                               ` Srinivas Pandruvada
2016-04-01 19:54                               ` Rafael J. Wysocki
2016-04-01 23:36                                 ` Doug Smythies
2016-04-02  0:28                                   ` Rafael J. Wysocki
2016-04-01 20:28                           ` Rafael J. Wysocki
2016-04-02 22:50                             ` Rafael J. Wysocki
2016-04-01 15:20                         ` Doug Smythies
2016-04-01 16:46                           ` Jörg Otte
2016-04-01 17:34                             ` Jörg Otte
2016-03-30 15:33         ` Pandruvada, Srinivas
2016-03-30 15:51           ` Jörg Otte
2016-03-30 18:50             ` Doug Smythies
2016-03-30 18:50               ` Doug Smythies
2016-03-30 18:58               ` Srinivas Pandruvada
2016-03-30 20:12                 ` Rafael J. Wysocki
2016-03-30 20:26                   ` Srinivas Pandruvada
2016-03-31  9:23                     ` Jörg Otte
2016-03-31 14:39                       ` Doug Smythies
2016-03-31 14:39                         ` Doug Smythies
2016-03-31 15:06                         ` Srinivas Pandruvada
2016-03-31 15:32                           ` Jörg Otte
2016-03-31 15:10                         ` Doug Smythies
2016-03-31 15:10                           ` Doug Smythies
2016-04-01  7:20                       ` Doug Smythies
2016-04-01  7:20                         ` Doug Smythies
2016-03-30 21:41 Sedat Dilek
2016-03-30 21:58 ` Rafael J. Wysocki
2016-03-30 22:23   ` Sedat Dilek
2016-03-30 22:29     ` Rafael J. Wysocki
2016-03-30 22:18 ` Srinivas Pandruvada
2016-03-30 22:25   ` Rafael J. Wysocki
2016-03-30 22:46     ` Srinivas Pandruvada
2016-03-30 23:17       ` Pandruvada, Srinivas
2016-03-30 23:25         ` Sedat Dilek
2016-03-30 23:28           ` Rafael J. Wysocki
2016-03-30 23:32             ` Sedat Dilek
2016-03-30 23:41               ` Rafael J. Wysocki
2016-03-31  6:38                 ` Sedat Dilek
2016-03-31  7:45                   ` Sedat Dilek
     [not found]                 ` <CAA=4085Mmv7gRpJid8UGQ4ti6c1HhaENnogd8aPrg6E-w68QWg@mail.gmail.com>
2016-03-31  7:28                   ` Navin P.S
2016-03-30 22:50   ` Doug Smythies
2016-03-30 23:12     ` Srinivas Pandruvada
2016-03-31  8:10     ` Sedat Dilek
2016-03-31 14:30       ` Doug Smythies
2016-03-31 14:30         ` Doug Smythies
2016-04-02  6:12         ` Sedat Dilek
     [not found]           ` <CA+icZUVHyq7dOh457rYv+2nmNxPevY0ZcqxhQVhYG4Z1D-NaDA@mail.gmail.com>
2016-04-02 15:28             ` Srinivas Pandruvada
2016-04-02 17:19               ` Jörg Otte
2016-04-02 18:20                 ` Sedat Dilek
2016-04-03 18:59                   ` Doug Smythies
2016-04-03 18:59                     ` Doug Smythies
2016-04-04  5:13                     ` Sedat Dilek
2016-04-04  6:14                       ` Doug Smythies
2016-04-04  6:14                         ` Doug Smythies
2016-04-04 14:12                         ` Sedat Dilek

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='CADDKRnAYPXip0EG0Y7ADuyt9L=FL-Nd1giHBVvPexs4kGkRj4g@mail.gmail.com' \
    --to=jrg.otte@gmail.com \
    --cc=dsmythies@telus.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rafael@kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=srinivas.pandruvada@linux.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 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.