开源级互联网规模性能分析器:Pinterest 与 Intel 合作打造 gProfiler
Pinterest 服务着 6.4 亿用户,与 Intel 合作,通过性能分析(profiling)提升基础设施效率。初期,他们面临分析工具碎片化以及需要统一可扩展解决方案的挑战。他们选择增强开源工具 gProfiler,该工具最初由 Granulate 开发,而 Granulate 曾是 Intel 的子公司。此次合作旨在为大规模云环境构建一个稳健的性能分析系统。Pinterest 和 Intel 扩展了 gProfiler,增加了动态性能分析功能,支持按需启动分析会话。他们集成了 Intel PerfSpect 以获取硬件遥测数据,捕获诸如缓存行为和 CPU 停顿等细节。同时引入了墙钟时间(wall-time)性能分析,以检测 I/O 或锁竞争导致的延迟,这些是 CPU 火焰图(flame graphs)所遗漏的。此外,他们还添加了 PMC 火焰图,将函数与硬件事件关联起来,并贡献了生产环境加固修复,以确保大规模部署下的效率。该合作聚焦于开源方法,以避免供应商锁定并促进协作。gProfiler 编排多种语言特定的性能分析器,生成统一的火焰图,提供系统活动的全面视图。Pinterest 决定合作,是出于认识到从头构建如此复杂的工具将极其艰巨,而 Intel 的硬件专业知识对于深入分析瓶颈至关重要。gProfiler 及其后端 gProfiler Performance Studio 的开源,为 Pinterest 提供了可在此基础上构建的基础。随后,Pinterest 在其整个机队中部署了 gProfiler 代理,解决了与资源消耗和数据摄入相关的可靠性问题。他们的重大贡献包括动态性能分析功能,实现了全机队范围内的按需分析。这些贡献还解锁了额外能力,如墙钟时间性能分析和基于硬件事件的火焰图。gProfiler 的架构由每个节点上的数据收集代理和负责聚合与可视化的后端组成。代理协调各种语言性能分析器,生成合并的堆栈跟踪,从而在不修改应用代码的情况下提供统一视图。后端微服务负责处理性能数据摄入、存储至 S3、索引至 ClickHouse,并通过 React 前端进行可视化。