Android Studio 中 System Trace 的新增功能

image

在 Android Studio 4.0 中,我们已经对 CPU Profiler 的 UI 做了大量调整来提供更加直观的工作流记录,而在 Android Studio 4.1 中,我们基于开发者们的反馈对此功能进行了持续改进,并且新增了更多特性。

我们将会在本文重点介绍 Android StudioSystem Trace 的新增功能,System Trace 也就是 "系统跟踪" 的意思,用来记录短时间内的设备活动,它会生成一个 .trace 跟踪文件,该文件可用于生成系统报告,此报告可帮助您了解如何最有效地提升应用或游戏的性能。System Trace 虽然使用率不高,但它是一款功能强大的 CPU 记录配置。不同于函数跟踪,如 Java Method 或 C/C++ Func Trace,System Trace 跟踪的是系统级的内容,如设备活动 (例如 CPU 核心调度) 和 Android 系统进程 (例如 SurfaceFlinger)。此外,您还可以通过在应用中调用 Trace API,使用 自定义事件 检测您的代码,这样您的自定义事件便会与系统事件一起被收集。当您在排查性能问题时 (例如 UI 卡顿或功耗过高),这些组合数据就会显得十分有用。

一次搞定所有线程

为了便于进行分析,我们将 CPU 的记录从主分析器的时间线中分离了出来。在这个专用视图中,跟踪数据被整理到了 Profiler 窗口的左侧区域中。

Android Studio 4.1 Beta 1 中的 System Trace 界面

您可以通过简单拖拽将某一区域或者区域内的某个元素进行向上或向下移动来重新组织列表。

我们从开发者们的反馈得知,选择每个线程来查看它的调用图 (或 System Trace 的跟踪事件) 是一件很麻烦的事,所以我们将所有线程活动整合到了同一个视图中,从而可以在显示线程状态的同时显示调用图。默认情况下,我们根据线程的繁忙程度对其进行排序,但是您也可以拖放任意一个线程以对其重新排序。

拖放线程来改变列表顺序

您也可以通过单击三角形图标或双击线程名称来折叠或展开每个线程。注意,对于 Java Method Trace 和 C/C++ Function Trace,由于调用栈很深,我们默认情况下会折叠所有线程视图,以便您可以一目了然地查看所有线程数据。

C/C++ Function Trace 默认以折叠状态展示线程数据

为了便于区分,现在每个 System Trace 的跟踪事件都有一个独立的颜色。

System Trace 事件按命名添加了对应颜色

更加直观的导航

新的 Trace UI 使用了改进的时间轴导航方案,我们用主要 - 细节视图替换了以前的水平滚动条。

在顶部,您可以看到一个时间轴,它仅仅映射了跟踪过程而不是整个分析过程。您可以使用范围选择器快速缩小范围到特定的时间段,而下面的部分则会显示对应的详细数据。

使用范围选择器来专注于时间轴的一小部分

在这里您可以进行更加精细的导航操作:

  • 使用 Ctrl (在 Mac 上为 Cmd) + 鼠标滚轮进行缩放;
  • 按住空格键的同时左右拖动鼠标可平移视图;
  • 使用 "WASD" 键缩放和平移视图,就像 Chrome 中的旧版 SysTrace UI 一样 (chrome://tracing)。

从 Android Studio 4.1 Canary 9 开始,您可以通过拖动鼠标在 Thread 部分进行框选。这一操作使您可以精确地选择一个矩形区域,并且只要点击右上角的 Zoom to Selection (或 "M" 键) 便可以放大该区域。您甚至可以跨越多个线程执行选择操作,这个特性在您把相似线程拖放到一起进行检视时十分有用。举例来说,您也许会想对多个辅助线程进行分析,而这种场景在游戏开发中很常见。

框选、拖放与缩放

分析面板

说到分析,我们想着重聊一聊 Android Studio 4.0 中引入的新 Analysis Panel ,它位于 Profiler 窗口的右边一列。

基于您所选择的跟踪记录,在这里可以找到相应的分析数据。当您在左边栏中选择一个线程、堆栈帧或者跟踪事件时,Analysis Panel 将会显示对应的特定信息。举例来说,当您选择了一个线程时,该线程的状态与其他一些有用的信息就会被显示出来。

我们希望 Analysis Panel 能对您有所帮助,所以我们一直在探索使用各种形式来展示这些有用的分析数据。在 CPU Profiler 中,我们已经有了 Top Down、Flame Chart 和 Bottom Up。作为补充,我们在 Android Studio 4.1 Canary 10 中添加了 Summary 选项卡,用于展示线程状态分布、跟踪事件统计等信息。举例来说,我们经常需要深入了解一个反复出现的跟踪事件。Summary 选项卡会显示基本的统计信息 (如计数,最小值,最大值等) 以及所选跟踪事件中运行时间最长的一次事件。您也可以通过从表中选择一行来导航到另一个事件。

统计信息以及跟踪事件中运行时间最长的事件

统计信息以及跟踪事件中运行时间最长的事件

稳定性与性能改进

最后但也同样重要的是,我们还改进了 CPU 记录的性能和稳定性:

  • 我们修复了一些可能导致记录失败的 Bug;
  • 我们从 Android API level 28 开始使用 Perfetto 作为 System Trace 的后台,从而可以从 Android 平台的最新检测技术中获益;
  • 我们还优化了 profiler 的代码,从而显著减少了解析跟踪记录时的内存消耗 (最多达 80%)。这样您便可以开启和解析更长的跟踪信息。请记住,您可以增加 Android Studio 的 最大堆容量 来支持更长时间的追踪。

下载最新的 Android Studio 4.1 预览版 可以尝鲜本文介绍的新特性。也同样欢迎大家 反馈

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352