lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 7 Oct 2009 01:52:36 -0700
From:	Steven Noonan <steven@...inklabs.net>
To:	ext-eero.nurkkala@...ia.com
Cc:	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	Thomas Gleixner <tglx@...utronix.de>,
	Rik van Riel <riel@...hat.com>,
	Venkatesh Pallipadi <venkatesh.pallipadi@...el.com>,
	Greg KH <greg@...ah.com>, Ingo Molnar <mingo@...e.hu>
Subject: Re: [BISECTED] "conservative" cpufreq governor broken

On Wed, Oct 7, 2009 at 1:43 AM, Eero Nurkkala
<ext-eero.nurkkala@...ia.com> wrote:
> On Wed, 2009-10-07 at 10:24 +0200, ext Steven Noonan wrote:
>> >
>> > Steven, how do the cpu loads look like without the patch?
>>
>> They're sane:
>>
>> [   40.019381] cpufreq load = 100 * (66666 - 66337) / 66666 = 0
>> [   40.019396] cpufreq load = 100 * (66666 - 66299) / 66666 = 0
>> [   73.352580] cpufreq load = 100 * (66717 - 66349) / 66717 = 0
>> [   73.352595] cpufreq load = 100 * (66634 - 63848) / 66634 = 4
>
> Thank you. Could you please try the following:
> Now, if ts->nohz_mode == NOHZ_MODE_INACTIVE, ts->inidle is not set
> and all subsequent calls from irq_exit() think we weren't idling,
> which is not true.
>
> --- a/kernel/time/tick-sched.c
> +++ b/kernel/time/tick-sched.c
> @@ -233,6 +233,8 @@ void tick_nohz_stop_sched_tick(int inidle)
>
>        now = tick_nohz_start_idle(ts);
>
> +       ts->inidle = 1;
> +
>        /*
>         * If this cpu is offline and it is the one which updates
>         * jiffies, then give up the assignment and let it be taken by
> @@ -248,8 +250,6 @@ void tick_nohz_stop_sched_tick(int inidle)
>        if (unlikely(ts->nohz_mode == NOHZ_MODE_INACTIVE))
>                goto end;
>
> -       ts->inidle = 1;
> -
>        if (need_resched())
>                goto end;
>

Yeah, that fixed it. The load is now sane, my system isn't heating up,
and 'conservative' is now clocking my CPU down to the minimum as is
appropriate.

Can you explain why this only affected 'conservative', why it caused
my machine to heat up, etc?

Also, this fix should probably be passed on to Greg K. H. (so it goes
in 2.6.31-stable) as well as Ingo Molnar (so it goes into -tip, and
hopefully to Linus for 2.6.32). Both CC'd.

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ