Add extra methods from sysfs to optimize performance: - Set migration cost to 0, so it will give chance to spread tasks within difference CPUs in same cluster; - Set busy_factor to 1, so it will give more chance for active load balance for migration running tasks.
Signed-off-by: Leo Yan leo.yan@linaro.org --- Documentation/scheduler/sched-energy.txt | 87 ++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+)
diff --git a/Documentation/scheduler/sched-energy.txt b/Documentation/scheduler/sched-energy.txt index dab2f90..bfd4eb8 100644 --- a/Documentation/scheduler/sched-energy.txt +++ b/Documentation/scheduler/sched-energy.txt @@ -360,3 +360,90 @@ of the cpu from idle/busy power of the shared resources. The cpu can be tricked into different per-cpu idle states by disabling the other states. Based on various combinations of measurements with specific cpus busy and disabling idle-states it is possible to extrapolate the idle-state power. + +Performance tunning method +========================== + +Below setting may impact heavily for performance tunning when spread tasks: + +#!/system/bin/sh + +echo 'enable ENERGY_AWARE feature' +echo ENERGY_AWARE > /sys/kernel/debug/sched_features +echo 1 > /proc/sys/kernel/sched_is_big_little +echo 0 > /proc/sys/kernel/sched_sync_hint_enable +echo 0 > /proc/sys/kernel/sched_initial_task_util +echo 1 > /proc/sys/kernel/sched_cstate_aware + +if [ "$1" = "pelt" ]; then + +echo 'set for pelt' +echo 0 > /proc/sys/kernel/sched_use_walt_cpu_util +echo 0 > /proc/sys/kernel/sched_use_walt_task_util + +elif [ "$1" = "walt" ]; then + +echo 'set for walt' +echo 1 > /proc/sys/kernel/sched_use_walt_cpu_util +echo 1 > /proc/sys/kernel/sched_use_walt_task_util +echo 10000000 > /proc/sys/kernel/sched_walt_cpu_high_irqload + +fi + +echo 'set sched_migration_cost_ns=0' +echo 0 > /proc/sys/kernel/sched_migration_cost_ns + +echo 'set interactive governor' +echo interactive > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + +echo 'set busy_factor=1' +echo 1 > /proc/sys/kernel/sched_domain/cpu0/domain0/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu0/domain1/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu1/domain0/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu1/domain1/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu2/domain0/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu2/domain1/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu3/domain0/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu3/domain1/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu4/domain0/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu4/domain1/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu5/domain0/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu5/domain1/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu6/domain0/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu6/domain1/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu7/domain0/busy_factor +echo 1 > /proc/sys/kernel/sched_domain/cpu7/domain1/busy_factor + +echo 'final checking' +set -v + +cat /sys/kernel/debug/sched_features +cat /proc/sys/kernel/sched_is_big_little +cat /proc/sys/kernel/sched_sync_hint_enable +cat /proc/sys/kernel/sched_initial_task_util +cat /proc/sys/kernel/sched_cstate_aware + +cat /proc/sys/kernel/sched_use_walt_cpu_util +cat /proc/sys/kernel/sched_use_walt_task_util +cat /proc/sys/kernel/sched_walt_cpu_high_irqload + +cat /proc/sys/kernel/sched_migration_cost_ns + +cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + +cat /proc/sys/kernel/sched_domain/cpu0/domain0/busy_factor +cat /proc/sys/kernel/sched_domain/cpu0/domain1/busy_factor +cat /proc/sys/kernel/sched_domain/cpu1/domain0/busy_factor +cat /proc/sys/kernel/sched_domain/cpu1/domain1/busy_factor +cat /proc/sys/kernel/sched_domain/cpu2/domain0/busy_factor +cat /proc/sys/kernel/sched_domain/cpu2/domain1/busy_factor +cat /proc/sys/kernel/sched_domain/cpu3/domain0/busy_factor +cat /proc/sys/kernel/sched_domain/cpu3/domain1/busy_factor +cat /proc/sys/kernel/sched_domain/cpu4/domain0/busy_factor +cat /proc/sys/kernel/sched_domain/cpu4/domain1/busy_factor +cat /proc/sys/kernel/sched_domain/cpu5/domain0/busy_factor +cat /proc/sys/kernel/sched_domain/cpu5/domain1/busy_factor +cat /proc/sys/kernel/sched_domain/cpu6/domain0/busy_factor +cat /proc/sys/kernel/sched_domain/cpu6/domain1/busy_factor +cat /proc/sys/kernel/sched_domain/cpu7/domain0/busy_factor +cat /proc/sys/kernel/sched_domain/cpu7/domain1/busy_factor -- 1.9.1