ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

十年车机性能优化经验总结系列(一):性能数据采集与 bat 小工具

十年车机性能优化经验总结系列(一):性能数据采集与 bat 小工具 十年车机性能优化经验总结系列一性能数据采集与 bat 小工具一条 bat 命令10 秒拿到车机完整性能快照 —— 把零散的 adb 黑话打包成随手可跑的采集工具系列导航总览 · 一性能数据采集 · 二实车调试绑核与优先级 · 三代码设置优先级Java/Native · 四性能优化方案性能调优最怕「凭感觉改参数」。卡顿到底是 CPU 不够、内存吃紧还是 GPU 掉帧不采集、不量化你永远在猜。本文把实车上最常用的几组 adb 命令整理成清单并封装成一个一键 bat 小工具——插上设备、双击运行10 秒拿到一份完整的车机性能快照。一、核心采集命令命令采集内容说明adb shell COLUMNS512 top -b -d 1 -m 50 -n 1CPU / 进程占用batch 模式采样 1 次取前 50 进程COLUMNS512防止列被截断adb shell cat /proc/meminfo系统内存总览MemTotal / MemFree / Buffers / Cached 等adb shell dumpsys -t 60 meminfo进程级内存明细按进程给出 PSS/USS定位内存大户adb shell cat /sys/kernel/debug/ged/hal/gpu_utilizationGPU 利用率MTK GED 接口部分平台有效原文标记 E02adb shell cat /sys/devices/platform/e5000000.gpu/utilisationGPU 利用率SoC 直读接口部分平台有效原文标记 E04两条 GPU 命令对应不同芯片平台实车上一跑便知哪条有返回没有返回的那条直接忽略即可。二、一键采集 bat 小工具把上面的命令打包成collect_perf.bat双击即可把全部结果按时间戳存到perf_logs\时间\目录方便优化前后对比。完整源码见同目录collect_perf.bat核心逻辑如下echo off chcp 65001 nul 21 setlocal enabledelayedexpansion title Android 性能数据采集工具 :: 检查设备是否已连接 adb get-state nul 21 if errorlevel 1 ( echo [错误] 未检测到 adb 设备请确认 USB 调试已开启且已授权 pause exit /b 1 ) :: 生成带时间戳的输出目录 for /f tokens1-3 delims/- %%a in (date /t) do set d%%a%%b%%c set t%time: 0% set t%t:~0,2%%t:~3,2% set OUTDIRperf_logs\%d%_%t% if not exist %OUTDIR% mkdir %OUTDIR% echo [1/5] CPU / 进程占用 (top)... adb shell COLUMNS512 top -b -d 1 -m 50 -n 1 %OUTDIR%\01_cpu_top.txt echo [2/5] 系统内存概览 (/proc/meminfo)... adb shell cat /proc/meminfo %OUTDIR%\02_meminfo.txt echo [3/5] 进程内存明细 (dumpsys meminfo)... adb shell dumpsys -t 60 meminfo %OUTDIR%\03_dumpsys_meminfo.txt echo [4/5] GPU 利用率 (MTK GED 接口)... adb shell cat /sys/kernel/debug/ged/hal/gpu_utilization %OUTDIR%\04_gpu_ged.txt 2nul echo [5/5] GPU 利用率 (SoC 直读接口)... adb shell cat /sys/devices/platform/e5000000.gpu/utilisation %OUTDIR%\05_gpu_soc.txt 2nul echo 采集完成结果位于 %OUTDIR% pause使用前提电脑已安装 adb 并加入系统PATH设备开启 USB 调试且已授权本机建议以root / 工程机身份运行GPU 利用率接口通常需要更高权限。输出说明每次运行在perf_logs\下生成一个以时间命名的子目录内含 5 个.txt可与优化前后的快照做 diff。三、采集结果怎么看top关注%cpu列与Threads数找出 CPU 占用异常的进程/线程。meminfo重点看MemFree、Buffers、Cached判断系统余量。dumpsys meminfo按进程看TOTAL PSS锁定内存大户dex/art/gpu细分能定位泄漏方向。GPU 利用率接近 100% 说明渲染瓶颈在 GPU长期低位却卡顿问题多半在 CPU 或调度。四、实操注意采样时机要对在用户真实操作启动 App、滑动列表、播放的同一时刻采集空闲态数据无意义。多采几次单次采样有抖动优化前后各采 3 次取中位数更可信。COLUMNS512 不能省默认宽度会截断进程名和参数导致你找不到目标线程。GPU 接口因机而异E02 / E04 两条路径在不同 SoC 上有效性不同跑空就忽略。小结把采集固化成工具是性能调优工程化的第一步。下一篇我们基于采集到的目标线程进入实车调试用taskset绑大核、chrt改调度策略、renice调 nice 值直接在设备上把关键线程扶上高性能通道。
返回列表