Hi Amit,
Amit Kucheria amit.kucheria@linaro.org wrote 2015-06-22 PM 06:18:35:
Re: [RESEND PATCH v2] doc: measure the efficiency of cpufreq governors
On Thu, Jun 18, 2015 at 5:05 PM, pang.xunlei@zte.com.cn wrote:
Just tested on my Intel EAS test environment(implemented x86 frequency invariant hook). With EAS disabled and sched-dvfs enabled.
#./test.sh 3 100 1000 Frequency domain CPU0~CPU2, run 100ms, sleep 1000ms: powersave efficiency: 0% performance efficiency: 100% conservative efficiency: 92% ondemand efficiency: 97% cfs efficiency: 79%
#./test.sh 3 200 1000 Frequency domain CPU0~CPU2, run 200ms, sleep 1000ms: powersave efficiency: 0% performance efficiency: 100% conservative efficiency: 97% ondemand efficiency: 99% cfs efficiency: 89%
#./test.sh 3 50 1000 Frequency domain CPU0~CPU2, run 50ms, sleep 1000ms: powersave efficiency: 0% performance efficiency: 100% conservative efficiency: 93% ondemand efficiency: 96% cfs efficiency: 58%
#./test.sh 3 1000 100 Frequency domain CPU0~CPU2, run 1000ms, sleep 100ms: powersave efficiency: 0% performance efficiency: 100% conservative efficiency: 99% ondemand efficiency: 99% cfs efficiency: 97%
Seems sched-dvfs is computing inefficient at low cpu usage(implies
power
efficient), but computing efficient at high cpu usage.
-Xunlei
Hi Xunlei,
Thanks for the numbers. So this is along expect lines: the scheduler is not responsive enough in raising OPP during short-lived (<250ms?) bursts of activity.
IIUC, PELT needs ~300ms to reflect the full load (and a little over 100ms to get to reflect 90% load).
Yeah, I found this when I tested the EAS, I used a "200ms run + 200ms sleep" pattern back then, and the task_utilization() is around 1000, so the tasks weren't all put onto the energy efficient cpus when doing energy_aware_wake_cpu().
Just curious, does the use of the RT scheduling class improve the
efficiency?
I changed kcpufreq_cfs_task to a cfs task, the result is almost the same: With "50ms run + 1000ms sleep" 10 loops running on CPU0, FIFO: 49%, non-RT: 50%
Maybe using FIFO for it just want to ensure the response time and avoid messing up the cfs load contribution(if kcpufreq_cfs_task is a cfs task).
What heuristics can be added to control hysteresis? Taking into account #of tasks per cpu, #tasks per group?
I think we can set a threshhold for it, low threshhold means energy efficient (like conservative), high threshhold means computing efficient which means
we use the highest frequency directly if the cpu usage exceeds the threshhold like ondemand?
-Xunlei
Regards, Amit
-------------------------------------------------------- ZTE Information Security Notice: The information contained in this mail (and any attachment transmitted herewith) is privileged and confidential and is intended for the exclusive use of the addressee(s). If you are not an intended recipient, any disclosure, reproduction, distribution or other dissemination or use of the information contained is strictly prohibited. If you have received this mail in error, please delete it and notify us immediately.