Android Perfetto 系列 10 - Binder 调度与锁竞争
本文聚焦 Android 跨进程通信核心 Binder 的性能瓶颈诊断,提供了一套基于 Perfetto 的实用分析工作流。文章首先阐明了 Binder 的基础架构与角色,随后重点讲解如何利用 `linux.ftrace` 数据源(捕获 Binder tracepoints、调度事件及 ART Monitor Contention)进行数据采集,并给出了具体的 Trace 配置模板。分析流程分为三步:首先通过事务耗时(如 `client_dur` 和 `server_dur`)定位问题调用;若耗时在派发阶段,则需评估 Binder 线程池是否饱和或缓冲区是否耗尽;若耗时在服务端,则需进一步排查代码逻辑、I/O 等待或 Java 锁竞争(通过 `dalvik` 类别观察)。文章同时介绍了 `am trace-ipc` 和 `binder-trace` 等辅助工具,旨在帮助开发者将复杂的跨进程调用链可视化,从而更直观地定位耗时、线程池压力及锁竞争问题。