Re: Prevent RT-throttling for idle-injection threads

From: Daniel Bristot de Oliveira
Date: Fri Sep 08 2023 - 08:26:28 EST


On 9/8/23 11:55, Atul Kumar Pant wrote:
> On Fri, Aug 11, 2023 at 11:17:19AM -0400, Steven Rostedt wrote:
>> On Tue, 8 Aug 2023 16:55:23 +0530
>> Atul Pant <quic_atulpant@xxxxxxxxxxx> wrote:
>>
>>> Hi all,
>>> We are trying to implement a solution for thermal mitigation by using
>>> idle injection on CPUs. However we face some limitations with the current
>>> idle-inject framework. As per our need, we want to start injecting idle
>>> cycles on a CPU for indefinite time (until the temperature/power of the
>>> CPU falls below a threshold). This will help to keep the hot CPUs in the
>>> sleep state until we see improvement in temperature/power. If we set the
>>> idle duration to a large value or have an idle-injection ratio of 100%,
>>> then the idle-inject RT thread suffers from RT throttling. This results
>>> in the CPU exiting from the sleep state and consuming some power.
>>>
>>> The above situation can be avoided, if we can prevent RT throttling on
>>> the injected CPU. With the currently available sysctl parameters,
>>> sched_rt_runtime_us and sched_rt_period_us, we can prevent RT throttling
>>> by either setting sched_rt_runtime_us equal to sched_rt_period_us or,
>>> setting sched_rt_runtime_us to -1. Since these parameters are system
>>> wide, so it will affect the RT tasks on non idle-injected CPUs as well.
>>> To overcome this, will it be feasible to have these two parameters on a
>>> per CPU basis? This will allow to selectively disable RT throttling on
>>> idle-injected CPUs.
>> I wonder if the deadline scheduler that Daniel is working on would help in this case?
> Are you referring to this thread regarding SCHED_DEADLINE server?
> https://lore.kernel.org/all/cover.1686239016.git.bristot@xxxxxxxxxx/T/#u
>

Yep, but the v4... this will replace rt throttling, and it already has per-cpu arguments.

https://lore.kernel.org/lkml/20230906082952.GB38741@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/t/

-- Daniel