Skip to content

chiheiro/perfetto-python-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Google Perfetto Python SDK (Performance Monitor)

这是一个基于 Google Perfetto 的 Android 性能监控 SDK,支持多版本 Android 设备(Android 9 - 15+)的自动化性能数据采集、分析与持久化。

🚀 功能特性

  • 多版本适配策略
    • Android 9 - 11:自动下发 tracebox 二进制文件,补充 FPS/GPU/Battery 等无法通过 Perfetto 直接获取的指标。
    • Android 12:使用系统内置 perfetto,针对性优化的采集策略。
    • Android 13+:完整利用系统 Perfetto 能力,结合 ADB 补充采集。
  • 全维度指标采集
    • FPS:支持 SurfaceFlinger 刷新率统计。
    • CPU:核心频率 (Freq)、使用率。
    • GPU:Adreno GPU 显存与负载 (针对特定机型适配)。
    • Memory:应用 RSS 内存占用。
    • Battery:电池温度、电量与放电状态。
  • 高性能架构
    • 管道式处理 (Pipeline):采集 -> 拉取 -> 解析 -> 存储 流程化处理。
    • Redis 实时存储:使用 ZSET 索引时间戳,支持秒级数据查询与回放。
    • 低侵入性:智能时间对齐与本地缓存优化,大幅减少 ADB IO 压力。

📂 项目结构

python-sdk/
├── configs/            # 配置中心
│   ├── settings.py     # 环境初始化与全局配置
│   └── models.py       # Pydantic 数据模型定义
├── engine/             # 核心引擎
│   ├── controller.py   # 总控调度器
│   ├── pipeline.py     # 数据处理流水线
│   └── strategies/     # 分版本适配策略 (Strategy Pattern)
│       ├── android_9/          # A9-A11 适配 (Tracebox)
│       ├── android_12/         # A12 适配
│       └── android_12_higher/  # A13+ 适配
├── utils/              # 通用工具集
│   ├── adb/            # ADB 命令执行器 (自动重试/编码处理)
│   ├── analysis/       # Trace 文件解析 (SQL 查询提取)
│   ├── device/         # 设备信息获取
│   ├── storage/        # 数据持久化 (Redis)
│   └── perfetto/       # Perfetto 进程管理
└── resources/          # 静态资源
    ├── pbtxs/          # Perfetto 采集配置文件
    └── sqls/           # Trace Processor 查询语句

🛠️ 快速开始

1. 环境准备

  • Python 3.10+
  • Redis Server (需启动)
  • ADB (需配置到环境变量)

2. 安装依赖 (使用 Poetry)

本项目使用 Poetry 进行依赖管理。

# 安装项目依赖
poetry install

# 激活虚拟环境
poetry shell

3. 配置项目

复制 .env.example.env 并修改配置:

# Redis 配置
REDIS_HOST=127.0.0.1
REDIS_PORT=6379

# 设备与采集配置
PACKAGE_NAME=com.example.app      # 监控的目标包名
INTERVAL=2                        # 循环采集间隔(秒)
CLIENT_PATH=/data/local/tmp       # 手机端临时目录
TEMP_PATH=./tmp                   # 本地临时数据保存目录

通过以下地址下载 tracebox 工具包(如果需要9 ~ 12 版本安卓监控的话) https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v53.0/android-arm64/tracebox

4. 运行监控

直接运行入口文件:

python entrypoint.py

程序会自动识别连接设备的 Android 版本,选择对应的采集策略启动监控。

📊 数据存储结构

数据存储在 Redis 中:

  • 实时数据: metric:{device_serial}:{timestamp} (JSON 字符串)
  • 时间索引: metrics_index:{device_serial} (Sorted Set)

🧩 扩展开发

如需适配新的 Android 版本或特定机型:

  1. engine/strategies/ 下新建版本目录。
  2. 继承并实现 TraceProcessorManager 接口。
  3. configs/settings.py 中注册新的版本映射逻辑。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages