[Android] 性能工具Systrace的使用

xiaoxiao2025-10-08  58

Systrace 是用于收集和检测设备在运行过程中的时序信息的一个脚本工具,它结合了来自Android内核的数据,例如CPU调度程序,磁盘活动和应用程序线程,最终会以HTML的形式报告。

如何使用systrace

Step1.安装systrace 在android studio中,Tools -> Android -> SDK Manager -> SDK Tools,点击Android SDK platform-Tools并安装,安装完成后,进入/platform-tools/systrace中,systrace脚本便位于这里。Step2.安装python systrace是一个python脚本,因此需要安装Python才能运行: sudo apt-get install python3.6 Step3.连接手机

使用USB连接要测试的手机,并打开USB调试开关。

完成以上步骤,就可以进入android-sdk/platform-tools/systrace使用systrace了,下面来看看运行systrace时的一些命令。

命令

systrace运行的命令格式如下:

python systrace.py [options] [category1 [category2 ...]]

options表示选项,category表示需要抓取的trace类别,默认抓取所有的类别,也可以进行指定。

常用options有:

Global optionsDescription-h |–help获取帮助信息.-l | --list-categories列出连接设备上所有的trace category.-o file.html指定一个报告结果的html文件-t N设定一个时间(秒),到达时间后,自动结束,不指定时按Enter键结束

如:

$ python systrace.py -o mynewtrace.html sched freq idle am wm gfx view \ binder_driver hal dalvik camera input res

可以通过如下命令查看所有的category:

$ python systrace.py -l gfx - Graphics input - Input view - View System webview - WebView wm - Window Manager am - Activity Manager sm - Sync Manager audio - Audio video - Video camera - Camera hal - Hardware Modules res - Resource Loading dalvik - Dalvik VM rs - RenderScript bionic - Bionic C Library power - Power Management pm - Package Manager ss - System Server database - Database network - Network adb - ADB vibrator - Vibrator aidl - AIDL calls pdx - PDX services sched - CPU Scheduling irq - IRQ Events i2c - I2C Events freq - CPU Frequency idle - CPU Idle disk - Disk I/O load - CPU Load sync - Synchronization workq - Kernel Workqueues memreclaim - Kernel Memory Reclaim regulators - Voltage and Current Regulators binder_driver - Binder Kernel driver binder_lock - Binder global lock trace NOTE: more categories may be available with adb root

其他的选项使用较少,就不列举了。 通过以上的这些命令,最终将会获得html类型的报告结果,下面我们就看看如何分析该HTML报告。

查看报告

通过chrome浏览器打开html报告,将会出现类似如下图的结果: 左侧这一栏表示各个进程中trace的TraceName,中间则是各个Trace对应的时间轴,可以看到由各种颜色标记。其中绿色表示正常,其他颜色如红色、黄色则表示需要优化。

调查UI性能

Frames

正常情况下,大约以每秒60帧,一帧约16.6ms的速率渲染,如果超过这个时间,F圆圈就会变成红色或者黄色.这时可以点击F圆圈,会给出详细信息,以及可能的解决方案,如下图所示:

对于Android 5.0(API level 21)或者更高的设备,渲染帧的工作在UI Thread和Render Thread这两个线程当中。对于更早的版本,则所有工作在UI Thread上进行.

Alerts

当点击较慢的渲染后(红色F圆圈),会在报告的底部窗格中看到Alert.此外还可以通过点击右侧栏"Alerts"查看所有的警报,通常,一个区域的微小变化或改进可以消除应用程序中的整个警报类别。

在Alert一栏中,列出了所有的Alert,点击后可以查看详细的信息: 点击单个Alert后:

快捷键

以下是操作HTML报告的快捷键,通过这几个键,可以对整个报告进行放大,缩小,搜索,高亮等操作,可以快速的查看测试过程中哪里耗时较多。

KeyDescriptionW放大时间线S缩小时间线A左移时间线D右移时间线f放大当前所选部分0恢复缩放和平移E时间轴置于当前鼠标位置的中心G从所选任务端的开始处显示网格Shift + G从所选任务端的结束处显示网格->在当前选定的时间轴上选择下一个事件<-在当前选定的时间轴上选择上一个事件m高亮显示所选部分?显示帮助/搜索字段Enter逐步搜索结果

参考资料

官方文档

转载请注明原文地址: https://www.6miu.com/read-5037559.html

最新回复(0)