perfetto 官方文档翻译

Perfetto 介绍第一篇

2023-09-21  本文已影响0人  David_zhou

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

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

Perfetto - 一个用于系统分析、应用程序trace抓取和trace分析的利器

Perfetto是一个用于性能分析和trace分析的生产级开源堆栈工具。它提供用于服务和库,可以用来抓取系统级别和应用级别的trace。也可以用来分析native和 Java 堆内存。Perfetto包括一个使用 SQL 分析跟踪数据的库和一个基于 Web 的 UI 以可视化和探索GB级别大小的trace。

截屏2023-09-22 23.46.49.png

抓取trace

作为工具的核心,Perfetto引入了一种新颖的从用户空间到用户空间的的trace 协议,该协议基于对共享内存缓冲区的直接protobuf序列化。这个trace 协议既能在已经构建好的数据源上使用(安卓+chrome ?),也能通过Tracing SDK 和trace事件库的方式导出到c++应用中。

android和linux 系统上的trace

在Linux和Android上,Perfetto有很多数据来源,这些数据源能够从不同的系统接口收集详细的性能数据。有关完整集合和详细信息,请参阅文档的“数据源”部分。数据来源有以下这些:

Tracing SDK和用户空间检测

Perfetto Tracing SDK让C++开发者也抓取更多的app 特有的trace,既可以自定义事件类型,使用自定义的数据来源,这样更加灵活。也可以简单的使用Track Event Library 这个库,这个库只需要加上类似TRACE_EVENT("category", "event_name", "x", "str", "y", 42)的注解,就可以简单的获得带有时间长度的slices,以及计数器和时间标记信息。

SDK是为跟踪多进程系统和多线程进程而设计的。它基于ProtoZero,这是一个用于在线程本地共享内存缓冲区上直接写入protobuf事件的库。

相同的代码既可以在完全进程模式下工作(在专用线程上托管Perfetto跟踪服务的实例),也可以在系统模式下工作,通过UNIX套接字连接到Linux/Android tracing守护进程,允许将应用程序的instrumentation与系统范围的跟踪事件相结合。

SDK基于可移植的C++17代码,使用主要的C++清理程序(ASan、TSan、MSan、LSan)进行测试。它不依赖于运行时代码修改或编译器插件。

在Chromium 上tracing

Perfetto的设计初衷是取代chrome://tracing这些基础工具,Chromium中的tracing基于Perfetto在所有主要平台(Android、CrOS、Linux、MacOS、Windows)的代码库,因此在这些系统上的trace 大体架构也类型,但在内部使用Chromium Mojo IPC系统,而不是Perfetto自己的UNIX套接字。

默认情况下,tracing在Chromium中以进程内模式工作,只记录Chromium进程发出的数据。在Android(以及Linux上,如果禁用Chromium沙箱)上,跟踪可以在混合进程内+系统模式下工作,将特定于chrome的跟踪事件与Perfetto系统事件相结合。

trace 分析

Perfetto不光能采集trace,而且还包括数据导入,数据解析和查询新旧trace格式的工具。Trace Processor.

Trace Processor是一个可移植的C++17库,它提供了面向列的表存储,专门设计用于将数小时的跟踪数据有效地保存到内存中,并提供了一个基于流行的SQLite查询引擎的SQL查询接口。跟踪数据模型变成了一组SQL表,可以通过极其强大和灵活的方式查询这些表来分析trace数据。

除此之外,跟踪处理器还包括一个基于trace的度量子系统,该子系统由初步的和可扩展的查询组成,可以以JSON或protobuf消息的形式输出关于trace的重点摘要(例如,按进程和线程划分,不同频率状态下的CPU使用情况,)。

基于trace的度量系统可以在性能测试场景或大批量分析或中轻松集成。

Trace Processor还设计用于低延迟查询和构建跟踪可视化工具。如今,Trace Processor被Perfetto UI用作Web Assembly模块,Android StudioAndroid GPU Inspector用作原生C++库。

可视化trace

Perfetto还提供了一个全新的跟踪可视化工具,用于打开和查询长达数小时的跟踪,可在ui.Perfetto.dev上获得。新的可视化工具利用了现代网络平台技术。其基于多线程设计的WebWorkers使UI始终保持响应;Trace Processor和SQLite的分析能力通过WebAssembly在浏览器中完全可用。

Perfetto UI在打开一次后可以完全离线工作。使用UI打开的跟踪由浏览器本地处理,不需要任何服务器端交互。


perfetto-ui-screenshot.png
欢迎参与进来

参与方式

问题反馈

Android 系统的trace ,请点击这里

chrome 系统的trace,请点击这里

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

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

上一篇 下一篇

猜你喜欢

热点阅读