Hi Daniel, On 27/03/18 12:26, Daniel Lezcano wrote: > On 27/03/2018 04:03, Leo Yan wrote: > > Hi Daniel, > > > > On Wed, Feb 21, 2018 at 04:29:27PM +0100, Daniel Lezcano wrote: > >> The cpu idle cooling driver performs synchronized idle injection across all > >> cpus belonging to the same cluster and offers a new method to cool down a > >> SoC. > >> > >> Each cluster has its own idle cooling device, each core has its own idle > >> injection thread, each idle injection thread uses play_idle to enter idle. > >> In > >> order to reach the deepest idle state, each cooling device has the idle > >> injection threads synchronized together. > >> > >> It has some similarity with the intel power clamp driver but it is actually > >> designed to work on the ARM architecture via the DT with a mathematical > >> proof > >> with the power model which comes with the Documentation. > >> > >> The idle injection cycle is fixed while the running cycle is variable. That > >> allows to have control on the device reactivity for the user experience. At > >> the mitigation point the idle threads are unparked, they play idle the > >> specified amount of time and they schedule themselves. The last thread sets > >> the next idle injection deadline and when the timer expires it wakes up all > >> the threads which in turn play idle again. Meanwhile the running cycle is > >> changed by set_cur_state. When the mitigation ends, the threads are > >> parked. > >> The algorithm is self adaptive, so there is no need to handle hotplugging. > > > > The idle injection threads are RT threads (FIFO) and I saw in > > play_idle() set/clear flag PF_IDLE for it. Will these idle injection > > threads utilization be accounted into RT utilization? > > > > If idle injection threads utilization is accounted as RT tasks > > utilization, will this impact CPUFreq governor 'schedutil' for OPP > > selection? > > Hi Leo, > > The idle injection task has a very low utilization when it is not in the > play_idle function, basically it wakes up, sets a timer and play_idle(). > > Regarding the use case, the idle injection is the base brick for an > combo cooling device with cpufreq + cpuidle. When the idle injection is > used alone, it is because there is no cpufreq driver for the platform. > If there is a cpufreq driver, then we should endup with the cpu cooling > device where we have control of the OPP (and there is no idle injection > threads) or the combo cooling device. > > Except I'm missing something, the idle injection threads won't impact > the OPP selection.
Mmm, they actually might. schedutil selects max OPP as soon as it sees an RT thread. I fear these guys might generate unwanted spikes. Maybe you can filter them out? Best, - Juri