Systrace 的原理、流程及定制
内核工匠 2022-09-29



一、原理和基本流程



Systrace是android性能调试优化的常用工具,它可以收集进程的活动信息,如界面布局、UI渲染、binder通信等;也可以收集内核信息,如cpu调度、IO活动、中断等;这些信息会统一时间轴,在Chrome浏览器中显示出来,非常方便工程师性能调试、优化卡顿等工作。


简易的流程图如下,systrace是基于ftrace实现的,而ftrace 是 Linux 内核中的调试跟踪机制。


  1. 首先systrace指定抓取trace的类别等参数,然后触发手机端的/system/bin/atrace 开启对应文件节点的信息记录,接着atrace会读取 ftrace 的缓存,生成只包含ftrace信息的atrace_raw。


  2. Systrace会进一步收集系统的ps、task等信息,这些信息是为了协助解析atrace_raw中的ftrace信息,比如ps信息可以得到进程的名称,而不是难记的pid号。处理后的ftrace信息将和systrace目录下的prefix.html、systrace_trace_viewer.html、suffix.html整合为一体,成为单个的html文件。


  3. 当浏览systrace信息时,Chrome浏览器借助systrace解析器(通过chrome://tracing访问),解析上面生成的trace.html文件,把其中原始的ftrace信息分门别类,再按照时间轴聚合排列,绘制出不同色块,简洁可观的显示在html页面上。



二、具体实现



Systrace是怎么把系统多种多样的信息都整合进ftrace中的呢?请看下图:



Systrace抓取的trace数据,总体上可以分为两类,一类是Java和Native在用户层发生的函数调用,一类是内核态的事件信息。


用户层的函数调用,其实最终事件记录都是同一个文件节点/sys/kernel/debug/tracing/trace_marker。


此节点允许用户层写入字符串,ftrace会记录该写入操作时的时间戳,当用户在上层调用不同函数时,写入不同的调用信息,比如函数进入和退出分别写入,那么ftrace就可以记录跟踪函数的运行时间。


atrace在处理用户层的多种trace类别时,仅仅是激活不同的TAG,如用户选择了Input类别,则激活ATRACE_TAG_INPUT;选中Graphics则激活ATRACE_TAG_GRAPHICS,记录调用的流程都是一样的,最终都是记录到trace_marker。


内核态的事件信息,则不是统一的,需要激活各自对应的事件节点,让ftrace记录下不同事件的tracepoint。例如激活进程调度信息记录,需要激活如下相关节点:


events/sched/sched_switch/enable

events/sched/sched_wakeup/enable


内核在运行时,根据节点的使能状态,会往ftrace缓冲中打点记录事件。


最终,上述两类事件记录都汇集到同一缓冲中,然后atrace工具会回读抓取,保存下来就是原始的systrace信息。


三、显示定制信息



Systrace的参数设置和使用方法,网络上内容已经不胜枚举,就不再累述。下面讲解一下较少阐述的显示定制信息功能。


一般情况下,默认的systrace各种trace类别已经涵盖了系统的各个方面,足够工程师分析调试了。但某些特定情况下,工程师需要增加自定义的trace类别,并同样集成到systrace中。比如工程师需要观察到内核各个run queue的队列深度,那么他应该怎么做呢?



1.新加定制的trace类别


既然原有的systrace trace不能满足,需要新增一项。可以去frameworks/native/cmds/atrace/atrace.cpp中增加一类category, 如




2.内核增加对应的tracepoint


Systrace是基于ftrace的,那么上面的类别需要在内核中增加对应节点。



在新建的sched_rq_running event中实现输出新增的trace类别的信息,通过上面的1、2两个步骤,在抓取systrace时选中新建类别kernel_runqueue, 则抓取的trace.html将包含sched_rq_running的信息。


假设新的信息如下:




3.显示出sched_rq_running的信息


如果sched_rq_running.html 在 chrome里面打开,我们并没能发现自定义的任何信息显示出来。这个是由于默认的chrome://tracing 解析器并不知道如何解析sched_rq_running的信息。


Systrace能够解析显示出进程调度的sched_wakeup、sched_switch等信息,那是因为chrome://tracing 解析器知道如何解析进程调度信息,如下面格式的内容。



但是并不知道如何解析自定义的sched_rq_running信息。


这时候,我们就需要寻根溯源了,我们先找到systrace的生母,谷歌开源项目https://chromium.googlesource.com/catapult。

 

正是catapult生成了systrace及其解析器的工具。在catapult中,谷歌采用javascript实现了一个跨平台的trace解析工具,我们可以参考tracing/tracing/extras/importer/linux_perf目录下的各种解析器,比如sched_parser.html是用于解析进程调度信息的,power_parser是用于解析cpu频率等信息的,学以致用生成自己定制的sched_rq_running_parser.html。


Catapult的各种解析器,可以理解为先按照trace的类型分类处理,然后加入各个时段的采样值。


如tracing/tracing/extras/importer/linux_perf/power_parser.html


实现了如何解析出cpu频率信息:

-0     (-----) [001] d.Hb   948.300084: cpu_frequency: state=1344000 cpu_id=2


1)power_parser.html注册了cpu_frequency信息由函数cpuFrequencyEvent处理



2) cpuFrequencyEvent分解cpu_frequency信息



3) 把cpu频率采样值加入Clock Frequency信息栏



在我们加入额外的sched_rq_running_parser.html解析器之后,需要使用tracing/tracing_build/generate_about_tracing_contents.py重新生成about_tracing.html和tracing.js(这里需要改名,使之和about_tracing.html中的script脚本名称相同)。


然后使用about_tracing.html作为新的systrace解析器,代替默认的chrome://tracing,这时再把sched_rq_running.html放进来解析,我们就终于可以看到自定义的systrace信息了。




参考文献


1、android源代码


2、catapult源代码

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • RF
  • 射频
  • 通信
  • 无线
  • IP网络测试技术提高高带宽无线网络设备开发水平

    链路自适应(也称为调度),首先是作为3GPP协议下HSDPA技术的一个特点推出的,它是手机无线网络分配射频资源的一种方法。采用这样方法,基站采用的射频协议在每个传输时间间隔(TTI)为下行链路传输提供数据及为上行链路传输分配资源(见图1)。图1:每个TTI必须执行的处理功能。由于TTI可短至1ms,该调度技术提供了极大灵活性,以将流量路由和吞吐率与可用资源匹配起来。它是高通量、稳定和有效利用带宽的...

    昨天
  • CDMA系统发射频段无源互调失真测量

      由二个频率产生的三阶互调失真是现代通信系统中普遍存在的问题。当系统中二个(或更多)的载频信号通过一个无源器件,如天线、电缆、滤波器和双工器时,由于其机械接触的不可靠,虚焊和表面氧化等原因,在不同材料的连接处会产生非线性因素,这就像混频二极管。  二个载频信号(F1和F2)及其二次谐波(2F1和2F2)所进一步产生的最大互调产物就是三阶互调失真(2F1-F2和2F2-F1)。三阶互调产物(IM3...

    昨天
  • CDMA系统发射频段无源互调失真测量

      由二个频率产生的三阶互调失真是现代通信系统中普遍存在的问题。当系统中二个(或更多)的载频信号通过一个无源器件,如天线、电缆、滤波器和双工器时,由于其机械接触的不可靠,虚焊和表面氧化等原因,在不同材料的连接处会产生非线性因素,这就像混频二极管。  二个载频信号(F1和F2)及其二次谐波(2F1和2F2)所进一步产生的最大互调产物就是三阶互调失真(2F1-F2和2F2-F1)。三阶互调产物(IM3...

    昨天
  • TD商务终端的路测与优化测试

    在中国移动集团公司每年组织的TD-SCDMA(以下简称TD)网络自动路测考核中,各省会城市、部分地级市都取得了不俗的成绩,表明TD网络已实现较好的连续覆盖。但是,对于广大的用户来说,TD终端在使用过程中总会遇到这样那样的问题影响使用感知。总结分析,影响用户使用感知的原因可归结为三类:第一是终端不成熟,TD芯片的发展历程相比其他标准要短很多,在终端成熟度上整体滞后;第二是运营商指标考核压力,迫使TD...

    昨天
  • 安立MT8820C射频测试仪支持2G到4G/LTE/MIMO的OTA测试

    Anritsu的多制式射频测试仪集成了ETS-林德格伦的EMQ-100天线测量软件安立(Anritsu)公司和ETS-Lindgren宣布ETS-Lindgren已选择安立MT8820C射频测试仪作为2G到4G/LTE/MIMO 的OTA测试解决方案。作为选择的一部分, MT8820C集成了CTIA-compliant ETS-Lindgren EMQuest™ EMQ-100天线测量软件。目前可...

    昨天
  • R&S超越500 GHz之微波毫米波测量技术

    R&S公司基于近80年的行业测试经验,不断针对射频微波,移动无线及通用电子提供新的解决方案,引导着行业技术方向。在2012年5月6日至8日在深圳举办的2012年全国微波毫米波会议暨2012年微波毫米波科技成果及产品展上,R&S公司将全面展示领先的高达500 GHz的微波毫米波测试仪表和解决方案,其中包括:R&S公司新推出的在射频性能和带宽方面胜过市场上同类的高端仪表的高端频谱分析仪R&S FSW;...

    昨天
  • 基于频谱分析仪二代身份证读卡器测量

    1. 关于RFIDRFID是射频识别(Radio Frequency Identification)的英文缩写,它是一种非接触式的自动识别技术,通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,可识别高速运动物体并能同时识别多个标签。最基本的RFID系统由阅读器(Reader)、电子标签(Tag)亦即应答器(Transponder) 和天线(Antenna)三部分组成。其工作原理是...

    昨天
  • LTE系统RF特性的测量

    对任何LTE设备制造商来说,确保产品符合3GPP标准的要求非常重要,例如TS36.141基站一致性测试和TS36.521 UE一致性规范射频传输与接收。然而,基于这些标准高效准确地呈现诸如OFDM、MIMO和Layer1/2/3等通用射频发射特性极具挑战性。使用特定测试仪器并实现一定的测量过程可以控制测试成本,并有助于加速产品上市。  OFDM射频测试  正交频分复用(OFDM)以及使用高阶64Q...

    昨天
  • 芯通科技推出RCT射频云测试方案

    功率、互调、杂散、效率等射频指标,是决定网络信号的覆盖范围、接通率、能耗主要因素,也是是运营商优化网络、控制运营成本的关键所在。受射频产品品种规格多、指标余量小、批量一致性难等因素影响,目前射频测试行业呈现测试标准难以配置、测试数据难统一分析处理、测试结果难应用等难题。针对这一行业现状,全球领先的射频技术和服务供应商芯通科技推出RCT(Radio Cloud Testing)射频云测试解决方案,解...

    昨天
  • 新型RF测试方案确保汽车无线模块品质

    目前,汽车消费者期望购买到制造精良、可靠、最重要是很安全的通信和信息娱乐系统。现在和未来的汽车制造商面临的挑战是创造可靠的测试方法以确保这些系统的质量。随着产品的生命周期越来越短而车载电子设备越来越复杂,设计者为了应对产品快速上市面临的挑战,需要更为快捷和灵活的解决方案。罗德与施瓦茨公司的设备和系统提供了优良的测量精度和测量速度,能够满足这些要求。图1:罗德与施瓦茨公司用于胎压传感器的RF测试系统...

    昨天
  • 新型RF测试方案确保汽车无线模块品质

    目前,汽车消费者期望购买到制造精良、可靠、最重要是很安全的通信和信息娱乐系统。现在和未来的汽车制造商面临的挑战是创造可靠的测试方法以确保这些系统的质量。随着产品的生命周期越来越短而车载电子设备越来越复杂,设计者为了应对产品快速上市面临的挑战,需要更为快捷和灵活的解决方案。罗德与施瓦茨公司的设备和系统提供了优良的测量精度和测量速度,能够满足这些要求。图1:罗德与施瓦茨公司用于胎压传感器的RF测试系统...

    昨天
  • 基于ATE推动WiMAX射频测试与特征描述

    事实证明,WiMAX收发器件有益于消费电子市场的发展,它们在此找到了多种用途,其中包括把WiFi热点连接到互联网。为确保器件按预想的那样工作,并且使它们迅速上市,器件制造商们需要先进的多功能测试设备和同样先进的测试软件。WiMAX的能力WiMAX是一种射频技术,用来代替有线DSL或电缆来提供“最后一英里”宽带接入。该技术基于IEEE 802.16标准,工作距离为数公里,而WiFi (IEEE 80...

    昨天
下载排行榜
更多
广告