diff options
| author | Dave Daynard <nardholio@gmail.com> | 2015-09-13 02:02:36 -0400 |
|---|---|---|
| committer | doc HD <doc.divxm@gmail.com> | 2015-09-19 00:35:56 +0300 |
| commit | a7c8cd44a2a2ef84afac33c88313ef7022f99b0c (patch) | |
| tree | f048b08e271ce6c70a49f8f9b63530872ab4475c | |
| parent | 4c67229126f1a73fc1f0c9e1081cb78002ba451c (diff) | |
msm8960: factor out power modes
Move readahead to kernel
Set KSM sleep interval to 2 seconds
Don't run KSM during boot
Switch to bfq after boot
Use interactive for the entire boot process, it's well tuned, it can
handle dex2oat
Set boost parameter for interactive while booting
Change-Id: I25f692c3f98e566244fdf716cfb9bb1acd561ed0
| -rw-r--r-- | msm8960.mk | 1 | ||||
| -rw-r--r-- | rootdir/Android.mk | 8 | ||||
| -rw-r--r-- | rootdir/etc/init.qcom.power.rc | 134 | ||||
| -rw-r--r-- | rootdir/etc/init.qcom.rc | 136 |
4 files changed, 144 insertions, 135 deletions
@@ -185,6 +185,7 @@ PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \ fstab.qcom \ init.led.sh \ + init.qcom.power.rc \ init.qcom.rc \ init.qcom.usb.rc \ ueventd.qcom.rc diff --git a/rootdir/Android.mk b/rootdir/Android.mk index d2aa914..3a4a033 100644 --- a/rootdir/Android.mk +++ b/rootdir/Android.mk @@ -1,6 +1,14 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.power.rc +LOCAL_MODULE_TAGS := optional eng +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.qcom.power.rc +LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) LOCAL_MODULE := init.qcom.rc LOCAL_MODULE_TAGS := optional eng LOCAL_MODULE_CLASS := ETC diff --git a/rootdir/etc/init.qcom.power.rc b/rootdir/etc/init.qcom.power.rc new file mode 100644 index 0000000..f2cc4d3 --- /dev/null +++ b/rootdir/etc/init.qcom.power.rc @@ -0,0 +1,134 @@ + +on early-init + setprop sys.io.scheduler noop + setprop sys.perf.profile 1 + +on enable-low-power + write /sys/module/rpm_resources/enable_low_power/L2_cache 1 + write /sys/module/rpm_resources/enable_low_power/pxo 1 + write /sys/module/rpm_resources/enable_low_power/vdd_dig 1 + write /sys/module/rpm_resources/enable_low_power/vdd_mem 1 + write /sys/module/pm_8x60/modes/cpu0/retention/idle_enabled 1 + write /sys/module/pm_8x60/modes/cpu1/retention/idle_enabled 1 + write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1 + write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1 + write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled 1 + write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled 1 + write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled 1 + write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled 1 + write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 1 + write /sys/devices/system/cpu/cpu1/online 1 + write /sys/devices/system/cpu/cpufreq/interactive/min_sample_time 90000 + write /sys/devices/system/cpu/cpufreq/interactive/max_freq_hysteresis 100000 + write /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq 918000 + write /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay 30000 + write /sys/devices/system/cpu/cpufreq/interactive/timer_rate 30000 + write /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load 90 + write /sys/devices/system/cpu/cpufreq/interactive/io_is_busy 1 + write /sys/devices/system/cpu/cpufreq/interactive/boost 1 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 384000 + write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 384000 + chown root system /sys/devices/system/cpu/mfreq + chmod 220 /sys/devices/system/cpu/mfreq + chown system system /sys/devices/system/cpu/cpu1/online + chmod 664 /sys/devices/system/cpu/cpu1/online + # Set DCVS parameters for CPU + write /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us 40000 + write /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us 40000 + write /sys/module/msm_dcvs/cores/cpu0/em_win_size_min_us 100000 + write /sys/module/msm_dcvs/cores/cpu0/em_win_size_max_us 500000 + write /sys/module/msm_dcvs/cores/cpu0/slack_mode_dynamic 0 + write /sys/module/msm_dcvs/cores/cpu0/disable_pc_threshold 1000000 + write /sys/module/msm_dcvs/cores/cpu1/slack_time_max_us 25000 + write /sys/module/msm_dcvs/cores/cpu1/slack_time_min_us 25000 + write /sys/module/msm_dcvs/cores/cpu1/em_win_size_min_us 100000 + write /sys/module/msm_dcvs/cores/cpu1/em_win_size_max_us 500000 + write /sys/module/msm_dcvs/cores/cpu1/slack_mode_dynamic 0 + write /sys/module/msm_dcvs/cores/cpu1/disable_pc_threshold 1000000 + # Set DCVS parameters for GPU + write /sys/module/msm_dcvs/cores/gpu0/slack_time_max_us 20000 + write /sys/module/msm_dcvs/cores/gpu0/slack_time_min_us 20000 + write /sys/module/msm_dcvs/cores/gpu0/slack_mode_dynamic 0 + # Set msm_mpdecision parameters + write /sys/module/msm_mpdecision/slack_time_max_us 45000 + write /sys/module/msm_mpdecision/slack_time_min_us 15000 + write /sys/module/msm_mpdecision/em_win_size_min_us 100000 + write /sys/module/msm_mpdecision/em_win_size_max_us 1000000 + write /sys/module/msm_mpdecision/online_util_pct_min 3 + write /sys/module/msm_mpdecision/online_util_pct_max 25 + write /sys/module/msm_mpdecision/em_max_util_pct 97 + write /sys/module/msm_mpdecision/rq_avg_poll_ms 2 + write /sys/module/msm_mpdecision/mp_em_rounding_point_min 10 + write /sys/module/msm_mpdecision/mp_em_rounding_point_max 85 + write /sys/module/msm_mpdecision/iowait_threshold_pct 50 + # Set permissions for the nodes needed by display on/off hook + chown system system /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us + chown system system /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us + chown system system /sys/module/msm_mpdecision/slack_time_max_us + chown system system /sys/module/msm_mpdecision/slack_time_min_us + chmod 664 /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us + chmod 664 /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us + chmod 664 /sys/module/msm_mpdecision/slack_time_max_us + chmod 664 /sys/module/msm_mpdecision/slack_time_min_us + +on property:sys.boot_completed=1 + setprop sys.io.scheduler bfq + write /sys/devices/system/cpu/cpufreq/interactive/boost 0 + + # Set up KSM + write /sys/kernel/mm/ksm/deferred_timer 1 + write /sys/kernel/mm/ksm/pages_to_scan 100 + write /sys/kernel/mm/ksm/sleep_millisecs 2000 + write /sys/kernel/mm/ksm/run 1 + +on charger + mount_all fstab.qcom + class_start charger + write /sys/devices/system/cpu/cpu1/online 1 + write /sys/module/rpm_resources/enable_low_power/L2_cache 1 + write /sys/module/rpm_resources/enable_low_power/pxo 1 + write /sys/module/rpm_resources/enable_low_power/vdd_dig 1 + write /sys/module/rpm_resources/enable_low_power/vdd_mem 1 + write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1 + write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1 + write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled 1 + write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled 1 + write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled 1 + write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled 1 + write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 0 + write /sys/module/pm_8x60/modes/cpu1/power_collapse/idle_enabled 0 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "powersave" + write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor "powersave" + write /sys/devices/system/cpu/cpu1/online 0 + +on class_start:late_start + trigger enable-low-power + +# CM Performance Profiles + +# Powersave +on property:sys.perf.profile=0 + stop mpdecision + write /sys/devices/system/cpu/cpu1/online 1 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor conservative + write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor conservative + write /sys/class/kgsl/kgsl-3d0/pwrscale/trustzone/governor ondemand + start mpdecision + +# Balanced +on property:sys.perf.profile=1 + stop mpdecision + write /sys/devices/system/cpu/cpu1/online 1 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive + write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor interactive + write /sys/class/kgsl/kgsl-3d0/pwrscale/trustzone/governor ondemand + start mpdecision + +# High performance +on property:sys.perf.profile=2 + stop mpdecision + write /sys/devices/system/cpu/cpu1/online 1 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor performance + write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor performance + write /sys/class/kgsl/kgsl-3d0/pwrscale/trustzone/governor performance + diff --git a/rootdir/etc/init.qcom.rc b/rootdir/etc/init.qcom.rc index c11f236..2397327 100644 --- a/rootdir/etc/init.qcom.rc +++ b/rootdir/etc/init.qcom.rc @@ -26,11 +26,9 @@ # import init.target.rc import init.qcom.usb.rc +import init.qcom.power.rc on early-init - write /sys/block/mmcblk0/queue/scheduler noop - setprop sys.perf.profile 2 - mkdir /firmware-mdm 0771 system system symlink /data/tombstones /tombstones mkdir /efs 0771 system system @@ -220,10 +218,6 @@ on post-fs chown system system /sys/block/mmcblk1/queue/scheduler chmod 0664 /sys/block/mmcblk1/queue/scheduler - # Increase max readahead size to 512 KB - write /sys/block/mmcblk0/queue/read_ahead_kb 512 - write /sys/block/mmcblk1/queue/read_ahead_kb 512 - # for controlling write performance boosting chown system radio /sys/block/mmcblk0/bkops_en chmod 0664 /sys/block/mmcblk0/bkops_en @@ -666,83 +660,6 @@ service iprenew_bt-pan /system/bin/dhcpcd -n disabled oneshot -on property:sys.boot_completed=1 - write /sys/block/mmcblk0/queue/scheduler bfq - write /sys/module/rpm_resources/enable_low_power/L2_cache 1 - write /sys/module/rpm_resources/enable_low_power/pxo 1 - write /sys/module/rpm_resources/enable_low_power/vdd_dig 1 - write /sys/module/rpm_resources/enable_low_power/vdd_mem 1 - write /sys/module/pm_8x60/modes/cpu0/retention/idle_enabled 1 - write /sys/module/pm_8x60/modes/cpu1/retention/idle_enabled 1 - write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1 - write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1 - write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled 1 - write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled 1 - write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled 1 - write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled 1 - write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 1 - write /sys/devices/system/cpu/cpu1/online 1 - write /sys/devices/system/cpu/cpufreq/interactive/min_sample_time 90000 - write /sys/devices/system/cpu/cpufreq/interactive/max_freq_hysteresis 100000 - write /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq 918000 - write /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay 30000 - write /sys/devices/system/cpu/cpufreq/interactive/timer_rate 30000 - write /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load 90 - write /sys/devices/system/cpu/cpufreq/interactive/io_is_busy 1 - write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 384000 - write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 384000 - chown root system /sys/devices/system/cpu/mfreq - chmod 220 /sys/devices/system/cpu/mfreq - chown system system /sys/devices/system/cpu/cpu1/online - chmod 664 /sys/devices/system/cpu/cpu1/online - # Set DCVS parameters for CPU - write /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us 40000 - write /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us 40000 - write /sys/module/msm_dcvs/cores/cpu0/em_win_size_min_us 100000 - write /sys/module/msm_dcvs/cores/cpu0/em_win_size_max_us 500000 - write /sys/module/msm_dcvs/cores/cpu0/slack_mode_dynamic 0 - write /sys/module/msm_dcvs/cores/cpu0/disable_pc_threshold 1000000 - write /sys/module/msm_dcvs/cores/cpu1/slack_time_max_us 25000 - write /sys/module/msm_dcvs/cores/cpu1/slack_time_min_us 25000 - write /sys/module/msm_dcvs/cores/cpu1/em_win_size_min_us 100000 - write /sys/module/msm_dcvs/cores/cpu1/em_win_size_max_us 500000 - write /sys/module/msm_dcvs/cores/cpu1/slack_mode_dynamic 0 - write /sys/module/msm_dcvs/cores/cpu1/disable_pc_threshold 1000000 - # Set DCVS parameters for GPU - write /sys/module/msm_dcvs/cores/gpu0/slack_time_max_us 20000 - write /sys/module/msm_dcvs/cores/gpu0/slack_time_min_us 20000 - write /sys/module/msm_dcvs/cores/gpu0/slack_mode_dynamic 0 - # Set msm_mpdecision parameters - write /sys/module/msm_mpdecision/slack_time_max_us 45000 - write /sys/module/msm_mpdecision/slack_time_min_us 15000 - write /sys/module/msm_mpdecision/em_win_size_min_us 100000 - write /sys/module/msm_mpdecision/em_win_size_max_us 1000000 - write /sys/module/msm_mpdecision/online_util_pct_min 3 - write /sys/module/msm_mpdecision/online_util_pct_max 25 - write /sys/module/msm_mpdecision/em_max_util_pct 97 - write /sys/module/msm_mpdecision/rq_avg_poll_ms 2 - write /sys/module/msm_mpdecision/mp_em_rounding_point_min 10 - write /sys/module/msm_mpdecision/mp_em_rounding_point_max 85 - write /sys/module/msm_mpdecision/iowait_threshold_pct 50 - # Set permissions for the nodes needed by display on/off hook - chown system system /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us - chown system system /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us - chown system system /sys/module/msm_mpdecision/slack_time_max_us - chown system system /sys/module/msm_mpdecision/slack_time_min_us - chmod 664 /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us - chmod 664 /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us - chmod 664 /sys/module/msm_mpdecision/slack_time_max_us - chmod 664 /sys/module/msm_mpdecision/slack_time_min_us - - # Set performance profile - setprop sys.perf.profile 1 - - # Set up KSM - write /sys/kernel/mm/ksm/deferred_timer 1 - write /sys/kernel/mm/ksm/pages_to_scan 100 - write /sys/kernel/mm/ksm/sleep_millisecs 500 - write /sys/kernel/mm/ksm/run 1 - service hdmid /system/bin/hdmid class late_start user system @@ -795,57 +712,6 @@ on property:service.bootanim.exit=1 write /proc/sys/net/ipv6/conf/rmnet_usb2/accept_ra 2 write /proc/sys/net/ipv6/conf/rmnet_usb3/accept_ra 2 -# CM Performance Profiles - -# Powersave -on property:sys.perf.profile=0 - stop mpdecision - write /sys/devices/system/cpu/cpu0/online 1 - write /sys/devices/system/cpu/cpu1/online 1 - write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor conservative - write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor conservative - write /sys/class/kgsl/kgsl-3d0/pwrscale/trustzone/governor ondemand - start mpdecision - -# Balanced -on property:sys.perf.profile=1 - stop mpdecision - write /sys/devices/system/cpu/cpu0/online 1 - write /sys/devices/system/cpu/cpu1/online 1 - write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive - write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor interactive - write /sys/class/kgsl/kgsl-3d0/pwrscale/trustzone/governor ondemand - start mpdecision - -# High performance -on property:sys.perf.profile=2 - stop mpdecision - write /sys/devices/system/cpu/cpu0/online 1 - write /sys/devices/system/cpu/cpu1/online 1 - write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor performance - write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor performance - write /sys/class/kgsl/kgsl-3d0/pwrscale/trustzone/governor performance - -on charger - mount_all fstab.qcom - class_start charger - write /sys/devices/system/cpu/cpu1/online 1 - write /sys/module/rpm_resources/enable_low_power/L2_cache 1 - write /sys/module/rpm_resources/enable_low_power/pxo 1 - write /sys/module/rpm_resources/enable_low_power/vdd_dig 1 - write /sys/module/rpm_resources/enable_low_power/vdd_mem 1 - write /sys/module/pm_8x60/modes/cpu0/power_collapse/suspend_enabled 1 - write /sys/module/pm_8x60/modes/cpu1/power_collapse/suspend_enabled 1 - write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/suspend_enabled 1 - write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/suspend_enabled 1 - write /sys/module/pm_8x60/modes/cpu0/standalone_power_collapse/idle_enabled 1 - write /sys/module/pm_8x60/modes/cpu1/standalone_power_collapse/idle_enabled 1 - write /sys/module/pm_8x60/modes/cpu0/power_collapse/idle_enabled 0 - write /sys/module/pm_8x60/modes/cpu1/power_collapse/idle_enabled 0 - write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "powersave" - write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor "powersave" - write /sys/devices/system/cpu/cpu1/online 0 - service charger /charger class charger critical |
