cpufreq: schedutil: move slow path from workqueue to SCHED_FIFO task
authorViresh Kumar <viresh.kumar@linaro.org>
Tue, 15 Nov 2016 08:23:22 +0000 (13:53 +0530)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 16 Nov 2016 22:21:08 +0000 (23:21 +0100)
commit02a7b1ee3baa15a98b541d8cfd156bbe1a091c20
tree0d0fbd9b1dfa5cc3b55cbae951161c0cbd040120
parent4a71ce4348bb61740d411822357061f8bf870f4c
cpufreq: schedutil: move slow path from workqueue to SCHED_FIFO task

If slow path frequency changes are conducted in a SCHED_OTHER context
then they may be delayed for some amount of time, including
indefinitely, when real time or deadline activity is taking place.

Move the slow path to a real time kernel thread. In the future the
thread should be made SCHED_DEADLINE. The RT priority is arbitrarily set
to 50 for now.

Hackbench results on ARM Exynos, dual core A15 platform for 10
iterations:

$ hackbench -s 100 -l 100 -g 10 -f 20

Before After
---------------------------------
1.808 1.603
1.847 1.251
2.229 1.590
1.952 1.600
1.947 1.257
1.925 1.627
2.694 1.620
1.258 1.621
1.919 1.632
1.250 1.240

Average:

1.8829 1.5041

Based on initial work by Steve Muckle.

Signed-off-by: Steve Muckle <smuckle.linux@gmail.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
kernel/sched/cpufreq_schedutil.c