听说schedutil很牛,顺畅省电兼得,把interactive调教成schedutil

看到最新出的CPU调速器schedutil,非常羡慕,据说又顺畅又省电!什么?难道是传说中的跑得快不吃草!
其实不然,也就是跑得快少吃草而已,看了网上的一些资料发现,它就是调速快,升得快,降得也快,
有多快呢?它调频时间是1ms,而我们常用的interactive呢?一般检测时间是20ms,延迟20ms,这样一来可能升频就得40ms了。
40ms什么概念呢,手机如果是每秒60帧在显示,那么每一帧时间就是1000ms除以60,大概就是16ms多点,也就是要保证每一帧都顺畅,芯片需要在16ms以内处理好所有事情并输出。
玩60帧的游戏,手机如果是40ms才能升频,那么还没有开始,就已经掉了几帧了呢?
看到这里知道为什么游戏会掉帧了吧,有时候不是手机CPU不够强大,只是程序优化不够好而已。
之前我写过一个贴子,就是为了防止掉帧的,原理是进入游戏后提高手机的最小频率,可以有效减少掉帧,但是比较耗电。
这里我们从另一个方向来看,就是加快升频、降频速度。

测试手机:moto x pro xt1115
系统:官方安卓5.0.2(用官方系统是因为稳定,底层驱动调配得好,驱动不开源的话,这点第三方系统是做不到的,用官方的可以较好地排除更多的影响因素,)

是否需要root:是
特点:顺畅又省电(就像传说中的跑得快不吃草,哈哈,少吃草,少吃草而已,其实就是调速快,真实需要多少频率就尽快给多少频率,减少浪费)顺畅是因为升频快,省电是因为降频也快啊!一切不以顺畅为前提的讲省电都是耍流氓!

为什么选用interactive:开始是想用其它的调速器的,因为条件少的调速器,CPU自身开销应该少点,可惜这个时间有限制,设置不了这么小的timer_rate,interactive感觉可以设置更低的,太过可能不好吧,就设置一样1ms好了(其它调速器设置不了这么低,设置了会跳回去,这个可以设置,也感觉快了,但实际上是否真的有这么快,这个实在看不出来,interactive调速器最快可以设置多少这个暂时没找到相关资料,只有看到一些说不设置的话,会默认20ms)

副作用:太极限了,内核可能不支持,可以试试3楼那个参数(通用版)

主要修改的地方有:

echo disabled > sys/devices/qcom,bcl.39/mode

echo 1 > /sys/devices/system/cpu/cpu1/online
echo 1 > /sys/devices/system/cpu/cpu2/online
echo 1 > /sys/devices/system/cpu/cpu3/online

echo 2265600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 2265600 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
echo 2265600 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
echo 2265600 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq

echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
echo 300000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq

echo interactive > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo interactive > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
echo interactive > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
echo interactive > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor

echo 0 > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
echo 0 > /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration
echo 60 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
echo 1190400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
echo 1 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
echo 0 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
echo 1 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
echo 1190400 > /sys/devices/system/cpu/cpufreq/interactive/sync_freq
echo 99 > /sys/devices/system/cpu/cpufreq/interactive/target_loads
echo 1000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate
echo 1000 > /sys/devices/system/cpu/cpufreq/interactive/timer_slack
echo 1190400 > /sys/devices/system/cpu/cpufreq/interactive/up_threshold_any_cpu_freq
echo 60 > /sys/devices/system/cpu/cpufreq/interactive/up_threshold_any_cpu_load

echo 10 > /sys/module/cpu_boost/parameters/boost_ms
echo 1497600 > /sys/module/cpu_boost/parameters/sync_threshold
echo 10 > /sys/module/cpu_boost/parameters/input_boost_ms
echo 1497600 > /sys/module/cpu_boost/parameters/input_boost_freq

stop mpdecision

这里改的地方有:
关闭BCL保护,防止突然锁核
开启核心
设置CPU最大最小频率,限制一下最大频率也是为了防止四核全部最大频率运行时,电池可能供电不足引起的关机
重新设置一下interactive,这个是因为502系统有bug,重新设置一下可以解除
接着就是主要的interactve的微调参数,
然后就是系统升频部分
最后关闭高通热插拨

用到的软件是:
e-robot汉化版(上传有大小限制,打包成3个,全部下载后放在一起,点任意一个解压出来就一个)
电子-机器人_1.39.part1.rar (1000 KB)
电子-机器人_1.39.part2.rar (1000 KB)
电子-机器人_1.39.part3.rar (814 KB)
设置为每次打开屏幕、关闭屏幕都运行一下,这样最好,因为系统或其它软件也可能会改到这些地方。


不玩游戏时,正常用手机,几乎就看到屏幕在耗电
Screenshot_2018-03-13-11-17-00.png

王者荣耀改机型高帧模式比较稳定,50-61帧波动,基本都在55帧以上(开高帧率耗电太快,不开的话耗电跟屏幕那个差不多) :
Screenshot_2018-03-12-22-39-12.png

图片里的白点黑圈是简悬浮,代替虚拟按键的,虚拟按键直接关闭了,不然游戏时不小心会滑出来点到!

看起来很NB的样子,嘿。。。。

安卓7.1.2这样调节,这个版本多内核兼容,居家旅游必备!(轻度重度使用都没问题,顺畅加省电):
echo disabled > sys/devices/qcom,bcl.39/mode

echo 1 > /sys/devices/system/cpu/cpu1/online
echo 1 > /sys/devices/system/cpu/cpu2/online
echo 1 > /sys/devices/system/cpu/cpu3/online

echo 2496000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 2496000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
echo 2496000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
echo 2496000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq

echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
echo 300000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq

echo interactive > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo interactive > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
echo interactive > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
echo interactive > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor

echo 20000 > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
echo 0 > /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration
echo 80 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
echo 1190400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
echo 1 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
echo 1190400 > /sys/devices/system/cpu/cpufreq/interactive/sync_freq
echo 90 > /sys/devices/system/cpu/cpufreq/interactive/target_loads
echo 20000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate
echo 80000 > /sys/devices/system/cpu/cpufreq/interactive/timer_slack
echo 1190400 > /sys/devices/system/cpu/cpufreq/interactive/up_threshold_any_cpu_freq
echo 60 > /sys/devices/system/cpu/cpufreq/interactive/up_threshold_any_cpu_load

echo 0 > /sys/module/cpu_boost/parameters/boost_ms
echo 0 > /sys/module/cpu_boost/parameters/sync_threshold
echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
echo 1497600 > /sys/module/cpu_boost/parameters/input_boost_freq
echo N > /sys/module/cpu_boost/parameters/load_based_syncs
echo 15 > /sys/module/cpu_boost/parameters/migration_load_threshold

echo Y > /sys/module/msm_thermal/parameters/enabled
echo 0 > /sys/module/msm_thermal/core_control/enabled

stop mpdecision
亮屏1小时加待机1小时,耗电占比图

牛B。赞一个

我草,太牛逼了。
只有傻瓜式的适合我……这太难了:4_86:

大神,你这个调校应该是只适合805的U用吧?