{"repo":"Vivy33/Profiling","free":true,"listed":false,"github":"https://github.com/Vivy33/Profiling","clone":"git clone https://github.com/Vivy33/Profiling.git","description":"高性能常态化监控 - performance analysis 一个为应对真实、复杂生产环境而设计的可观测性引擎","language":"C","stars":39,"topics":["linux","monitoring","perf","performance-analysis","performance-monitoring","profiling","profiler"],"license":null,"category":"analytics","readme_excerpt":"高精度Linux性能分析工具 本项目是一个基于Linux perf event 子系统的高性能采样分析器。它能够实时地将运行时指令地址（IP）转换为具体的函数符号，从而帮助开发者精确地定位用户态和内核态的性能热点。 Why continuous profiling is the fourth pillar of observability？ 常态化火焰图，解决的是性能抖动难以复现的问题。 在线服务面对以下问题，现有排查工具通常无法及时定位问题现场： - 偶发性抖动，来不及部署工具。 - 极小粒度的竞争问题。 - 进程频繁启动来不及指定pid。 - 网络偶发性抖动。 - 无法分粒度查看。 偶发延迟，怎么查，是网络，还是应用。 目前暂未实现抓网络重传的延迟，会持续更新下去。 效果演示 核心能力 - 全栈符号化 : 同时支持用户态（ELF符号）和内核态（kallsyms符号）的地址解析。 - 异步符号解析 : 与采集线程分离， main loop 生产， handler 消费。 - 实时符号化 : 采样地址到函数名的转换延迟极低，小于1毫秒。 - 系统级监控 : 能够监控系统上的所有进程，提供全局性能视图。 - 三级核心缓存 : 进程、ELF文件和内核符号三级缓存，最大化减少重复IO和解析开销。 - 高可靠栈回溯 : 可选LBR或Frame Pointer模式，用于生成高度精确的调用栈和火焰图。 - 内存安全 : 通过引用计数和定期清理机制，确保零内存泄漏。 🏗️ 架构详解 分层架构图 依赖安装 在编译前，请确保已安装以下必要的开发库和符号包。 以Debian/Ubuntu为例： - build-essential : 提供 gcc 和 make 等基础编译工具。 - libelf-dev : ELF文件解析所需的核心库。 - libsqlite3-dev : 用于数据存储功能（SQLite）。 - libmicrohttpd-dev : 轻量级 HTTP 服务器库，用于内置管理/查询接口。 - libcjson-dev : 用于解析/构造 JSON 数据（配置、接口输出等）。 - libcurl4-openssl-dev : 查询工具 query tool 的 HTTP 访问能力（下载/接口调用等）。 可选（符号包/调试符号）： - 为了获得更完整的用户态/系统库符号，建议安装系统调试符号包（例如 libc 的 dbgsym/dbg、libstdc++ 的 dbgsym/dbg 等）。 - 未安装符号包时，程序仍可工作。 - 内核符号默认来自 /proc/kallsyms ，通常无需额外安装。 Quick start 1. 克隆项目 2. 编译 直接运行 make 命令即可编译生成可执行文件。 安装历史数据库(7天)定时清理任务 3. 运行 重要提示 : 运行本工具需要 root 权限，因为它依赖于 perf event open 系统调用，需要root内核栈才可以解析。 场景1: 标准性能分析 (默认软件采样) 此模式适用于快速定位消耗CPU时间最长的“热点”函数。 场景2: 高精度调用栈分析 (LBR硬件采样) 此模式使用CPU的LBR硬件功能，以极高的精度追踪函数调用路径，是生成可靠火焰图的首选。 场景3: 只分析内核空间 场景4: 火焰图生成 LBR模式是生成高质量火焰图的首选。为了生成火焰图， profiling tool 的输出需要被处理成 flamegraph.pl 脚本所要求的折叠堆栈格式（folded stack format），","default_branch":null,"files":null,"tree":[],"storefront":"/r/Vivy33","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Vivy33/Profiling/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}