大厂新技术又又又又又又叒来了

一、Android Systrace

Systrace 是 Android4.1 中新增的性能数据采样和分析工具。它可帮助开发者收集 Android 关键子系统(如 SurfaceFlinger/SystemServer/Kernel/Input/Display 等 Framework 部分关键模块、服务,View系统等)的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能。Systrace 的功能包括跟踪系统的 I/O 操作、内核工作队列、CPU 负载以及 Android 各个子系统的运行状况等。在 Android 平台中,它主要由3部分组成:

  • 「内核部分」:Systrace 利用了 Linux Kernel 中的 ftrace 功能。所以,如果要使用 Systrace 的话,必须开启 kernel 中和 ftrace 相关的模块。
  • 「数据采集部分」:Android 定义了一个 Trace 类。应用程序可利用该类把统计信息输出给ftrace。同时,Android 还有一个 atrace 程序,它可以从 ftrace 中读取统计信息然后交给数据分析工具来处理。
  • 「数据分析工具」:Android 提供一个 systrace.py( python 脚本文件,位于 Android SDK目 录/platform-tools/systrace 中,其内部将调用 atrace 程序)用来配置数据采集的方式(如采集数据的标签、输出文件名等)和收集 ftrace 统计数据并生成一个结果网页文件供用户查看。 从本质上说,Systrace 是对 Linux Kernel中 ftrace 的封装。应用进程需要利用 Android 提供的 Trace 类来使用 Systrace.

二、Systrace的使用

使用 Systrace 前,要先了解一下 Systrace 在各个平台上的使用方法,鉴于大家使用Eclipse 和 Android Studio 的居多,所以直接摘抄官网关于这个的使用方法,不过不管是什么工具,流程是一样的:

  • 手机准备好你要进行抓取的界面
  • 点击开始抓取(命令行的话就是开始执行命令)
  • 手机上开始操作(不要太长时间)
  • 设定好的时间到了之后,会将生成 Trace.html 文件,使用 「Chrome」 将这个文件打开进行分析

一般抓到的 Systrace 文件如下:

三、Systrace预备知识

线程状态查看

Systrace 会用不同的颜色来标识不同的线程状态, 在每个方法上面都会有对应的线程状态来标识目前线
程所处的状态. 通过查看线程状态我们可以知道目前的瓶颈是什么, 是 CPU 执行慢还是因为 Binder 调 用, 又或是进行 IO 操作, 又或是拿不到 CPU 时间片
线程状态主要有下面几个:

  • 绿色 : 运行中
    只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执行队列中)。进程调度器的任务就是从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。
  • 蓝色 : 可运行
    线程可以运行但当前没有安排,在等待 cpu 调度
  • 白色 : 休眠中
    线程没有工作要做,可能是因为线程在互斥锁上被阻塞。
  • 橘色 : 不可中断的睡眠态 IO Block
    线程在I / O上被阻塞或等待磁盘操作完成,一般底线都会标识出此时的 callsite :
    wait_on_page_locked_killable
  • 紫色 : 不可中断的睡眠态
    线程在另一个内核操作(通常是内存管理,非 IO 操作)上被阻塞。

好了,小编关于 Systrace的介绍就是这些,让大伙已经初步了解到Systrace,更多的知识点小编已经为大家整理好《Android Performance — Systrace实战演练(附源码)》PDF文档,有需要的文末领取。

目录

进程唤醒信息分析

Systrace 会标识出一个非常有用的信息,可以帮助我们进行跨进程调用相关的分析。

Why 60 fps?

60 fps 的意思是说,画面每秒更新60次,这60次更新,是要均匀更新的,不是说一会快,一会慢,那样视觉上也会觉得不流畅,每秒60次,也就是 1/60 ~= 16.67 ms 要更新一次

SystemServer解读

  • 窗口动画
  • ActivityManagerService
  • WindowManagerService
  • Input
  • Binder
  • HandlerThread
  • ServiceThread

最后

当下做好技术储备才是最重要的事,职业现状我想大家心里也清楚,没办法变改职业,就只能想办法改变自己。自我审视,持续学习,做好规划,以10~20年的职业生涯为基础,未雨绸缪。不要等到40岁还在到处投简历面试,家里等着米下锅,那就太被动了。

《Android Performance — Systrace实战演练(附源码)》资料地址:【点击直达】

我是老皮,热爱Android的博主,欢迎关注我

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值