From: Mike Galbraith <bitbucket@online.de>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Len Brown <lenb@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Linux PM list <linux-pm@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Jeremy Eder <jeder@redhat.com>,
x86@kernel.org, Borislav Petkov <bp@alien8.de>
Subject: Re: 50 Watt idle power regression bisected to Linux-3.10
Date: Wed, 11 Dec 2013 04:21:33 +0100 [thread overview]
Message-ID: <1386732093.5964.6.camel@marge.simpson.net> (raw)
In-Reply-To: <alpine.DEB.2.02.1312110030330.28330@ionos.tec.linutronix.de>
Alakazam..
pk cor CPU %c0 GHz TSC SMI %c1 %c3 %c6 CTMP %pc3 %pc6
0.17 2.01 2.26 0 0.02 99.82 0.00 49 99.55 0.00
0 0 0 0.95 1.45 2.26 2 0.43 98.62 0.00 48 98.48 0.00
1 0 8 0.24 1.99 2.26 2 0.02 99.75 0.00 38 99.68 0.00
2 0 16 0.17 1.97 2.26 2 0.02 99.81 0.00 40 99.65 0.00
3 0 24 0.18 1.92 2.26 2 0.02 99.80 0.00 41 99.68 0.00
4 0 32 0.18 1.95 2.26 2 0.02 99.80 0.00 36 99.66 0.00
5 0 40 0.15 1.85 2.26 0 0.03 99.83 0.00 35 99.70 0.00
6 0 48 0.10 1.83 2.26 0 0.01 99.89 0.00 36 99.79 0.00
7 0 56 0.10 1.97 2.26 0 0.01 99.89 0.00 43 99.75 0.00
Yup, magical gremlin repellent works on 8 socket DL980 too.
> diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
> index a55e68f..b6399af 100644
> --- a/drivers/cpuidle/cpuidle.c
> +++ b/drivers/cpuidle/cpuidle.c
> @@ -118,7 +118,7 @@ int cpuidle_idle_call(void)
> struct cpuidle_device *dev = __this_cpu_read(cpuidle_devices);
> struct cpuidle_driver *drv;
> int next_state, entered_state;
> - bool broadcast;
> + bool broadcast, coupled = false;
>
> if (off || !initialized)
> return -ENODEV;
> @@ -147,15 +147,18 @@ int cpuidle_idle_call(void)
> if (broadcast)
> clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &dev->cpu);
>
> - if (cpuidle_state_is_coupled(dev, drv, next_state))
> + if (cpuidle_state_is_coupled(dev, drv, next_state)) {
> entered_state = cpuidle_enter_state_coupled(dev, drv,
> next_state);
> - else
> + coupled = true;
> + } else
> entered_state = cpuidle_enter_state(dev, drv, next_state);
>
> if (broadcast)
> clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &dev->cpu);
>
> + trace_printk("coupled %d: entered state %d\n", coupled, entered_state);
> +
> trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
>
> /* give the governor an opportunity to reflect on the outcome */
> diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c
> index cf7f2f0..9de7ee2 100644
> --- a/drivers/cpuidle/governors/menu.c
> +++ b/drivers/cpuidle/governors/menu.c
> @@ -309,7 +309,6 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev)
> data->expected_us =
> t.tv_sec * USEC_PER_SEC + t.tv_nsec / NSEC_PER_USEC;
>
> -
> data->bucket = which_bucket(data->expected_us);
>
> multiplier = performance_multiplier();
> @@ -330,6 +329,9 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev)
> data->correction_factor[data->bucket],
> RESOLUTION * DECAY);
>
> + trace_printk("expected_us: %d predicted_us: %d\n", data->expected_us,
> + data->predicted_us);
> +
> get_typical_interval(data);
>
> /*
> @@ -349,10 +351,15 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev)
> struct cpuidle_state *s = &drv->states[i];
> struct cpuidle_state_usage *su = &dev->states_usage[i];
>
> + trace_printk("Trying idle state %d s->dis %d su->dis %d\n", i,
> + s->disabled, su->disable);
> if (s->disabled || su->disable)
> continue;
> + trace_printk("residency %d\n", s->target_residency);
> if (s->target_residency > data->predicted_us)
> continue;
> + trace_printk("exit_latency %d vs. %d multiplier %d\n",
> + s->exit_latency, latency_req, multiplier);
> if (s->exit_latency > latency_req)
> continue;
> if (s->exit_latency * multiplier > data->predicted_us)
>
next prev parent reply other threads:[~2013-12-11 3:22 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-07 8:00 50 Watt idle power regression bisected to Linux-3.10 Len Brown
2013-12-07 8:39 ` Mike Galbraith
2013-12-07 16:01 ` Len Brown
2013-12-07 16:45 ` Len Brown
2013-12-07 19:17 ` Mike Galbraith
2013-12-10 11:41 ` Ingo Molnar
2013-12-07 12:54 ` Thomas Gleixner
2013-12-08 4:57 ` Mike Galbraith
2013-12-08 20:40 ` Len Brown
2013-12-09 3:16 ` Mike Galbraith
2013-12-10 5:17 ` Mike Galbraith
2013-12-10 11:45 ` Ingo Molnar
2013-12-10 14:29 ` Thomas Gleixner
2013-12-10 15:06 ` Ingo Molnar
2013-12-11 2:05 ` Thomas Gleixner
2013-12-11 3:21 ` Mike Galbraith [this message]
2013-12-11 11:28 ` Thomas Gleixner
2013-12-11 11:38 ` Borislav Petkov
2013-12-11 11:52 ` Peter Zijlstra
2013-12-11 12:29 ` Mike Galbraith
2013-12-11 12:43 ` Peter Zijlstra
2013-12-11 13:10 ` Mike Galbraith
2013-12-11 13:40 ` Borislav Petkov
2013-12-11 14:56 ` Ingo Molnar
2013-12-11 16:02 ` Borislav Petkov
2013-12-11 16:43 ` Peter Zijlstra
2013-12-11 17:50 ` Ingo Molnar
2013-12-11 23:08 ` H. Peter Anvin
2013-12-11 23:14 ` Borislav Petkov
2013-12-12 0:52 ` H. Peter Anvin
2013-12-12 4:25 ` Mike Galbraith
2013-12-12 4:49 ` H. Peter Anvin
2013-12-12 4:59 ` Mike Galbraith
2013-12-12 5:37 ` Mike Galbraith
2013-12-12 5:45 ` H. Peter Anvin
2013-12-12 5:57 ` Mike Galbraith
2013-12-12 6:05 ` Mike Galbraith
2013-12-12 7:57 ` H. Peter Anvin
2013-12-12 8:51 ` Peter Zijlstra
2013-12-12 13:28 ` Ingo Molnar
2013-12-12 15:06 ` H. Peter Anvin
2013-12-12 15:51 ` Peter Zijlstra
2013-12-11 14:42 ` Ingo Molnar
2013-12-11 15:02 ` Thomas Gleixner
2013-12-11 15:09 ` Ingo Molnar
2013-12-11 16:44 ` Peter Zijlstra
2013-12-11 17:48 ` Ingo Molnar
2013-12-11 16:44 ` Peter Zijlstra
2013-12-11 17:47 ` Ingo Molnar
2013-12-11 21:43 ` Len Brown
2013-12-11 22:22 ` Thomas Gleixner
2013-12-18 21:44 ` [PATCH] x86 idle: repair large-server 50-watt idle-power regression Len Brown
2013-12-19 12:22 ` Ingo Molnar
2013-12-19 14:40 ` H. Peter Anvin
2013-12-19 15:45 ` Borislav Petkov
2013-12-19 15:55 ` H. Peter Anvin
2013-12-19 16:02 ` Ingo Molnar
2013-12-19 16:09 ` H. Peter Anvin
2013-12-19 16:13 ` H. Peter Anvin
2013-12-19 16:21 ` Peter Zijlstra
2013-12-19 16:50 ` H. Peter Anvin
2013-12-19 17:07 ` Ingo Molnar
2013-12-19 17:25 ` Peter Zijlstra
2013-12-19 17:36 ` Peter Zijlstra
2013-12-19 18:05 ` H. Peter Anvin
2013-12-19 18:14 ` Ingo Molnar
2013-12-19 17:50 ` Peter Zijlstra
2013-12-19 18:18 ` Ingo Molnar
2013-12-19 21:05 ` H. Peter Anvin
2013-12-19 21:17 ` Ingo Molnar
2013-12-19 18:10 ` Ingo Molnar
2013-12-19 18:09 ` H. Peter Anvin
2013-12-19 18:19 ` H. Peter Anvin
2013-12-19 18:23 ` Ingo Molnar
[not found] ` <CA+55aFzGxcML7j8CEvQPYzh0W81uVoAAVmGctMOUZ7CZ1yYd2A@mail.gmail.com>
2013-12-19 18:43 ` Ingo Molnar
2013-12-19 20:09 ` [tip:x86/idle] x86, idle: Use static_cpu_has() for CLFLUSH workaround, add barriers tip-bot for H. Peter Anvin
2013-12-19 20:40 ` Ingo Molnar
2013-12-19 20:46 ` Linus Torvalds
2013-12-19 21:14 ` Ingo Molnar
2013-12-19 21:25 ` Linus Torvalds
2013-12-19 21:55 ` Peter Zijlstra
2013-12-20 8:47 ` Ingo Molnar
2013-12-19 20:33 ` [tip:x86/idle] x86, idle: Add memory barriers around clflush in mwait_play_dead() tip-bot for H. Peter Anvin
2013-12-19 18:19 ` [PATCH] x86 idle: repair large-server 50-watt idle-power regression Ingo Molnar
2013-12-19 19:22 ` H. Peter Anvin
2013-12-19 19:27 ` Peter Zijlstra
2013-12-19 19:51 ` [tip:x86/urgent] x86 idle: Repair " tip-bot for Len Brown
2014-03-18 0:20 ` Davidlohr Bueso
2014-03-18 9:16 ` Peter Zijlstra
2014-03-19 2:14 ` Jason Low
2014-03-19 6:42 ` Peter Zijlstra
2014-04-08 21:43 ` Brown, Len
2014-04-09 8:18 ` Peter Zijlstra
2014-04-15 3:27 ` Davidlohr Bueso
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=1386732093.5964.6.camel@marge.simpson.net \
--to=bitbucket@online.de \
--cc=bp@alien8.de \
--cc=jeder@redhat.com \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox