From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
To: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: lenb@kernel.org, linux-pm@vger.kernel.org
Subject: Re: [RFC/RFT][PATCH] cpufreq: intel_pstate: Improve IO performance
Date: Mon, 31 Jul 2017 09:39:25 -0700 [thread overview]
Message-ID: <1501519165.4920.58.camel@linux.intel.com> (raw)
In-Reply-To: <1915794.l080sD0sSP@aspire.rjw.lan>
On Mon, 2017-07-31 at 14:21 +0200, Rafael J. Wysocki wrote:
>
[...]
> > #define INTEL_PSTATE_DEFAULT_SAMPLING_INTERVAL (10 *
> > NSEC_PER_MSEC)
> > +#define INTEL_PSTATE_IO_WAIT_SAMPLING_INTERVAL (NSEC_PER_MS
> > EC)
> > #define INTEL_PSTATE_HWP_SAMPLING_INTERVAL (50 *
> > NSEC_PER_MSEC)
> First offf, can we simply set INTEL_PSTATE_DEFAULT_SAMPLING_INTERVAL
> to NSEC_PER_MSEC?
>
> I guess it may help quite a bit in the more "interactive" cases
> overall.
>
> Or would that be too much overhead?
It will be too much overhead for clients.
>
> >
> >
[...]
> > @@ -1527,15 +1529,18 @@ static void intel_pstate_update_util(struct
> > update_util_data *data, u64 time,
> >
> > if (flags & SCHED_CPUFREQ_IOWAIT) {
> > cpu->iowait_boost = int_tofp(1);
> > + current_sample_interval =
> > INTEL_PSTATE_IO_WAIT_SAMPLING_INTERVAL;
> > } else if (cpu->iowait_boost) {
> > /* Clear iowait_boost if the CPU may have been
> > idle. */
> > delta_ns = time - cpu->last_update;
> > - if (delta_ns > TICK_NSEC)
> > + if (delta_ns > TICK_NSEC) {
> > cpu->iowait_boost = 0;
> > + current_sample_interval =
> > INTEL_PSTATE_DEFAULT_SAMPLING_INTERVAL;
> Second, if reducing INTEL_PSTATE_DEFAULT_SAMPLING_INTERVAL is not
> viable, why
> does the sample interval have to be reduced for all CPUs if
> SCHED_CPUFREQ_IOWAIT
> is set for one of them and not just for the CPU receiving that flag?
>
Correct, the read data may be passed to some other thread for
processing.
Replacing this patch with one below improves simple grep user time and
system time by 40% on Haswell servers.
diff --git a/drivers/cpufreq/intel_pstate.c
b/drivers/cpufreq/intel_pstate.c
index 48a98f11a84e..dce3e324a9da 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -1751,6 +1751,16 @@ static void intel_pstate_update_util(struct
update_util_data *data, u64 time,
if (flags & SCHED_CPUFREQ_IOWAIT) {
cpu->iowait_boost = int_tofp(1);
+ /*
+ * The last time the busy was 100% so P-state was max
anyway
+ * so avoid overhead of computation.
+ */
+ if (fp_toint(cpu->sample.busy_scaled) == 100) {
+ cpu->last_update = time;
+ return;
+ }
+ goto set_pstate;
+
} else if (cpu->iowait_boost) {
/* Clear iowait_boost if the CPU may have been idle. */
delta_ns = time - cpu->last_update;
@@ -1762,6 +1772,7 @@ static void intel_pstate_update_util(struct
update_util_data *data, u64 time,
if ((s64)delta_ns < INTEL_PSTATE_DEFAULT_SAMPLING_INTERVAL)
return;
+set_pstate:
if (intel_pstate_sample(cpu, time)) {
int target_pstate;
prev parent reply other threads:[~2017-07-31 16:39 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-28 6:44 [RFC/RFT][PATCH] cpufreq: intel_pstate: Improve IO performance Srinivas Pandruvada
2017-07-31 12:21 ` Rafael J. Wysocki
2017-07-31 16:39 ` Srinivas Pandruvada [this message]
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=1501519165.4920.58.camel@linux.intel.com \
--to=srinivas.pandruvada@linux.intel.com \
--cc=lenb@kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rjw@rjwysocki.net \
/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.