-
Notifications
You must be signed in to change notification settings - Fork 183
Open
Labels
enhancementNew feature or requestNew feature or request
Description
本项目旨在开发一个Linux进程到各子系统的调用栈画像工具,通过该工具可以明确展示出:
- 一个进程使用系统资源的完整的函数调用路径
- 进程/线程阻塞的时长、阻塞原因(内存分配、主动睡眠、锁竞争等)及调用路径,从而解决出进程执行慢、甚至卡死的问题
- 进程/线程使用cpu的计数,从而分析出进程的用时最长的调用栈即性能瓶颈
- 进程/线程内存占用的大小及分配路径、更进一步可以检测出释放无效指针的问题,从而优化进程的内存分配方式
- 进程/线程输入/输出的数据量或者次数,及相应路径,从而优化进程输入/输出方式
- 进程/线程预读取页面使用量及对应调用栈,从而了解进程读数据的行为特征,进而使用madvise进行优化
- 统计指定调用栈的调用次数,使工具更加灵活
- 加入更多的可视化元素和交互方式,使得画像更加直观、易于理解
项目开发计划:
- 设计调用栈采集框架
Create 2023.5.26 会议纪要.md #453
基于eBPF的调用栈统计工具 #461 - 实现在线调用栈的采集
add on-cpu module #465 - 将bcc改为libbpf以优化程序性能
libbpf准备工作 #473
定义libbpf通用数据结构及宏 #474 - 添加了采集阻塞栈、内存占用栈的功能
完成on_cpu内核部分 #476 - 设计编写了数据展示方式,json树状格式,火焰图和排序展示
bpf模块完成,着手符号地址解析和json格式处理 #485 - 增强了内核兼容性
修复了内核uprobe绑定接口不一致的问题,使libbpf代码测试通过 #487 - 添加了采集IO栈的功能
增强了一些功能功能 #511 - 添加阈值功能
增强了一些功能功能 #511 - 添加了创建子进程并检测的功能
Fixed some Abilities #530 - 添加预读取栈的采集功能
Fixed some Abilities #530 - 优化数据展示效果
优化了一些程序操作逻辑 #533
完善了一些功能 #558
Stack_Analyzer: 完善了一些功能 #618
stack_analyzer: separate sampling and sending abilities #645 - 测试并修复问题
修复了一些已知问题 #570
添加Stack_Analyser代码注释 #590
Add the latest code comments #602
Stack_Analyzer: fix bug and arrange code #634
stack_analyzer: separate sampling and sending abilities #645- 采集时判断进程是否为内核线程,若是则直接忽略,其没有用户栈
Stack_Analyzer: fix bug and arrange code #634 - c++符号解析支持
Stack_Analyser项目:C++符号解析支持 #647
- 采集时判断进程是否为内核线程,若是则直接忽略,其没有用户栈
- 改善代码结构
将bcc代码进行了细分 #468
stack_analyzer: 完善了一些功能 #608
Stack_Analyzer: fix bug and arrange code #634
stack_analyzer: separate sampling and sending abilities #645
Stack_Analyzre项目: remove unused definition #660- 将操作eBPF的逻辑和创建子进程执行被跟踪指令的逻辑分离开
Stack_Analyzer: fix bug and arrange code #634 - 将采集和数据发送的逻辑分离开
stack_analyzer: separate sampling and sending abilities #645
- 将操作eBPF的逻辑和创建子进程执行被跟踪指令的逻辑分离开
- 以grafana pyroscope为可视化服务端,更改为c/s架构
确定c/s架构的功能分配 #603
stack_analyzer:c/s架构代码初步构建完成 #629
stack_analyzer:cs arch realized primirarily #639
Stack_Analyzer项目:适用于pyroscope的发送端 #679- 修改pyroscope项目,扩展eBPF功能
- 增强栈采集功能
Stack_Analyser 项目: avg to io #626
Stack_Analyzer:add kprobe kernel function #684
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request