RE: [linux-pm] [PATCH] cpuidle: avoid singing capacitors

From: Pallipadi, Venkatesh
Date: Tue Mar 04 2008 - 14:11:00 EST




>-----Original Message-----
>From: Pierre Ossman [mailto:drzeus-list@xxxxxxxxx]
>Sent: Tuesday, March 04, 2008 9:19 AM
>To: Pallipadi, Venkatesh
>Cc: Dave Jones; Andi Kleen; Alan Stern; LKML; Adam Belay; Lee
>Revell; linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx; Pavel Machek
>Subject: Re: [linux-pm] [PATCH] cpuidle: avoid singing capacitors
>
>On Tue, 4 Mar 2008 07:14:23 +0100
>Pierre Ossman <drzeus-list@xxxxxxxxx> wrote:
>
>>
>> Many devices today are of a less than stellar quality, and singing
>> capacitors are a common problem. A high-pitch noise is
>created, caused
>> by power fluctuations as the processor enters and leaves
>deep sleep at
>> a high frequency.
>>
>> Instead of just disabling the deep sleep (which wastes power), this
>> patch allows you to reduces the number of times it is entered so that
>> the frequency can be kept inaudible.
>>
>> Signed-off-by: Pierre Ossman <drzeus@xxxxxxxxx>
>> --
>
>Hold off on this. It turns out it still has major problems.
>The menu algorithm now and then gets really bad at predicting
>sleep times, completely killing this avoidance scheme.
>
>(On that subject, does anyone except Adam understand that
>algorithm? Some comments wouldn't hurt...)

Prediction is based on cumulative time till "non expected wakeup". So,
prediction will come into play only when there are very short wakeups
due to "unexpected wakeups".

>So for now, I'm back to thinking that measuring the interval
>between deep sleeps is the better approach. I could use some
>ideas for a good clock source though. I haven't dug much
>deeper than jiffies when it comes to kernel timekeeping.

I think best solution is to use get_last_residency that is already
there. If the last residency or expected_us is very low, you can avoid
deep idle states. That way you don't have to depend on jiffies being
updated at the time you are checking it.

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