美文网首页perfetto 官方文档翻译
Perfetto 翻译第十九篇-数据来源-ATrace

Perfetto 翻译第十九篇-数据来源-ATrace

作者: David_zhou | 来源:发表于2023-10-15 10:36 被阅读0次

    前言:虽然有翻译软件,虽然有chatgpt,毕竟语言隔阂,对这个工具还是一知半解,因此想通过翻译的方式和大家来一起学习下Perfetto这个强大的工具

    目录

    #####################以下分割线#####################
    英文原文在这里

    ATrace:安卓系统和应用跟踪事件

    在 Android 上,应用可以将自定义切片和计数器跟踪点注入trace。这可以通过以下方法实现:

    此 API 自 Android 4.3(API 级别 18)起可用,比 Perfetto更早。所有这些注解在内部都是通过libcutils API路由的,现在和将来都将继续得到Perfetto的支持。

    有两种类型的trace事件:系统和应用事件。

    系统事件: :仅由使用 libcutils 的 Android 内部发出。这些事件按类别(也称为标签)分组,例如“am”(ActivityManager),“pm”(PackageManager)。有关类别的完整列表,请参阅 Perfetto UI的“Record new trace page of the”页。

    这些类别可用于启用跨多个进程的事件组,而不必担心哪个特定的系统进程发出它们。

    应用事件: 具有相同的系统事件语义。但是,与系统事件不同的是,它们没有任何标记筛选功能(所有应用事件共享同一标记 ATRACE_TAG_APP ),但可以基于每个应用启用。

    有关如何启用系统和应用事件的说明,请参阅下面的 TraceConfig 部分。

    检测开销

    ATrace 每个事件 1-10us 的不可忽视的成本。这是因为每个事件都涉及字符串化、JNI 调用(如果来自native运行环境)以及用户空间 < >内核空间之前的调用,以将标记写入其中 /sys/kernel/debug/tracing/trace_marker (这是最耗时的部分)。

    我们的团队专门针对android,移植一个轻量版的 Tracing SDK 。但目前,建议继续在Android上使用现有的ATrace API。

    UI

    在 UI 级别,这些函数在进程组的范围内创建切片和计数器,如下所示:


    atrace-slices.png
    SQL

    在 SQL 级别,ATrace 事件在标准 slice 和计数表中可用,以及来自其他数据源的其他计数器和 counter 切片。

    切片
    select s.ts, t.name as thread_name, t.tid, s.name as slice_name, s.dur
    from slice as s left join thread_track as trk on s.track_id = trk.id
    left join thread as t on trk.utid = t.utid
    
    企业微信20231016-103402@2x.png
    计数器
    select ts, p.name as process_name, p.pid, t.name as counter_name, c.value
    from counter as c left join process_counter_track as t on c.track_id = t.id
    left join process as p on t.upid = p.upid
    
    企业微信20231016-103429@2x.png
    跟踪配置
    buffers {
      size_kb: 102400
      fill_policy: RING_BUFFER
    }
    
    data_sources {
      config {
        name: "linux.ftrace"
        ftrace_config {
          # Enables specific system events tags.
          atrace_categories: "am"
          atrace_categories: "pm"
    
          # Enables events for a specific app.
          atrace_apps: "com.google.android.apps.docs"
    
          # Enables all events for all apps.
          atrace_apps: "*"
        }
      }
    }
    

    #####################以上分割线#####################

    后记:
    1 本次主要使用百度翻译,虽然被骂,但至少翻译这个工具降低了门槛。
    2 英文文档中的长难句真的是又长又难,基于百度的翻译,然后自己再调整下,水平实在有限。
    3 技术背景知识不够,有些专有名词不知道怎么翻译,也不知道百度翻译的是否准确,功夫在诗外。
    4 万事开头难,中间难不难,还不知道。中间的事后面再说,正确一天翻译一篇。
    5 虽然可能会有人不屑,但总要有人去做不起眼的小事。
    6 google 厉害,这个perfetto 工具也很厉害。君子善假于物也。
    7 工具的使用是最简单的入门,背后还有更多的东西值得学习。
    8 水平实在有限,闻过则喜,希望有更多的人反馈,期待更好的建议

    相关文章

      网友评论

        本文标题:Perfetto 翻译第十九篇-数据来源-ATrace

        本文链接:https://www.haomeiwen.com/subject/fiiobdtx.html