cpufreq: sched: update capacity request upon tick always
At present, sched_freq_tick() skips updating of capacity update when
current frequency is fmax. This can cause incorrect frequency drop
when :
1. Task A enqueues onto CPU 0 and executes for multiple windows
2. A new task B which has low task demand enqueues onto CPU 1 and
executes long so becomes a CPU bound task.
3. Both CPU 0 and 1 gets scheduler tick but skips sched_freq_tick()
since current frequency is fmax.
4. Task A sleeps and lower the CPU capacity request.
5. Because task B voted CPU capacity at step 2 with low demand,
cluster frequency for both CPU 0 and 1 drops to match capacity
voted by CPU 2 at step 2 even though task B on CPU 1 requires max
capacity.
Fix such incorrectness by not skipping CPU capacity voting at tick
path.
Change-Id: Ieb46af1ac96ffce7a5532c58c7f07bf1ada06b86
Signed-off-by:
Joonwoo Park <joonwoop@codeaurora.org>
Loading
Please register or sign in to comment