[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJZ5v0id8+8oWLxDTJhewH3rKFvKPuAzMoOeg4xy2J097yCd9w@mail.gmail.com>
Date: Thu, 18 Feb 2016 00:21:59 +0100
From: "Rafael J. Wysocki" <rafael@...nel.org>
To: Daniel Lezcano <daniel.lezcano@...aro.org>
Cc: Nicolas Pitre <nicolas.pitre@...aro.org>,
Thomas Gleixner <tglx@...utronix.de>,
Peter Zijlstra <peterz@...radead.org>,
"linux-pm@...r.kernel.org" <linux-pm@...r.kernel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Vincent Guittot <vincent.guittot@...aro.org>
Subject: Re: [PATCH V3 2/2] sched: idle: IRQ based next prediction for idle period
On Thu, Feb 18, 2016 at 12:09 AM, Rafael J. Wysocki <rafael@...nel.org> wrote:
> On Tue, Feb 16, 2016 at 5:44 PM, Nicolas Pitre <nicolas.pitre@...aro.org> wrote:
>> On Tue, 16 Feb 2016, Daniel Lezcano wrote:
>>
>>> Many IRQs are quiet most of the time, or they tend to come in bursts of
>>> fairly equal time intervals within each burst. It is therefore possible
>>> to detect those IRQs with stable intervals and guestimate when the next
>>> IRQ event is most likely to happen.
>>>
>>> Examples of such IRQs may include audio related IRQs where the FIFO size
>>> and/or DMA descriptor size with the sample rate create stable intervals,
>>> block devices during large data transfers, etc. Even network streaming
>>> of multimedia content creates patterns of periodic network interface IRQs
>>> in some cases.
>>>
>>> This patch adds code to compute the mean interval and variance for each IRQ
>>> over a window of time intervals between IRQ events. Those statistics can
>>> be used to assist cpuidle in selecting the most appropriate sleep state
>>> by predicting the most likely time for the next interrupt.
>>>
>>> Signed-off-by: Daniel Lezcano <daniel.lezcano@...aro.org>
>>
>> The math in next_irq_event() is correct even though I think it could be
>> done more simply. But that can be optimized at a later time.
>>
>> Reviewed-by: Nicolas Pitre <nico@...aro.org>
>
> Well, I'm likely overlooking something, but how is this going to be
> hooked up to the code in idle.c?
My somewhat educated guess is that sched_idle() in your patch is
intended to replace cpuidle_idle_call(), right?
If so, why do you want to replace it?
And assuming that you have a good enough reason to do that, you need
to ensure that suspend-to-idle will work anyway.
Thanks,
Rafael
Powered by blists - more mailing lists