精华内容
下载资源
问答
  • Perfetto字体

    2019-10-22 17:05:31
    Perfetto字体是一款用于包装设计方面的字体
  • Perfetto使用

    千次阅读 2020-01-06 16:31:41
    Perfetto 工具是Android下一代全新的统一的 trace 收集和分析框架,可以抓取平台和app的 trace 信息,是用来取代 systrace 的,但 systrace 由于历史原因也还会一直存在,并且 Perfetto 抓取...

    概述

    • Android 9.0(API级别28)或更高版本的设备上,可以使用 System TracingSystem App 在设备上记录系统跟踪
    • Perfetto 工具是Android下一代全新的统一的 trace 收集和分析框架,可以抓取平台和app的 trace 信息,是用来取代 systrace 的,但 systrace 由于历史原因也还会一直存在,并且 Perfetto 抓取的 trace 文件也可以同样转换成 systrace 视图,如果习惯用 systrace 的,可以用 Perfetto UIOpen with legacy UI 转换成 systrace 视图来看
    • Perfetto 的几个主要特点
      • 可以在线抓取长时间的 trace,可以长达一个小时,另外抓取的文件size也可以达到GB级别,这样就可以在后台开启,让它一直抓取 trace 了,特别适用于那种复现概率很低,又比较严重的性能问题
      • Perfetto 具有很好的可扩展性,它除了提供标准的 tracepoints 之外,例如CPU调度信息,内存信息等,还可以通过 atrace HAL 层扩展,在 Android P当中,Google新增加了一个 atrace HAL 层,atrace 进程可以调用这个HAL的接口来获取当前的扩展信息,相关代码可见 Google 提交,这样如果需要扩展 tracepoints 的话,就可以按照 graphic 的示例添加即可
      • 提供全新的 Perfetto UI 网站,可以在上面通过选取开关的方式,自动生成抓取 trace 的命令,同时可以打开 trace 文件。另外还集成了几种预定义的 trace 分析统计工具,详情可见它的 Metrics and auditors 选项
      • Perfetto 本身是一个框架,关于它的架构和模块的详细介绍,可以参考它的 doc网站,它的源码可以参考 Android Source Tree/external/perfetto 目录,里面有很多的tools和脚本,可以拿来直接使用

    使用

    • 开启 System Tracing
      • 开启开发者选项
      • 进入开发者选项,选择 System Tracing(系统跟踪);开启 Show Quick Setting tile(显示“快捷设置”图块)。或者选择需要跟踪的系统和传感器调用的类别,并选择缓冲区大小(以KB为单位)
      • 打开顶端下滑菜单快速设置面板中的 System Tracing,或者打开开发者选项里 System TracingRecord trace(录制跟踪记录)
      • 通知面板会出现一个 System Tracing 通知,完成需跟踪操作后点击通知面板或者快速设置面板中的 System Tracing,停止 tracing
      • 系统将显示一个 saving trace 的新通知。保存完成后,系统将取消通知并显示第三个通知,System Tracing 已保存
    • 查看 System Tracing
      // Android 10或更高版本上后缀名为 perfetto-trace
      // 其他版本后缀名为 .ctrace
      adb pull data/local/traces .
      
      • (可选,未验证)生成html文件,进入目录: D:\adt\SDK\platform-tools\systrace
        // 似乎只支持python 2.7
        python systrace.py --from-file trace-file-name{.ctrace | .perfetto-trace}
        
      • (可选)在 trace formats 间转换
        // 仅支持python 2.7 且需要GLIBC_2.28版本
        curl https://get.perfetto.dev/traceconv -o traceconv
        chmod +x traceconv
        ./traceconv [text|json|systrace|profile] [input proto file] [output file]
        
        • 也可以在 Perfetto UI 网站上点击 Open with legacy UI 进行转换,但是容易崩溃
      • Perfetto UI 网站打开查看
    • 命令行工具
      • perfetto 是一个命令行工具,在shell环境下执行,同时在手机端也有两个进程: tracedtraced_probes,这两个进程运行在手机端,可能需要执行如下命令才会开启这两个进程,开启这两个进程之后,才能正常抓取trace信息
        adb shell setprop persist.traced.enable 1
        
      • 如果只是使用这个工具的话,只要懂得 perfetto 命令行工具的用法就可以了
      • 参数使用
        • --out 用来指定 trace 输出文件,--config 用来指定配置,例如抓多长时间,间隔多久把内存数据写回文件,抓取哪些 tracepoints 等等,config 文件内容,可以自己手动编写,也可以用Perfetto UI网站生成,另外在 Perfetto 里面默认集成了一个 test 配置,可以使用如下命令抓取一个使用 test configtrace 文件
          $ adb shell perfetto --config :test --out /data/misc/perfetto-traces/trace //使用内置的test配置,然后输出到/data/misc/perfetto-traces/trace
          
        • 抓取完后,把 /data/misc/perfetto-traces/trace 文件内容 pull 出来,然后使用 Perfetto UI 网站打开
    • 自定义Config
      • 目前最方便的配置文件生成方式是使用Perfetto UI 网站来帮助生成,点击 Record new trace 会看到有很多的配置界面
      • 选择想要的 tracepoints 之后,点击 Show Command,将命令内容拷贝出来直接在终端就可以执行,完成之后把 /data/misc/perfetto-traces/trace 这个文件拷贝出来进行分析
    展开全文
  • title: Perfetto for linux-使用 Perfetto 分析调度问题 date: 2020-11-21 22:40 author: gatieme tags: - scheduler - linux - debug categories: - scheduler thumbnail: blogexcerpt: Perfetto 工具是 Android 下...

    title: Perfetto for linux-使用 Perfetto 分析调度问题
    date: 2020-11-21 22:40
    author: gatieme
    tags:
    - scheduler
    - linux
    - debug
    categories:
    - scheduler
    thumbnail:
    blogexcerpt:
    Perfetto 工具是 Android 下一代全新的统一的 trace 收集和分析框架, 在 Android 9.0(API级别28)或更高版本的设备上, 可以使用 System Tracing 的 System App 在设备上记录系统跟踪, 可以抓取平台和app的 trace 信息, 是用来取代 systrace 的, 但 systrace 由于历史原因也还会一直存在, 并且 Perfetto 抓取的 trace 文件也可以同样转换成 systrace 视图.


    CSDN GitHub Blog
    紫夜阑珊-青伶巷草 LDD-LinuxDeviceDrivers/study/debug/tools/perfetto OS 内核实验室

    知识共享许可协议

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处, 谢谢合作

    因本人技术水平和知识面有限, 内容如有纰漏或者需要修正的地方, 欢迎大家指正, 也欢迎大家提供一些其他好的调试工具以供收录, 鄙人在此谢谢啦


    日期 更新
    2021/03/20 将 1.3 节 关于信息安全问题 展开讲解

    1 Perfetto 概述


    1.1 为什么需要 Perfetto


    Perfetto 工具是 Android 下一代全新的统一的 trace 收集和分析框架, 在 Android 9.0(API级别28)或更高版本的设备上, 可以使用 System Tracing 的 System App 在设备上记录系统跟踪, 可以抓取平台和app的 trace 信息

    perfetto_leggcy_ui

    虽然 Perfetto 是用来取代 systrace 的, 但 systrace 由于历史原因也还会一直存在, 并且 Perfetto 抓取的 trace 文件也可以同样转换成 systrace 视图.

    如果习惯用 systrace 的, 可以用 Perfetto UI 的 Open with legacy UI 转换成 systrace 视图来看

    perfetto_leggcy_ui

    1.2 Perfetto 优点


    1. 支持 Android 和 Linux 上的全系统跟踪, 可以在线抓取长时间(可达数小时)的 trace, 子系统跟踪处理器 专门设计用于将数小时的跟踪数据有效地保存到本地中, 并基于流行的SQLite查询引擎公开SQL查询接口支持 SQL 查询. 这样就可以在后台开启, 让它一直抓取 trace 了, 特别适用于那种复现概率很低, 又比较严重的性能问题.

    2. Perfetto 具有很好的可扩展性, 它除了支持标准的 tracepoints(例如CPU调度信息, 内存信息等)之外, 还可以监听系统的多种信息, 比如 procfs 以及 sysfs 接口等; 还可以通过 atrace HAL 层扩展, 在 Android P当中, Google新增加了一个 atrace HAL 层, atrace 进程可以调用这个HAL的接口来获取当前的扩展信息, 比如添加用于记录电池和电量使用的统计信息, 程序的执行路径等. 相关代码可见 Google 提交, 这样如果需要扩展 tracepoints 的话, 就可以按照 graphic 的示例添加即可.

    3. 提供全新的 Perfetto UI 网站, 用于打开的跟踪, 并通过浏览器在本地处理, 不需要任何服务器端交互. 可以在上面通过选取开关的方式, 自动生成抓取 trace 的命令, 同时可以打开 trace 文件. 另外还集成了几种预定义的 trace 分析统计工具, 详情可见它的 Metrics and auditors 选项

    Perfetto 本身是一个框架, 关于它的架构和模块的详细介绍, 可以参考它的 doc 网站, 它的源码可以参考 Android Source Tree 的 /external/perfetto 目录, 里面有很多的tools, 配置和脚本等, 可以拿来直接使用.

    1.3 关于信息安全问题


    注意
    【请知悉】

    本文虽然是在介绍 perfetto 工具, 但是

    1. 用 perfetto 进行数据分析, 数据是否会被传回 google 服务器, 未经考证;

    2. perfetto 抓取的日志中的确包含机器的一些信息;

    3. perfetto 的数据存储格式无法直接解析, 具体涉及的信息也未经剖析;

    所以如果是涉密的数据(比如你在未发布的机器/服务器/开发板/手机等终端产品上抓取的日志).

    1. 没有数据证明, 该数据不会被收集分析.

    2. 因此如果设备或者数据涉及信息安全的相关内容, 请谨慎使用.

    2021/03/20 更新(之前一直纠结于是否更新这段内容, 前段时间跟同事讨论 perfetto 的时候, 说到信息安全问题同时也提到这段内容, 所以今天更新下, 说下自己的理解).
    之前在查阅 google perfetto 的文档的过程中发现了如下描述:

    The Perfetto UI works fully offline after it has been opened once. Traces opened with the UI are processed locally by the browser and do not require any server-side interaction.
    

    上面提到整个 Perfetto UI 打开一次之后就完全脱机运行了, trace 数据的处理都是在本地进行的, 不会做任何服务器请求.

    可以看到 Perfetto UI 的确不是一个本地的网址. 虽然有上述的声明, 但是鉴于国内外信息安全的一贯环境和形势, 建议大家的环境和数据如果涉及隐私信息, 还是谨慎为妙. 毕竟不作恶并不是真的不作恶.

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5qUuBzhX-1616169787582)(https://raw.githubusercontent.com/gatieme/LDD-LinuxDeviceDrivers/master/study/debug/tools/perfetto/01-description/ping_perfetto_ui.png)]

    详细信息参见: Perfetto - System profiling, app tracing and trace analysis.

    当然 perfetto 也为大家提供了自建服务的方式, 参见 build-instructions. 如果担心信息泄露, 建议还是使用自建的服务比较稳妥. 后期我也考虑有时间就自建 peretto 服务写一篇技术分享.

    博主在此提醒, 如果因为不慎使用导致的问题, 本博主不承担任何责任.

    由于我对网络安全不甚了解, 也欢迎有意愿的同学, 可以抓下 perfetto 使用过程中的网络请求, 确认下当前版本是否有数据传回.

    谢谢大家, 小弟在此不甚感激.

    2 Android 上使用 perfetto


    2.1 使能 perfetto


    由于 Perfetto 有一套服务框架, 为了捕获跟踪, 需要运行traced(会话守护程序)和traced_probes(探测和ftrace-interop守护程序).

    默认情况下, 这些服务是没有开启的, 可以看下手机上有没有这两个进程运行来确认这点.

    adb shell "ps -ef | grep -E "traced|traced_probes" | grep -v grep"
    

    如果没有这两个服务在运行, 那么可以使用如下命令来启用 perfetto

    adb shell setprop persist.traced.enable 1
    

    2.2 抓取 trace


    跟 systrace 一样, Perfetto 为我们提供了两种方式来抓取 trace 日志.

    1. 通过 Perfetto UI 中的记录页面, 参照 Quickstart: Record traces on Android.

    2. 使用 perfetto命令行 界面.

    我们自然使用 perfetto CLI 命令行方式来抓取.

    参数使用 描述
    –out 用来指定 trace 输出文件
    –config 用来指定配置, 例如抓多长时间, 间隔多久把内存数据写回文件, 抓取哪些 tracepoints 等等, config 文件内容, 可以自己手动编写, 也可以用 Perfetto UI网站生成
    adb shell perfetto --config :test --out /data/misc/perfetto-traces/trace //使用内置的test配置, 然后输出到/data/misc/perfetto-traces/trace
    

    另外在 Perfetto 里面默认集成了一个 test 配置, 可以使用如下命令抓取一个使用 test config 的 trace 文件

    3 服务器上使用 perfetto


    3.1 编译 perfetto


    下载 perfetto 核心代码

    git clone https://android.googlesource.com/platform/external/perfetto/ && cd perfetto
    

    下载并提取构建依赖项:

    tools/install-build-deps
    

    如果脚本因SSL错误而失败, 请尝试以方式调用该脚本 python3 tools/install-build-deps, 或升级您的openssl库.

    生成所有最常见的GN构建配置:

    tools/build_all_configs.py
    

    构建Linux跟踪二进制文件(在Linux上, 它使用密封的clang工具链, 作为步骤2的一部分下载):

    tools/ninja -C out/linux_clang_release traced traced_probes perfetto
    

    使用tools/tmux下面的便捷脚本时, 此步骤是可选的.

    3.2 使用 perfetto


    perfetto 是一个命令行工具, 在shell环境下执行, 他依赖于系统中运行的的两个服务进程 traced 和 traced_probes 来完成工作.

    Android 通过启用 perfetto 服务来自动运行 traced(会话守护程序)和traced_probes(探测和ftrace-interop守护程序).
    但是 Linux 系统中我们必须手动将这两个服务启动起来.

    3.2.1 一键式 tmux 脚本


    perfetto 为我们提供了 tools/tmux 脚本来完成类似与 Android 上类似的工作, 帮我们启动服务进程, 并设置一个工作面板.

    我们可以使用如下命令通过 tools/tmux 脚本来抓取 10S 调度的日志

    OUT=out/linux_clang_release CONFIG=test/configs/scheduling.cfg tools/tmux -n
    

    perfetto cli 工具运行时候, 需要制定 config 文件, perfetto 默认为我们提供了多个配置模板, 位于仓库路径下 test/configs 目录下.
    上面我们使用的是默认提供的 scheduling 的配置, 我们也可以自定义 config 或者用 perfeto ui 生成 config.

    脚本首先将我们需要的服务程序和 perfetto CLI 工具及其依赖库都拷贝到了 TMP 目录下 /tmp/perfetto.xxxxxx.
    然后使用 tmux 帮我们打开了一个有三个面板的 TMUX 窗口, 从上往下分别启动了: traced, traced_probes 和 perfetto 抓取日志的工作台.
    在最底下的 perfetto 工作面板中, 已经为我们预先填好了抓取 perfetto 的命令, 我们只需要回车就可以抓取 10S 调度日志.

    [本处原来有图片, 动图超出大小无法上传)(https://raw.githubusercontent.com/gatieme/LDD-LinuxDeviceDrivers/master/study/debug/tools/perfetto/perfetto_run_tmux.gif)]

    我们可以使用 Ctrl-B D 退出这个tmux会话
    也可以使用 tmux attach -t demo, 来重新连接大这个 tmux 会话.
    使用关闭它 tmux kill-session -t demo.
    更过关于 tmux 的操作, 请参照博主的另外一篇博客 linux下的终端利器----tmux.
    注意请不要使用 tmux 这篇博客中提供的配置文件, 这篇博客中重新绑定了快捷键, 否则你可能需要重新修改 tmux 脚本或者配置文件.

    脚本会将跟踪到的日志信息以二进制的格式存在到的 protobuf 中, 参照 TracePacket

    3.2.2 手动运行服务


    前面使用 tmux 运行了之后, 我们就清楚的知道启动了那些服务, 以及 perfetto 抓取的命令.

    手动将服务后台启起来, 然后运行 perfetto, 指定 config, 抓取 trace 日志.

    如下所示:

    cd out/linux_clang_release
    
    ./traced_probes &
    
    ./traced &
    
    ./perfetto --txt -c ../../test/configs/scheduling.cfg  -o trace
    

    4 perfetto 的一些技巧


    4.1 自定义Config


    目前最方便的配置文件生成方式是使用Perfetto UI 网站来帮助生成, 点击 Record new trace 会看到有很多的配置界面
    选择想要的 tracepoints 之后 点击 Trace Command, 将命令内容拷贝出来直接在终端就可以执行.

    perfetto_trace_command

    4.2 使用 SQL 查询和分析日志


    子系统 TraceProcessor 基于 SQLite 为 Perfetto 提供了查询和分析数据的能力.
    又作为独立的可执行文件提供: trace_processor.

    关于这部分的详细信息可以参照 Quickstart: SQL-based analysis and trace-based metrics

    4.3 trace 格式转换工具


    Perfetto 提供了一个兼容的 UI 来打开 原来的 systrace, 参见 catapult_trace_viewer.
    不过毕竟是要替代 systrace 的, 因此使用起来有一丢丢问题, 而且也不能打开太的 systrace 文件.

    不过 Perfetto 也提供了一些方法, 让你把你抓到的日志转换成 systrace 格式.

    • 提供的 traceconv 工具将 Perfetto 跟踪转换为其他跟踪格式.

    • 点击 Perfetto 界面的 Legacy UI, 就会把你的日志转换成 systrace 格式并用 catapult_trace_viewer 打开. 你可以点击 save 把你的 systrace 日志保存下来.

    5 参考资料


    Perfetto工具使用简介

    (两百五十七) 学习perfetto(二)——生成perfetto trace

    Perfetto使用

    android-app-performance-analysis-with-perfetto

    perfetto docs

    (七) 下篇 Android 性能优化 Perfetto 详细介绍


    展开全文
  • perfetto,只读镜像.zip

    2019-10-11 08:57:41
    perfetto是一个用于性能检测和跟踪的开源项目
  • 继续学习 https://perfetto.dev/docs/quickstart/android-tracing https://perfetto.dev/docs/concepts/config 之前看的https://ui.perfetto.dev/#!...在普通模式下使用 perfetto 的一般语法如下: adb shell.

    继续学习

    https://perfetto.dev/docs/quickstart/android-tracing

    https://perfetto.dev/docs/concepts/config

    之前看的https://ui.perfetto.dev/#!/record?p=instructions

    其实就是开发者文档里的config文件

     

    1.理论准备

    perfetto普通模式的命令行

    普通模式

    在普通模式下使用 perfetto 的一般语法如下:

         adb shell perfetto [ --txt ] --config CONFIG_FILE
        

    下表列出了在普通模式下使用 perfetto 的可用选项:

    选项 说明
    --config CONFIG_FILE | -c CONFIG_FILE 指定配置文件的路径。在普通模式下,某些配置可能会在配置协议缓冲区中进行编码。此文件必须符合 AOSP trace_config.proto 中定义的协议缓冲区架构。

    根据 AOSP data_source_config.proto 中的定义,您可以使用 TraceConfigDataSourceConfig 成员来选择和配置数据源。

    --txt 指示 perfetto 将配置文件解析为 pbtxt。此标记为实验性标记,不建议您在正式版中启用此标记。

    这两个标记是用来解析config文件的

    至于加不加--txt参考

    https://perfetto.dev/docs/concepts/config

    PBTX vs binary format

    There are two ways to pass the trace config when using the perfetto cmdline client format:

    Text format

    It is the preferred format for human-driven workflows and exploration. It allows to pass directly the text file in the PBTX (ProtoBuf TeXtual representation) syntax, for the schema defined in the trace_config.proto (see reference docs)

    When using this mode pass the --txt flag to perfetto to indicate the config should be interpreted as a PBTX file:

    perfetto -c /path/to/config.pbtx --txt -o trace_file.pftrace

    NOTE: The --txt option has been introduced only in Android 10 (Q). Older versions support only the binary format.

    WARNING: Do not use the text format for machine-to-machine interaction benchmark, scripts and tools) as it's more prone to breakages (e.g. if a field is renamed or an enum is turned into an integer)

    Binary format

    It is the preferred format for machine-to-machine (M2M) interaction. It involves passing the protobuf-encoded binary of the TraceConfig message. This can be obtained passing the PBTX in input to the protobuf's protoc compiler (which can be downloaded here).

    cd ~/code/perfetto  # external/perfetto in the Android tree.
    
    protoc --encode=perfetto.protos.TraceConfig \
            -I. protos/perfetto/config/perfetto_config.proto \
            < config.txpb \
            > config.bin
     

    and then passing it to perfetto as follows, without the --txt argument:

    perfetto -c config.bin -o trace_file.pftrace

    步骤参考

    https://perfetto.dev/docs/quickstart/android-tracing

    adb push config.txt /data/local/tmp/trace_config.txt abb shell 'perfetto --txt -c - -o /data/misc/perfetto-traces/trace < /data/local/tmp/trace_config.txt'

    NOTE: because of strict SELinux rules, on versions of older than Android 11 (R) passing directly the file path as -c /data/local/tmp/config might fail, hence the -c - + stdin piping above.

    Pull the file using adb pull /data/misc/perfetto-traces/trace ~/trace.pftrace and upload to the Perfetto UI.

    The full reference for the perfetto cmdline interface can be found here.

    至于config文件可以在UI界面选择需要trace的categories后看https://ui.perfetto.dev/#!/record?p=instructions

    比如我需要加一个am的categories

    然后点击instructions

    可以看到instructions里多了个am

    config文件截取中间的一段就可以了

    buffers: {
        size_kb: 8960
        fill_policy: DISCARD
    }
    buffers: {
        size_kb: 1280
        fill_policy: DISCARD
    }
    data_sources: {
        config {
            name: "linux.ftrace"
            ftrace_config {
                ftrace_events: "ftrace/print"
                atrace_categories: "am"
            }
        }
    }
    duration_ms: 10000

    比如我如下执行结果

    config源文件

    buffers: {
        size_kb: 8960
        fill_policy: DISCARD
    }
    buffers: {
        size_kb: 1280
        fill_policy: DISCARD
    }
    data_sources: {
        config {
            name: "linux.sys_stats"
            sys_stats_config {
                stat_period_ms: 1000
                stat_counters: STAT_CPU_TIMES
                stat_counters: STAT_FORK_COUNT
            }
        }
    }
    data_sources: {
        config {
            name: "linux.ftrace"
            ftrace_config {
                ftrace_events: "ftrace/print"
                atrace_categories: "gfx"
                atrace_categories: "view"
                atrace_categories: "wm"
                atrace_categories: "am"
                atrace_categories: "rs"
                atrace_categories: "pm"
                atrace_categories: "ss"
            }
        }
    }
    duration_ms: 10000

    执行命令

    F:\learn\systrace\bilibili>adb push perfetto_config.pbtx /data/misc/perfetto-traces/
    perfetto_config.pbtx: 1 file pushed. 0.1 MB/s (784 bytes in 0.006s)
    
    F:\learn\systrace\bilibili>adb shell perfetto --txt --config /data/misc/perfetto-traces/perfetto_config.pbtx --out /data/misc/perfetto-traces/jiatai.perfetto-trace
    perfetto_cmd.cc:604      Connected to the Perfetto traced service, starting tracing for 10000 ms
    perfetto_cmd.cc:677      Wrote 2475170 bytes into /data/misc/perfetto-traces/jiatai.perfetto-trace
    
    F:\learn\systrace\bilibili>adb pull /data/misc/perfetto-traces/jiatai.perfetto-trace ./
    /data/misc/perfetto-traces/jiatai.perfetto-trace: 1 file pulled. 27.4 MB/s (2475170 bytes in 0.086s)

    用官方的把adb shell和子命令分开也是可以的

    F:\learn\systrace\bilibili>adb shell
    raphael:/ # perfetto --txt -c - -o /data/misc/perfetto-traces/trace < /data/misc/perfetto-traces/perfetto_config.pbtx
    perfetto_cmd.cc:604      Connected to the Perfetto traced service, starting tracing for 10000 ms
    perfetto_cmd.cc:677      Wrote 14014 bytes into /data/misc/perfetto-traces/trace
    ata/misc/perfetto-traces/111.trace < /data/misc/perfetto-traces/perfetto_config.pbtx                                  <
    perfetto_cmd.cc:604      Connected to the Perfetto traced service, starting tracing for 10000 ms
    perfetto_cmd.cc:677      Wrote 2755679 bytes into /data/misc/perfetto-traces/111.trace
    raphael:/ # exit
    
    F:\learn\systrace\bilibili>adb pull /data/misc/perfetto-traces/111.trace ./
    /data/misc/perfetto-traces/111.trace: 1 file pulled. 26.4 MB/s (2755679 bytes in 0.099s)

     

    用perfetto打开

     

    2.开发者选项

    https://developer.android.com/topic/performance/tracing/on-device

    没打得开,应该说的就是开发者选项的系统监控

    https://developer.android.google.cn/studio/profile/systrace/on-device

            启用开发者选项(如果尚未启用此选项)。
            打开开发者选项设置屏幕。
            在调试部分中,选择系统跟踪。此时会打开“系统跟踪”应用,其中显示了应用菜单。

            在应用菜单中,启用显示“快捷设置”图块,如图 2 所示。系统会将系统跟踪图块图块添加到快捷设置面板中,如图 1 所示:

    导出trace

        cd /path-to-traces-on-my-dev-machine && \
              adb pull /data/local/traces/ .

     

    3.脚本

    If you are running on a Mac or Linux host, or are using a bash-based terminal on Windows, you can use the following:

    adb shell perfetto \
      -c - --txt \
      -o /data/misc/perfetto-traces/trace \
    <<EOF
    duration_ms: 10000
    
    buffers: {
        size_kb: 8960
        fill_policy: DISCARD
    }
    buffers: {
        size_kb: 1280
        fill_policy: DISCARD
    }
    data_sources: {
        config {
            name: "linux.ftrace"
            ftrace_config {
                ftrace_events: "sched/sched_switch"
                ftrace_events: "power/suspend_resume"
                ftrace_events: "sched/sched_process_exit"
                ftrace_events: "sched/sched_process_free"
                ftrace_events: "task/task_newtask"
                ftrace_events: "task/task_rename"
                ftrace_events: "ftrace/print"
                atrace_categories: "gfx"
                atrace_categories: "view"
                atrace_categories: "webview"
                atrace_categories: "camera"
                atrace_categories: "dalvik"
                atrace_categories: "power"
            }
        }
    }
    data_sources: {
        config {
            name: "linux.process_stats"
            target_buffer: 1
            process_stats_config {
                scan_all_processes_on_start: true
            }
        }
    }
    
    EOF

    window下执行有点问题,后面ubuntu下试试,我自己改文件为bat文件了。。。

    F:\learn\systrace\bilibili>bash.bat
    
    F:\learn\systrace\bilibili>adb shell perfetto \
    perfetto_cmd.cc:441      The TraceConfig is empty
    
    F:\learn\systrace\bilibili>-c - --txt \
    '-c' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    
    F:\learn\systrace\bilibili>-o /data/misc/perfetto-traces/trace \
    '-o' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    此时不应有 <<。
    
    F:\learn\systrace\bilibili><<EOF

    ubuntu试了下可以的,直接把上面的命令保存成.sh执行就可以了

    可以正常打开

     

    4.网页端抓取

    https://ui.perfetto.dev/#!/

    注意ubuntu下使用Google浏览器可以,windows下面试了不行。。。

    点击左侧栏Record new trace,然后详细设置选一些自己感兴趣的,最后点击Start Recording

    点击开始录制,然后会弹出进度条

    录制完成后会自动打开

    我设置了20s 50M google浏览器打开竟然很卡。。。。是Ubuntu配置了太低了么。。

    过会就好了,可以看到生命周期啥的都有

     

    5.总结

    抓trace的方法系统提供了3个,脚本应该是最方便的,其次是开发者选项里的,最差的是config,操作有些复杂

    漏了一个 https://ui.perfetto.dev/#!/

    大多对Ubuntu支持的很好,windows支持的不怎么样。

    展开全文
  • m trying to integrate perfetto in an app so that I can capture system trace from the app only, just like system tracing in developer options. Looked into the source code of Traceur and found things ...
  • <div><ol><li>Update perfetto to latest, see if the warnings are still there</li><li>If so, get them to fix it</li></ol> <p>I tried to compile perfetto stand-alone in debug mode, it does not raise any ...
  • Android 性能分析工具——Perfetto 介绍

    千次阅读 2020-12-09 18:01:25
    Android 性能分析工具——Perfetto 介绍 Perfetto 是 Android 10 中引入的全新平台级跟踪工具。这是适用于 Android、Linux 和 Chrome 的更加通用和复杂的开源跟踪项目。与 Systrace 不同,它提供数据源超集,可让你...

    Android 性能分析工具——Perfetto 介绍


    Perfetto 是 Android 10 中引入的全新平台级跟踪工具。这是适用于 Android、Linux 和 Chrome 的更加通用和复杂的开源跟踪项目。与 Systrace 不同,它提供数据源超集,可让你以 protobuf 编码的二进制流形式记录任意长度的跟踪记录。你可以在 Perfetto 界面中打开这些跟踪记录。

    相对的,Systrace 是平台提供的旧版命令行工具,可记录短时间内的设备活动,并保存在压缩的文本文件中。该工具会生成一份报告,其中汇总了 Android 内核中的数据,例如 CPU 调度程序、磁盘活动和应用线程。

    示例1:

    Perfetto 跟踪记录视图示例,其中显示了与某个应用之间大约 20 秒的交互情况。

    在这里插入图片描述

    示例2:

    Systrace HTML 报告示例,其中显示了与某个应用之间 5 秒的交互情况。

    在这里插入图片描述

    这两份报告都提供了 Android 设备在给定时间段内的系统进程的总体情况。该报告还检查了捕获到的跟踪信息,以突出显示发现的问题(例如界面卡顿或耗电量高)。

    Perfetto 和 Systrace

    Perfetto 可以认为是 Systrace 的升级版,它们之间可以相互切换使用。

    1. 在 Perfetto 界面中打开 Perfetto 文件和 Systrace 文件。在 Perfetto 界面中使用旧版 Systrace 查看器打开 Systrace 文件(使用 Open with legacy UI 链接)。
    2. 使用 traceconv 工具将 Perfetto 跟踪记录转换为旧版 Systrace 文本格式

    注意:Systrace 和 Perfetto 不会收集有关应用进程中代码执行情况的详细信息。如需详细了解应用正在执行哪些方法及其占用了多少 CPU 资源,请使用 Android Studio 中的 CPU 性能剖析器(CPU profiler)。

    运行 perfetto 命令行工具来捕获跟踪记录

    使用 perfetto 工具,我们可以通过 Android 调试桥 (ADB) 在 Android 设备上收集性能信息。perfetto 从您的设备上收集性能跟踪数据时会使用多种来源,例如:

    • 使用 ftrace 收集内核信息
    • 使用 atrace 收集服务和应用中的用户空间注释
    • 使用 heapprofd 收集服务和应用的本地内存使用情况信息

    数据选择

    perfetto 包含以下两种模式,可确定用于记录跟踪数据的数据源:

    • 轻量模式:只能选择一部分数据源,具体来说就是 atrace 和 ftrace。但此模式可提供类似于 systrace 的接口。
    • 普通模式:从协议缓冲区获取其配置,并且可以让您使用 atrace 和 ftrace 之外的数据源,从而更加充分地利用 perfetto 的功能。

    常规选项

    下表列出了在 perfetto 的两种模式下都可使用的选项。

    在这里插入图片描述

    轻量模式

    在轻量模式下使用 perfetto 的一般语法如下:

     adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ]
                 [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]...
    
    

    在这里插入图片描述

    普通模式

    在普通模式下使用 perfetto 的一般语法如下:

     adb shell perfetto [ --txt ] --config CONFIG_FILE
    
    

    在这里插入图片描述

    使用系统工具获取跟踪记录

    在Android 10的手机上,开发者模式新增加了一个“系统跟踪”的功能,我们首先将开发者模式下的“系统跟踪”打开:

    在这里插入图片描述
    在这里插入图片描述

    从“类别”选项中选择我们关注的信息类别:

    在这里插入图片描述

    设置完之后,下拉快捷选项多了个棒棒糖形状的图标:

    在这里插入图片描述

    这个时候杀掉我们需要调试的应用,然后点击开启棒棒糖,接着打开应用,等待应用完全打开之后,再点击一次棒棒糖,结束录制。

    我们保存录制后得到后缀名为“.perfetto-trace”的文件。

    最好,我们就可以在Perfetto 界面中打开这些跟踪记录,进行性能分析了。

    注:很多国产手机,没有“系统跟踪”选项,可以使用 ADB 命令来获取日志。


    **PS:更多精彩内容,请查看 --> 《Android 性能优化》
    **PS:更多精彩内容,请查看 --> 《Android 性能优化》
    **PS:更多精彩内容,请查看 --> 《Android 性能优化》

    展开全文
  • perfetto_cmd.cc:840

    2020-12-25 18:15:22
    <div><pre><code>Failed to invoke perfetto: perfetto_cmd.cc:840 Failed to open /data/misc/perfetto-traces/profile-shell. If you get permission denied in /data/misc/perfetto-traces, the file might have ...
  • As it’s getting long in the tooth, we’re now evaluating perfetto. <p>We have our own input files that need to be preprocessed, and/or fetched from a specific server, so we can’t just use the ...
  • <div><p>Previously we used Perfetto CLI to trace, however, when tracing is started, some ftrace are not set up yet, which results in a gap of empty data at the beginning of the trace. With Perfetto ...
  • -la ./perfetto_unittests Usage: invalid enum spec: e:7zFile_c_2a Usage: invalid enum spec: e:7zFile_c_2a Usage: invalid enum spec: e:7zStream_c_2a Running main() from gtest_main.cc [===&#...
  • <div><p>Query all registered producers from perfetto, parse the output and construct all GPU profiling capabilities. <p>BUG: #3086 Test: manually verified with log.E</p><p>该提问来源于开源项目:...
  • <div><p>When using <code>1.7.0-dev-20191021</code> I get a denial of service when opening the <a href="https://github.com/google/gapid/files/3755024/trace.perfetto.gz">trace.perfetto.gz</a>. ...
  • t seem to be shown in any way in Perfetto UI, and they also aren't discoverable through search. <p>When falling back to the catapult ui in the Perfetto sidebar, these events don't show either....
  • 使用perfetto工具,您可以通过Android 调试桥 (ADB)在 Android 设备上收集性能信息。perfetto从您的设备上收集性能跟踪数据时会使用多种来源,例如: 使用ftrace收集内核信息 使用atrace收集服务和应用中的用户...
  • <div><p>My understanding is that we'll ultimately have a ...s UI logic with the Perfetto synchronization and can be used as a simple demo.</p><p>该提问来源于开源项目:google/gapid</p></div>
  • 本文作者:sonicman,首发于公众号:AndroidPerformance联系方式:voidice#gmail.com转载请先向作者申请前言Perfetto 是 google 开源的...
  • 什么是系统跟踪应用? “系统跟踪”应用是一款用于将设备活动保存到跟踪文件的 Android ...生成的跟踪文件存储在设备的“/data/local/traces”目录下,文件的后缀名为“.perfetto-trace“; 用于解析“.perfett...
  • <div><p>Grabbing with systrace trace.html File, you can see trace_tracing_mark_write defines the string, while Perfetto can only see "running". How to see trace_...google/perfetto</p></div>
  • (两百五十六)学习perfetto(一)

    千次阅读 2020-05-23 22:32:48
    学习... ... trace分析对应的UI网址 https://ui.perfetto.dev/ ...https://perfetto.dev/ ...https://perfetto.dev/docs/ ...Perfetto is a production-grade open-source stack for performance ins..
  • Opened the trace file in Perfetto UI. Works well, except for I cannot see the CPU frequency (should be the height of the bar in the CPU section?). Checked in chrome://tracing - the data is there. <p>I...
  • <p>TIL about Perfetto in Android 10, it's integration with <code>android.os.Trace</code> and we should probably replace <code>TracingDiagnosticListener</code> with one or both of those things. 该...

空空如也

空空如也

1 2 3 4 5
收藏数 82
精华内容 32
热门标签
关键字:

perfetto