极客之爱 2020-04-10 纯搬运,和本人无任何关系 by 雪舞回风 转载或者引用本文中的内容请注明 基于米1官方源码修改编译 https://github.com/MiCode/mi1_kernel参考 https://github.com/mione-dev/android_kernel_xiaomi_mione_plushttps://github.com/mi1-dev/android_kernel_xiaomi_mione_plus感谢以上 先从一个BUG说起用过 pexcn内核的,或许都遇到过,重启后卡在第二屏再也开不起来的情况,最后只能清空用户数据。 问题出在Dynamic FSync这个存储性能优化的功能上我发的内核不会有这个bug,请放心使用 说说没有用3.4.108的原因: 本来一直是基于3.4.108源码进行修改编译测试的,不过后来发现3.4.108总会有些不稳定重启的问题,所以最后还是果断选择了小米官方3.4.0的源码 在我看来稳定性还是最重要的,升级内核版本只会引入更多的bug,而不会有多少的性能提升。 关于可用运存的提升,从三个方面: ①相机 米1,800w的像素,小于msm8x60支持的最大像素,不支持msm8960的零延时连拍,这里可以挤出多余的保留内存 ②屏幕 米1,480P的屏幕,不需要msm8x60最大支持的1080p那么多的缓存,应该充分发挥米1低分辨率的优势 ③外接显示器 米1不支持外接显示器,所以这部分内存可以free出来 保留了完整的1080p视频播放支持。 本来弄的850mb的运存的,不过后来发现V5相机的HDR模式需要更多的保留内存。 所以最终运存确定为842MB,如果不需要1080p视频播放支持,只支持到720p,或许还能挤出更多的内存。 关于超频: 由于cpu体质不同,不确保超频后的稳定性,就我手上这台来说,超频后还是很稳定的 最后,来张要发布的内核的真实跑分 更新日志: 2015-10-31 1.更新row IO调度器,修复一个bug 2.修改interactivenew调度器,优化可调参数(详见2楼) 3.修复10-19日版本内核在CM11播放视频退出时软重启问题 4.修复一些BUG及重复代码的剔除 没有什么大bug 的话,可能是最后一次更新了 2015-10-19 1.更新各种压缩格式代码,加入lz4压缩格式支持 2.内核改用GCC ARM Embedded 4.9.3编译链编译,lz4压缩 3.加入新版interactive cpu调度器,改名interactivenew (2楼详细解释这个调度器) 4.更新block模块,加入row,Fiops IO调度器,默认调度器修改为row5.更新slab,slub内存分配器代码 6.精简一些无用模块,关闭多数debug,log,stats选项 7.修改默认待机模式,降低离线cpu频率与电压 8.修复时间重置bug 9.优化速度慢质量差的SD卡的可用性 10.加入ksm,默认关闭 11.加入zram,默认关闭 2015-08: 1.扩大可用内存到842MB 2.cpu,gpu,L2超频 3.编译选项优化 4.config文件优化 5.其他修改以及精简 ksm打开方法参考 echo 1 > /sys/kernel/mm/ksm/run zram打开方法参考 echo 256m > /sys/block/zram0/disksize busybox mkswap /dev/block/zram0 busybox swapon /dev/block/zram0 echo 100 > /proc/sys/vm/swappiness 建议128m到256m,开太小不如不开,太大也不好 最好不要直接复制网页上的代码,可能会因为文本编码问题不可用,用我二楼提供的脚本 除了多任务狂人,不建议开启ksm和zram,徒增耗电和性能损失 最新版本下载地址: MIUI V5 用内核: 降压超频1.78g版: mione_boot_3.4.0_v2.5_OC1.78G ========================== CPU MI 1 青春版 1.18G -> 1.56G MI 1/1S 青春版 1.51G -> 1.78G MI 1S 1.67G -> 1.78G ========================== L2 1.4G -> 1.5G ========================== GPU 267Mhz -> 320Mhz ========================== 降压超频,楼主自用,楼主用的相当稳定 链接:http://pan.baidu.com/s/1jGB6vVw 密码:4hzm 降压超频1.89g版:(仅供娱乐) mione_boot_3.4.0_v2.5_OC1.89G ========================== CPU MI 1 青春版 1.18G -> 1.67G MI 1/1S 青春版 1.51G -> 1.89G MI 1S 1.67G -> 1.89G ========================== L2 1.4G -> 1.5G ========================== GPU 267Mhz -> 320Mhz ========================== 基于降压超频版,继续往上超到1.9g,多数人的cpu不能稳定在这个频率,只有体质好的能超到这个频率,所以不要抱太大希望。 米1青春版倒是可以试试这个版本,超到1.67g应该效果不错。 链接:http://pan.baidu.com/s/1jGCSrWE 密码:gikd 默认电压超频1.72g版: mione_boot_3.4.0_v2.5_OC1.72G ========================== CPU MI 1 青春版 1.18G -> 1.51G MI1/1S 青春版 1.51G -> 1.72G MI1S 1.67G -> 1.72G ========================== L2 不超频 ========================= GPU 267Mhz -> 320Mhz ========================== 出于超频稳定性考虑的版本,降压超频1.78g不稳定的可以试试这个版本,稳定的就不推荐这个 链接:http://pan.baidu.com/s/1gdwdyQv 密码:slyn 不超频版: mione_boot_3.4.0_v2.5 只降低了待机频率和电压,无GPU超频,不喜欢超频,喜欢稳定的用这个。 链接:http://pan.baidu.com/s/1qWw1co0 密码:azhg 建议使用第三方recovery刷入,官方recovery可能会因为签名问题无法刷入,未测试。 推荐先线刷这个recovery 链接:http://pan.baidu.com/s/1sjp7Abj 密码:d1bj 喜欢稳定的就用不超频版的,喜欢性能的可以用用超频版尝尝鲜。 CM11用内核: 统一打包: 链接:http://pan.baidu.com/s/1bnyT1If 密码:omeb 跟上面版本相对应,这次只做了3.4.0的版本,CM11我很少用,我不是很清楚有什么bug 上次还发的3.4.108的版本,只能靠长期用CM11的对比下旧版的3.4.108和3.4.0。 其他第三方移植系统,请自行使用厨房解包打包移植 旧版内核下载地址: 链接:http://pan.baidu.com/s/1nt3scOh 密码:28ub 接着附送ROM 还是先说个bug,米1 v5 全系列都有的bug,也是v5卡顿的一个原因 v5从始至终都没有修复这个bug,尽管很多用户反馈了 http://www.miui.com/thread-1112257-1-1.htmlhttp://www.miui.com/forum.php?mod=viewthread&tid=1089105http://www.miui.com/thread-1176208-1-1.htmlhttp://www.miui.com/thread-1051992-1-1.html 这个bug比较隐秘,我也是最近测试的时候才发现的,虽然以前也曾有跑分突然变低的情况,我也不以为然,重启就好了 开机以后的跑分是正常的,因为cpu频率是正常的,问题出现在,待机离线以后,在恢复,cpu1就会被限制在918mhz 一般人根本不会觉察到这个bug,只会觉得手机用久了变慢了。 2015-10-31: 只同步了下内核到2.5版,可以直接刷内核不用重新刷rom 2015-10-22: 1.精简了部分应用 2.build优化 3.相机保存jpg文件优化 4.wifi强度优化 5.主题更新到18.0版本 6.pinyinindex.idf,apns-conf.xml更新到18.0版本 7.更新来电显示运营商,感谢原作者 8.修复cpu1 锁频918mhz的bug 9.root 10.修改温控文件,设置合理数值,避免玩游戏频繁大幅度降频升频带来忽快忽慢的不好体验 大概记得的就这些,没有什么多余花哨的功能,也没有瞎填加的优化。部分借鉴了转身的rom,先行感谢,转身要是觉得内核不错也可以随便拿去用 cpu1锁频918mhz这个bug,大家可以自行提取我rom里面 \system\lib\hw\power.msm8660.so 替换到自己的rom中即可 引用到此文件的请注明本人。 刷ROM前要手动清空用户数据,底包相同的可以不清 最新版下载地址: JMACNAH1.0 轻度精简版 v2.5 链接:http://pan.baidu.com/s/1jGplIhK 密码:56fe JMACNAH1.0 深度精简版 v2.5 链接:http://pan.baidu.com/s/1pJ5qAwF 密码:uctl JMACNAH18.0 轻度精简版 v2.5 链接:http://pan.baidu.com/s/1kTGogoJ 密码:rix4 JMACNAH18.0 深度精简版 v2.5 链接:http://pan.baidu.com/s/1i3CowQD 密码:oo1f 旧版下载地址: 链接:http://pan.baidu.com/s/1kTGnyIV 密码:mrav 简单说下区别,JMACNAH18.0 会比 JMACNAH1.0多占用70MB的运存,但是功能更多更完善稳定 深度精简版 比 轻度精简版 精简了更多功能(比如云服务等等),大概节约20~30MB运存 请自行按需选择 出于稳定性考虑,上面rom中是不超频的内核,想要超频刷完rom后再刷入超频内核即可 我自己现在在用 JMACNAH1.0 深度精简版 + 超频内核 友情提醒:miui v5会在电量低于10%的时候,触发低电量模式,cpu0锁972mhz,cpu1锁594mhz,gpu锁200mhz请勿在低电量模式下,测试rom或者内核的流畅程度 最后编辑: 2020-04-10
纯搬运,和本人无任何关系 by 雪舞回风 转载或者引用本文中的内容请注明 基于米1官方源码修改编译 https://github.com/MiCode/mi1_kernel参考 https://github.com/mione-dev/android_kernel_xiaomi_mione_plushttps://github.com/mi1-dev/android_kernel_xiaomi_mione_plus感谢以上 先从一个BUG说起用过 pexcn内核的,或许都遇到过,重启后卡在第二屏再也开不起来的情况,最后只能清空用户数据。 问题出在Dynamic FSync这个存储性能优化的功能上我发的内核不会有这个bug,请放心使用 说说没有用3.4.108的原因: 本来一直是基于3.4.108源码进行修改编译测试的,不过后来发现3.4.108总会有些不稳定重启的问题,所以最后还是果断选择了小米官方3.4.0的源码 在我看来稳定性还是最重要的,升级内核版本只会引入更多的bug,而不会有多少的性能提升。 关于可用运存的提升,从三个方面: ①相机 米1,800w的像素,小于msm8x60支持的最大像素,不支持msm8960的零延时连拍,这里可以挤出多余的保留内存 ②屏幕 米1,480P的屏幕,不需要msm8x60最大支持的1080p那么多的缓存,应该充分发挥米1低分辨率的优势 ③外接显示器 米1不支持外接显示器,所以这部分内存可以free出来 保留了完整的1080p视频播放支持。 本来弄的850mb的运存的,不过后来发现V5相机的HDR模式需要更多的保留内存。 所以最终运存确定为842MB,如果不需要1080p视频播放支持,只支持到720p,或许还能挤出更多的内存。 关于超频: 由于cpu体质不同,不确保超频后的稳定性,就我手上这台来说,超频后还是很稳定的 最后,来张要发布的内核的真实跑分 更新日志: 2015-10-31 1.更新row IO调度器,修复一个bug 2.修改interactivenew调度器,优化可调参数(详见2楼) 3.修复10-19日版本内核在CM11播放视频退出时软重启问题 4.修复一些BUG及重复代码的剔除 没有什么大bug 的话,可能是最后一次更新了 2015-10-19 1.更新各种压缩格式代码,加入lz4压缩格式支持 2.内核改用GCC ARM Embedded 4.9.3编译链编译,lz4压缩 3.加入新版interactive cpu调度器,改名interactivenew (2楼详细解释这个调度器) 4.更新block模块,加入row,Fiops IO调度器,默认调度器修改为row5.更新slab,slub内存分配器代码 6.精简一些无用模块,关闭多数debug,log,stats选项 7.修改默认待机模式,降低离线cpu频率与电压 8.修复时间重置bug 9.优化速度慢质量差的SD卡的可用性 10.加入ksm,默认关闭 11.加入zram,默认关闭 2015-08: 1.扩大可用内存到842MB 2.cpu,gpu,L2超频 3.编译选项优化 4.config文件优化 5.其他修改以及精简 ksm打开方法参考 echo 1 > /sys/kernel/mm/ksm/run zram打开方法参考 echo 256m > /sys/block/zram0/disksize busybox mkswap /dev/block/zram0 busybox swapon /dev/block/zram0 echo 100 > /proc/sys/vm/swappiness 建议128m到256m,开太小不如不开,太大也不好 最好不要直接复制网页上的代码,可能会因为文本编码问题不可用,用我二楼提供的脚本 除了多任务狂人,不建议开启ksm和zram,徒增耗电和性能损失 最新版本下载地址: MIUI V5 用内核: 降压超频1.78g版: mione_boot_3.4.0_v2.5_OC1.78G ========================== CPU MI 1 青春版 1.18G -> 1.56G MI 1/1S 青春版 1.51G -> 1.78G MI 1S 1.67G -> 1.78G ========================== L2 1.4G -> 1.5G ========================== GPU 267Mhz -> 320Mhz ========================== 降压超频,楼主自用,楼主用的相当稳定 链接:http://pan.baidu.com/s/1jGB6vVw 密码:4hzm 降压超频1.89g版:(仅供娱乐) mione_boot_3.4.0_v2.5_OC1.89G ========================== CPU MI 1 青春版 1.18G -> 1.67G MI 1/1S 青春版 1.51G -> 1.89G MI 1S 1.67G -> 1.89G ========================== L2 1.4G -> 1.5G ========================== GPU 267Mhz -> 320Mhz ========================== 基于降压超频版,继续往上超到1.9g,多数人的cpu不能稳定在这个频率,只有体质好的能超到这个频率,所以不要抱太大希望。 米1青春版倒是可以试试这个版本,超到1.67g应该效果不错。 链接:http://pan.baidu.com/s/1jGCSrWE 密码:gikd 默认电压超频1.72g版: mione_boot_3.4.0_v2.5_OC1.72G ========================== CPU MI 1 青春版 1.18G -> 1.51G MI1/1S 青春版 1.51G -> 1.72G MI1S 1.67G -> 1.72G ========================== L2 不超频 ========================= GPU 267Mhz -> 320Mhz ========================== 出于超频稳定性考虑的版本,降压超频1.78g不稳定的可以试试这个版本,稳定的就不推荐这个 链接:http://pan.baidu.com/s/1gdwdyQv 密码:slyn 不超频版: mione_boot_3.4.0_v2.5 只降低了待机频率和电压,无GPU超频,不喜欢超频,喜欢稳定的用这个。 链接:http://pan.baidu.com/s/1qWw1co0 密码:azhg 建议使用第三方recovery刷入,官方recovery可能会因为签名问题无法刷入,未测试。 推荐先线刷这个recovery 链接:http://pan.baidu.com/s/1sjp7Abj 密码:d1bj 喜欢稳定的就用不超频版的,喜欢性能的可以用用超频版尝尝鲜。 CM11用内核: 统一打包: 链接:http://pan.baidu.com/s/1bnyT1If 密码:omeb 跟上面版本相对应,这次只做了3.4.0的版本,CM11我很少用,我不是很清楚有什么bug 上次还发的3.4.108的版本,只能靠长期用CM11的对比下旧版的3.4.108和3.4.0。 其他第三方移植系统,请自行使用厨房解包打包移植 旧版内核下载地址: 链接:http://pan.baidu.com/s/1nt3scOh 密码:28ub 接着附送ROM 还是先说个bug,米1 v5 全系列都有的bug,也是v5卡顿的一个原因 v5从始至终都没有修复这个bug,尽管很多用户反馈了 http://www.miui.com/thread-1112257-1-1.htmlhttp://www.miui.com/forum.php?mod=viewthread&tid=1089105http://www.miui.com/thread-1176208-1-1.htmlhttp://www.miui.com/thread-1051992-1-1.html 这个bug比较隐秘,我也是最近测试的时候才发现的,虽然以前也曾有跑分突然变低的情况,我也不以为然,重启就好了 开机以后的跑分是正常的,因为cpu频率是正常的,问题出现在,待机离线以后,在恢复,cpu1就会被限制在918mhz 一般人根本不会觉察到这个bug,只会觉得手机用久了变慢了。 2015-10-31: 只同步了下内核到2.5版,可以直接刷内核不用重新刷rom 2015-10-22: 1.精简了部分应用 2.build优化 3.相机保存jpg文件优化 4.wifi强度优化 5.主题更新到18.0版本 6.pinyinindex.idf,apns-conf.xml更新到18.0版本 7.更新来电显示运营商,感谢原作者 8.修复cpu1 锁频918mhz的bug 9.root 10.修改温控文件,设置合理数值,避免玩游戏频繁大幅度降频升频带来忽快忽慢的不好体验 大概记得的就这些,没有什么多余花哨的功能,也没有瞎填加的优化。部分借鉴了转身的rom,先行感谢,转身要是觉得内核不错也可以随便拿去用 cpu1锁频918mhz这个bug,大家可以自行提取我rom里面 \system\lib\hw\power.msm8660.so 替换到自己的rom中即可 引用到此文件的请注明本人。 刷ROM前要手动清空用户数据,底包相同的可以不清 最新版下载地址: JMACNAH1.0 轻度精简版 v2.5 链接:http://pan.baidu.com/s/1jGplIhK 密码:56fe JMACNAH1.0 深度精简版 v2.5 链接:http://pan.baidu.com/s/1pJ5qAwF 密码:uctl JMACNAH18.0 轻度精简版 v2.5 链接:http://pan.baidu.com/s/1kTGogoJ 密码:rix4 JMACNAH18.0 深度精简版 v2.5 链接:http://pan.baidu.com/s/1i3CowQD 密码:oo1f 旧版下载地址: 链接:http://pan.baidu.com/s/1kTGnyIV 密码:mrav 简单说下区别,JMACNAH18.0 会比 JMACNAH1.0多占用70MB的运存,但是功能更多更完善稳定 深度精简版 比 轻度精简版 精简了更多功能(比如云服务等等),大概节约20~30MB运存 请自行按需选择 出于稳定性考虑,上面rom中是不超频的内核,想要超频刷完rom后再刷入超频内核即可 我自己现在在用 JMACNAH1.0 深度精简版 + 超频内核 友情提醒:miui v5会在电量低于10%的时候,触发低电量模式,cpu0锁972mhz,cpu1锁594mhz,gpu锁200mhz请勿在低电量模式下,测试rom或者内核的流畅程度
极客之爱 2020-04-10 旧版的interactive调度器在性能方面绝对是一流的,米1和米2的内核用的都是这个版本。(米1和米2的内核相似度达99.9%,这两个是基于相近版本适配开发的) 但是也有需要省电的童鞋 纵观米1全部的cpu调度器,却找不到一个合理按需调度的,全是要么最高频率,要么最低频率这种极端型的。 关于这个新版的interactive cpu调度器,我要详细写一下参数的设置 以下最高频率,最低频率统一简称最高,最低 target_loads 合理值50~95 (已删除此参数) 当cpu负载超过target_loads时,cpu提升频率,越小频率提升越快,流畅度越好,更耗电 可以对应频率分别设置各个频率时的target_load,比如75 918000:80 1350000:85 这表示, 小于918000的频率target_load为75; 918000到1350000之间的频率target_load为80; 1350000以上的频率target_load为85; 甚至可以对应到每一个频率,但是,采用for循环遍历表的方式实现,效能太差,人为的设置频率的target_load也一点不智能合理。 故删除此参数,新增target_load_base,target_load_slope参数 go_hispeed_load 合理值80~99 hispeed_freq 合理值 (最低+最高)*2/5 到 (最低+最高)/2 当cpu负载超过go_hispeed_load时,直接提升频率到hispeed_freq 不要以为hispeed_freq设的越高性能越好,hispeed_freq还在降频的时候起到阻挠一次频率下降过快的作用,设的太高就失去了这个意义。 这三个值是这个调度器最重要的参数, 追求性能,target_loads 55,go_hispeed_load 85 追求平衡,target_loads 70,go_hispeed_load 90 追求省电,target_loads 85,go_hispeed_load 95 target_load_base 合理值50~95 target_load的基准值,与上面的target_loads相同,删除了对应频率设置的功能。 target_load_slope 合理值54000~324000 target_load斜率的倒数。频率每提升一个target_load_slope,target_load提升1。 实际对应频率的target_load = target_load_base + 频率/target_load_slope 这个参数的作用就是,频率低的时候升频快,提升响应,频率高的时候抑制频率提升。 设置为0,则所有频率的target_load为target_load_base 若设置为负数,则频率低的时候升频慢,频率高的时候快速提升,当然这种方式好像不合理。 target_load_base 必须小于 100 - 最高频率/target_load_slope,才能确保频率可以达到最高频率。 当target_load等于100时,频率就不会再往上提升,如果有需要的话,甚至可以结合target_load_base和target_load_slope来限制最高频率。 最好为54000的倍数,因为msm8260 cpu的每个频率间隔为54000 io_is_busy (已删除此参数) 非零开启,开启后,计算cpu负载的时候,把io等待时间算作cpu负载的时间。开了这一项等同于开启了高性能模式,频率飙升。这也侧面体现了米1性能的不够用,追求响应速度的可以开。其实在高性能的手机里这一项都是打开的,米1不建议开启,米1的发热和续航控制不住,宁可调低target_loads 和 go_hispeed_load 也不开启这一项。 由于开启这一项太耗电,关闭这一项响应太差,故删除此参数,新增iowait_div参数,来细微的设置。 iowait_div 常用值-1,0,1,2 iowait时间的右移值。0则表示iowait时间全部算为空闲。 1则iowait/2为空闲时间,2则iowait/4为空闲时间,3则表示iowait/8为空闲时间,以此类推。 越大负载计算的越高,频率越容易提升,性能越好。 为-1时,所有iowait时间都不算为空闲,性能最佳。 0等同于关闭io_is_busy,-1等同于开启io_is_busy。 最常用的也就-1,0,1,2这几个,其他数值基本不用。 timer_rate 单位:微妙 提升频率的采样时间 above_hispeed_delay 单位:微妙 提升频率到hispeed_freq之上的等待时间 这两个值一般默认20000即可,追求性能的可以设置成10000 timer_slack 单位:微妙 空闲时的最大等待时间,-1关闭,默认即可 min_sample_time 单位:微妙 频率下降前的最小采样时间,默认即可 sampling_down_factor 单位:微妙 当频率最高时,sampling_down_factor会替代min_sample_time,成为频率下降前的最小采样时间,默认0即为min_sample_time boost 非零等同于将最低频率直接设置为hispeed_freq,一般这一项不开设为零 sync_freq 合理值:等于或者略低于up_threshold_any_cpu_freq,0为关闭此功能 up_threshold_any_cpu_load 合理值:70~85左右 up_threshold_any_cpu_freq 合理值:(最低+最高)*2/3 这三项是一块的,当频率小于sync_freq时,如果其他核心的频率大于up_threshold_any_cpu_freq,并且负载大于up_threshold_any_cpu_load,就将当前核心的频率提升到sync_freq 对于异步cpu来说,这是一个非常有用的同步cpu频率的功能,有效的解决了两个异步核心切换时频率差距太大引起的忽快忽慢的问题。 其实还不够理想,不过也足够了。理想情况应该是设置一个同步率,来限制低频核心和高频核心之间的频率最大差距百分比。 要省电的sync_freq设为0,关闭此功能 对于异步的cpu,通过两个核心运行在不同的频率,来达到降低功耗的目的,看似很美好,其实有非常大的性能缺陷。 当你玩着游戏时,cpu0运行在最高频率,cpu1很闲啊,觉得自己该休息了,就运行在最低频率。这时候,突然系统把运行游戏的工作转交给了cpu1,这下cpu1用最低的频率运行着游戏。游戏瞬时速度猛地降了下来,在很短的时间里。经过几个timer_rate的时间,终于cpu1最高频满负荷工作了,然后过了一阵子,系统又把游戏的任务分配给了空闲的cpu0,如此反复。游戏和过渡动画,就在极短的时间里忽快忽慢的运行着。 对于跑分来说,异步cpu还算凑合,因为跑分软件才不管你帧数是忽快忽慢的还是四平八稳的。异步cpu和同步cpu的实际体验差距,要远比跑分的差距来的大,异步cpu只适合那种和显示无关的计算工作。你可以将一个核心的频率限制在最高,另一个核心频率限制在918Mhz,这种常见的高低频率切换的情况,你就知道这是多么糟糕的一种体验。离线一颗核心,单核运行都比这种体验来的好,这才是真的省电。鲁大师跑分的时候,那种帧数的波动,全是出现在核心切换的时候。 说了这么多,对于一般用户也没有实际意义,不如发几个预设的脚本给大家用用。 包括省电,均衡,性能的设置。 还包括ksm,zram的开启 使用方法:解压,用re复制到system文件夹,修改权限全开,点击运行。 最好配合system tuner pro之类的软件,看看cpu调度器的参数修改成功了没有。 当然只有一次有效,如果想开机运行,复制代码到/system/etc/init.qcom.post_boot.sh 如下位置 顺便发个3.4.110版本的内核给大家玩玩好了 从3.4.0打patch到3.4.110,并修复一些bug,包括rej文件以及其他的一些bug修复 没空弄那么多版本,只发超频1.78g的 链接:http://pan.baidu.com/s/1dDBaEvZ 密码:nasr
旧版的interactive调度器在性能方面绝对是一流的,米1和米2的内核用的都是这个版本。(米1和米2的内核相似度达99.9%,这两个是基于相近版本适配开发的) 但是也有需要省电的童鞋 纵观米1全部的cpu调度器,却找不到一个合理按需调度的,全是要么最高频率,要么最低频率这种极端型的。 关于这个新版的interactive cpu调度器,我要详细写一下参数的设置 以下最高频率,最低频率统一简称最高,最低 target_loads 合理值50~95 (已删除此参数) 当cpu负载超过target_loads时,cpu提升频率,越小频率提升越快,流畅度越好,更耗电 可以对应频率分别设置各个频率时的target_load,比如75 918000:80 1350000:85 这表示, 小于918000的频率target_load为75; 918000到1350000之间的频率target_load为80; 1350000以上的频率target_load为85; 甚至可以对应到每一个频率,但是,采用for循环遍历表的方式实现,效能太差,人为的设置频率的target_load也一点不智能合理。 故删除此参数,新增target_load_base,target_load_slope参数 go_hispeed_load 合理值80~99 hispeed_freq 合理值 (最低+最高)*2/5 到 (最低+最高)/2 当cpu负载超过go_hispeed_load时,直接提升频率到hispeed_freq 不要以为hispeed_freq设的越高性能越好,hispeed_freq还在降频的时候起到阻挠一次频率下降过快的作用,设的太高就失去了这个意义。 这三个值是这个调度器最重要的参数, 追求性能,target_loads 55,go_hispeed_load 85 追求平衡,target_loads 70,go_hispeed_load 90 追求省电,target_loads 85,go_hispeed_load 95 target_load_base 合理值50~95 target_load的基准值,与上面的target_loads相同,删除了对应频率设置的功能。 target_load_slope 合理值54000~324000 target_load斜率的倒数。频率每提升一个target_load_slope,target_load提升1。 实际对应频率的target_load = target_load_base + 频率/target_load_slope 这个参数的作用就是,频率低的时候升频快,提升响应,频率高的时候抑制频率提升。 设置为0,则所有频率的target_load为target_load_base 若设置为负数,则频率低的时候升频慢,频率高的时候快速提升,当然这种方式好像不合理。 target_load_base 必须小于 100 - 最高频率/target_load_slope,才能确保频率可以达到最高频率。 当target_load等于100时,频率就不会再往上提升,如果有需要的话,甚至可以结合target_load_base和target_load_slope来限制最高频率。 最好为54000的倍数,因为msm8260 cpu的每个频率间隔为54000 io_is_busy (已删除此参数) 非零开启,开启后,计算cpu负载的时候,把io等待时间算作cpu负载的时间。开了这一项等同于开启了高性能模式,频率飙升。这也侧面体现了米1性能的不够用,追求响应速度的可以开。其实在高性能的手机里这一项都是打开的,米1不建议开启,米1的发热和续航控制不住,宁可调低target_loads 和 go_hispeed_load 也不开启这一项。 由于开启这一项太耗电,关闭这一项响应太差,故删除此参数,新增iowait_div参数,来细微的设置。 iowait_div 常用值-1,0,1,2 iowait时间的右移值。0则表示iowait时间全部算为空闲。 1则iowait/2为空闲时间,2则iowait/4为空闲时间,3则表示iowait/8为空闲时间,以此类推。 越大负载计算的越高,频率越容易提升,性能越好。 为-1时,所有iowait时间都不算为空闲,性能最佳。 0等同于关闭io_is_busy,-1等同于开启io_is_busy。 最常用的也就-1,0,1,2这几个,其他数值基本不用。 timer_rate 单位:微妙 提升频率的采样时间 above_hispeed_delay 单位:微妙 提升频率到hispeed_freq之上的等待时间 这两个值一般默认20000即可,追求性能的可以设置成10000 timer_slack 单位:微妙 空闲时的最大等待时间,-1关闭,默认即可 min_sample_time 单位:微妙 频率下降前的最小采样时间,默认即可 sampling_down_factor 单位:微妙 当频率最高时,sampling_down_factor会替代min_sample_time,成为频率下降前的最小采样时间,默认0即为min_sample_time boost 非零等同于将最低频率直接设置为hispeed_freq,一般这一项不开设为零 sync_freq 合理值:等于或者略低于up_threshold_any_cpu_freq,0为关闭此功能 up_threshold_any_cpu_load 合理值:70~85左右 up_threshold_any_cpu_freq 合理值:(最低+最高)*2/3 这三项是一块的,当频率小于sync_freq时,如果其他核心的频率大于up_threshold_any_cpu_freq,并且负载大于up_threshold_any_cpu_load,就将当前核心的频率提升到sync_freq 对于异步cpu来说,这是一个非常有用的同步cpu频率的功能,有效的解决了两个异步核心切换时频率差距太大引起的忽快忽慢的问题。 其实还不够理想,不过也足够了。理想情况应该是设置一个同步率,来限制低频核心和高频核心之间的频率最大差距百分比。 要省电的sync_freq设为0,关闭此功能 对于异步的cpu,通过两个核心运行在不同的频率,来达到降低功耗的目的,看似很美好,其实有非常大的性能缺陷。 当你玩着游戏时,cpu0运行在最高频率,cpu1很闲啊,觉得自己该休息了,就运行在最低频率。这时候,突然系统把运行游戏的工作转交给了cpu1,这下cpu1用最低的频率运行着游戏。游戏瞬时速度猛地降了下来,在很短的时间里。经过几个timer_rate的时间,终于cpu1最高频满负荷工作了,然后过了一阵子,系统又把游戏的任务分配给了空闲的cpu0,如此反复。游戏和过渡动画,就在极短的时间里忽快忽慢的运行着。 对于跑分来说,异步cpu还算凑合,因为跑分软件才不管你帧数是忽快忽慢的还是四平八稳的。异步cpu和同步cpu的实际体验差距,要远比跑分的差距来的大,异步cpu只适合那种和显示无关的计算工作。你可以将一个核心的频率限制在最高,另一个核心频率限制在918Mhz,这种常见的高低频率切换的情况,你就知道这是多么糟糕的一种体验。离线一颗核心,单核运行都比这种体验来的好,这才是真的省电。鲁大师跑分的时候,那种帧数的波动,全是出现在核心切换的时候。 说了这么多,对于一般用户也没有实际意义,不如发几个预设的脚本给大家用用。 包括省电,均衡,性能的设置。 还包括ksm,zram的开启 使用方法:解压,用re复制到system文件夹,修改权限全开,点击运行。 最好配合system tuner pro之类的软件,看看cpu调度器的参数修改成功了没有。 当然只有一次有效,如果想开机运行,复制代码到/system/etc/init.qcom.post_boot.sh 如下位置 顺便发个3.4.110版本的内核给大家玩玩好了 从3.4.0打patch到3.4.110,并修复一些bug,包括rej文件以及其他的一些bug修复 没空弄那么多版本,只发超频1.78g的 链接:http://pan.baidu.com/s/1dDBaEvZ 密码:nasr