Android 性能优化

查看日志

main:
lowmemorykiller:
lowmemorykiller: Kill 'com.transsion.aichargeprovider'
anr in: anr的时间
CPU信息: total:
查看应用安装:DexInv|dex2oat32: dex2oat took
看温度:previous/current
rsrq:查看网络

event:
displayed //查看启动时间
display 0 //查看启动屏幕参数
低内存查杀信息:killinfo
ANR时间点:am_anr
查看进程申请的内存:am_pss
启动进程:am_proc_start

sys:
anr in: anr时的系统信息
start u0: 启动的三方进程
start proc:应用启动方式

kernel:
看温度:thermal_get_ap_ntc_temp
		zone =
ppm:查看温控
cpufreq:CPU频率
查看时间:UTC

未知:
丢帧:frames

游戏性能优化

提升应用GPU

<Package name="应用包名">
    <Activity name="应用中需要设定生效的activity名">      // Common表示对所有页面生效,可根据实际情况设置
        <FPS value="Common">      //表示always enable这部分的配置,适用于所有帧率档位
            <WINDOW mode="Common">
                <data cmd="PERF_RES_CPUFREQ_MIN_CLUSTER_0" param1="3000000"></data>     // 设置CPU cluster0的最小频率为最高频,要求的最小频率可以自己调整
                <data cmd="PERF_RES_CPUFREQ_MIN_CLUSTER_1" param1="3000000"></data>      // 设置CPU cluster1的最小频率为最高频,要求的最小频率可以自己调整
                <data cmd="PERF_RES_GPU_FREQ_MIN" param1="0"></data>      // 设置GPU档位,0表示最高
                <data cmd="PERF_RES_DRAM_OPP_MIN" param1="0"></data>      // 设置DRAM档位,0表示最高
                <data cmd="PERF_RES_DRAM_CM_MGR" param1="1"></data>     // DRAM更积极
                <data cmd="PERF_RES_SCHED_BOOST" param1="1"></data>       // 大核优先
                <data cmd="PERF_RES_SCHED_UCLAMP_MIN_TA" param1="100"></data>  // 提升GPU上大核的比例
             </WINDOW>
         </FPS>
    </Activity>
</Package>

fstb.cfg
com.tgc.sky.android 1 30-30

需要root权限:
影响性能的主要是CPU/GPU/DRAM三个方面,拉满C/G/M的目的是让相关流程更快的执行完。这三个都拉到最高,等于整机性能已经达到极限了。
请贵司根据kernel版本选择相应的cmd把C/G/M都拉到最高频后再测试下是否有改善?若改善不大,则说明达到cpu bound

kernel-4.1*:
// CPU
adb shell "echo 0 0 > /proc/ppm/policy/ut_fix_freq_idx"      // 固定最大频率
adb shell "echo LL_maxcore L_maxcore > /proc/ppm/policy/ut_fix_core_num"      // 所有核数全开,LL_maxcore、L_maxcore 表示小核、大核的最大个数
例:
adb shell "echo 0 0 > /proc/ppm/policy/ut_fix_freq_idx"
adb shell "echo 6 2 > /proc/ppm/policy/ut_fix_core_num"
查看当前cpufreq
adb shell "cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq"
// GPU
adb shell "cat /proc/gpufreq/gpufreq_opp_dump"      // 确认GPU所支持的档位
adb shell "echo xxx > /proc/gpufreq/gpufreq_opp_freq"      // 将最大值设置下去,因platform不同,所支持的最大值不同
例:
[0] freq = 850000, volt = 80000, vsram = 90000, gpufreq_power = 935
[1] freq = 823000, volt = 78750, vsram = 88750, gpufreq_power = 885
则gpufreq最大值为850000,即adb shell "echo  850000 > /proc/gpufreq/gpufreq_opp_freq"
查看当前gpufreq
adb shell "cat /proc/gpufreq/gpufreq_var_dump"
// DDR
adb shell "cat sys/devices/platform/10012000.dvfsrc/helio-dvfsrc/dvfsrc_opp_table"      // 确认DDR 各档位对应频点
adb shell "echo 0 > /sys/devices/platform/10012000.dvfsrc/helio-dvfsrc/dvfsrc_force_vcore_dvfs_opp"      // DDR 固定最大频
查看当前DDR freq
adb shell "cat /sys/devices/platform/10012000.dvfsrc/helio-dvfsrc/dvfsrc_dump | grep -e uv -e khz"
// DRAM
adb shell "cat /sys/devices/platform/10012000.dvfsrc/helio-dvfsrc/dvfsrc_opp_table" // 查看DRAM档位
adb shell "echo 0 > /sys/devices/platform/10012000.dvfsrc/helio-dvfsrc/dvfsrc_req_ddr_opp" // DRAM 固定最大频
adb shell "echo 0 > /proc/perfmgr/boost_ctrl/dram_ctrl/ddr"
查看当前频率
adb shell "cat /sys/devices/platform/10012000.dvfsrc/helio-dvfsrc/dvfsrc_dump"
kernel-5.10// CPU
adb shell "echo LL_Core LL_Freqmin LL_Freqmax > /proc/cpuhvfs/cpufreq_debug"
adb shell "echo L_Core L_Freqmin L_Freqmax > /proc/cpuhvfs/cpufreq_debug"
例:
adb shell "echo 0 2000000 2000000 > /proc/cpuhvfs/cpufreq_debug"
adb shell "echo 6 2200000 2200000 > /proc/cpuhvfs/cpufreq_debug"
查看当前cpufreq
adb shell "cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq"
// GPU
adb shell "cat /proc/gpufreqv2/gpu_working_opp_table"      // 确认GPU所支持的档位
adb shell "echo 0 > /proc/gpufreqv2/fix_target_opp_index"      // 将最大值设置下去
查看当前gpufreq
adb shell "cat /proc/gpufreqv2/gpufreq_status | grep 'STACK OPP'"
adb shell "cat /proc/gpufreqv2/gpufreq_status"
// DDR
adb shell "cat /sys/kernel/helio-dvfsrc/dvfsrc_opp_table"       // 确认DDR 各档位对应频点
adb shell "echo 0 > /sys/kernel/helio-dvfsrc/dvfsrc_force_vcore_dvfs_opp"      // DDR 固定最大频
查看当前DDR freq
adb shell "cat /sys/kernel/helio-dvfsrc/dvfsrc_dump | grep -e uv -e khz"
// DRAM
adb shell "cat /sys/kernel/helio-dvfsrc/dvfsrc_opp_table" // 查看DRAM档位
adb shell "echo 0 > /sys/kernel/helio-dvfsrc/dvfsrc_force_vcore_dvfs_opp" // DRAM 固定最大频
查看当前频率
adb shell "cat /sys/kernel/helio-dvfsrc/dvfsrc_dump"


强制开关FPSGO
adb shell "echo 0 > /sys/kernel/fpsgo/common/force_onoff"(01开2free)

关闭powerhal
adb "setprop persist.vendor.powerhal.enable 0"

芯片跑分

4+64 4+128,会影响ROM存储性能里面的应用存储速度,顺序写速度

查看游戏内分辨率

进入游戏执行adb shell dumpsys SurfaceFlinger >111.txt

然后在文档里面搜索display 0

查看开机内存

adb shell dumpsys meminfo >623.txt
adb shell cat proc/meminfo >623mem.txt

日志查看启动时间

displayed //查看启动时间
display 0 //查看启动屏幕参数

查看系统配置参数

adb shell pm list package       # 列出所有应用的包名
adb shell pm path <pkg name>    # 列出对应包名.apk的位置
adn shell pm install <apk path> # 安装应用
adb shell pm clear <pkg name>   # 清除对应包名应用的数据

adb shell getprop
adb shell getprop ro.lmk.swap_free_low_percentage //低内存查杀百分比
adb shell getprop ro.lmk.swap_util_max //高强度低内存查杀百分比

查看整机最大进程数
dumpsys activity settings |grep CUR_MAX_CACHED_PROCESSES

低内存查杀

手机日志

*#*#9646633#*#*

命令查看信息

查看当前应用包名:adb shell dumpsys window | findstr mCurrentFocus

强装指令:adb install --bypass-low-target-sdk-block


查看CPU频率(root):adb shell cat /sys/devices/system/cpu/cpufreq/policy*/cpuinfo_cur_freq

解密:python powerhal_encrypt.py -d power_app_cfg.xml power_app_cfg.xml

ANR分析

ANR的四种种类:点击超时,广播申请超时,系统响应超时,content超时
1.查找ANR的原因,如果有异常进程
2.通过异常进程PID在main中查找对应的异常问题,如果异常问题是线程导致
3.通过线程TID在bugreport中查找对应的进程,然后再main中通过进程PID查找异常应用proc_start

posted @   屈家全  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示