On Thu, Feb 11, 2016 at 07:23:55PM +0100, Vincent Guittot wrote: > I agree that using rt_avg is not the best choice to evaluate the > capacity that is used by RT tasks but it has the advantage of been > already there. Do you mean that we should use another way to compute > the capacity that is used by rt tasks to then select the frequency ?
Nope, RR/FIFO simply do not contain enough information to compute anything from. > Or do you mean that we can't do anything else than asking for max > frequency ? Yep. > Trying to set max frequency just before scheduling RT task is not > really doable on a lot of platform because the sequence that changes > the frequency can sleep and takes more time than the run time of the > task. So what people do today is shoot cpufreq in the head and not use it, maybe that's the 'right' thing on these platforms. > At the end, we will have set max frequency once the task has > finished to run. There is no other solution than increasing the > min_freq of cpufreq to a level that will ensure enough compute > capacity for RT task with such high constraints that cpufreq can't > react. But you cannot a priori tell how much time RR/FIFO tasks will require, that's the entire problem with them. We can compute a hysterical average, but that _will_ mis predict the future and get you underruns/deadline misses. > For other RT tasks, we can probably found a way to set a > frequency that can fit both RT constraints and power consumption. You cannot, not without adding a lot more information about what these tasks are doing, and that is not captured in the task model.