线程优化模块使用说明
一个使用纯C语言编写,支持定义规则的安卓应用与游戏线程优化程序
一、核心概念与配置
1. 配置文件路径
/data/adb/modules/AppOpt/applist.conf
2. 处理器架构示例(以高通骁龙888八核处理器为例)
采用了4+3+1核心设计:
- 0-3:四颗A55小核(能效核心)
- 4-6:三颗A78中核(性能核心)
- 7:一颗X1大核(高性能核心)
- 0-7:全部核心
二、规则解析与示例
示例1 进程级规则:应用包名=核心范围
com.tencent.tmgp.sgame=4-7
将王者荣耀所有线程绑定到CPU4-7(性能核心)
示例2 线程级规则:应用包名{线程名}=核心范围
com.tencent.tmgp.sgame{UnityMain}=7
精准绑定王者荣耀的UnityMain线程到超大核心7
三、CPU核心范围表示法
- 4-7 ➔ 4到7(CPU4,5,6,7)
- 4,7 ➔ 4与7(CPU4,7)
- 0-3,7 ➔ 0到3与7(CPU0,1,2,3,7)
四、通配符高级用法
com.tencent.tmgp.sgame{Unity*}=6-7
匹配所有Unity开头的线程(如UnityMain、UnityGfxDeviceW)
com.example.app{*Main}=4-6
匹配所有以Main结尾的线程
com.tencent.tmgp.sgame{Job.worker [1-2]}=4-6
匹配名为Job.worker 1与Job.worker 2的线程
com.tencent.tmgp.sgame{Thread-[0-9]*}=4-6
匹配Thread-开头且后一位为数字的线程,例如Thread-123、Thread-0abc
五、规则编写指南
- 线程分配应该遵循高占用线程优先分配性能核心,中/低占用分配到中/小核心簇,避免线程间争抢资源。
- 单个线程在任意时刻只能在一个CPU核心上执行指令,其指令流具有顺序性和依赖性,无法被拆分到多个核心并行处理。
- 线程级规则优先级高于进程级。
王者荣耀优化示例
例如我手机CPU为高通骁龙8 Elite,采用了6+2核心设计,有六颗中核(0-5)与两颗高性能大核(6-7),而王者荣耀UnityMain与UnityGfxDeviceW两个线程CPU占用是最大的,那么我可以将优化规则写为
com.tencent.tmgp.sgame{Unity*}=6-7
com.tencent.tmgp.sgame=0-5
它表示将Unity开头的两个高占用线程绑定到高性能大核,其它线程绑定到0-5。
FTP应用优化示例
com.ftpshare=4-7
例如我手机上有一个FTP共享文件的应用,它的优化不太好,老是跑在小核心上,导致文件共享的速度不够快,那么我为它添加上述规则,就可以提升文件共享速度了。
游戏应用优化逻辑
依旧用王者荣耀举例。假设当前设备是4+3+1核心设计的CPU,我们可以将最高负载的一个线程放超大核7,中等负载放中核4-6,低负载0-6。
可以得出以下4条规则:
com.tencent.tmgp.sgame{UnityMain}=7
com.tencent.tmgp.sgame{UnityGfxDeviceW}=4-6
com.tencent.tmgp.sgame{Job.worker*}=4-6
com.tencent.tmgp.sgame=0-6
将这4条规则保存到applist.conf中即可
六、优化验证与调试
推荐工具:
Scene8
中的线程监视器
- 其它类似的性能分析工具
验证步骤:
- 观察每个线程CPU核心占用后为其合理分配核心
- 这条规则实际性能优化表现(帧率/延迟)
- 合理的线程规划可以让游戏帧率更稳定的同时功耗更低
💡 聪明的你现在已经学会如何使用线程优化模块,并举一反三优化你的应用与游戏了
资源下载