a year ago
- libpoireau库通过拦截少量malloc/calloc调用来生成堆内存使用概览
- 计划实现类似Electric Fence的防护页机制以增强安全性
- 采用采样方法将性能影响降至最低,适合生产环境使用
- 将复杂性转移至内核或外部脚本,相比LeakSanitizer/Valgrind等工具侵入性更低
- 通过报告旧分配而非扫描引用,可有效检测缓慢的堆增长问题
- 目标平台为Linux 4.8+ 64位系统(4KB内存页)
- 要求GCC兼容的C11实现并通过LD_PRELOAD进行插桩
- 利用Linux perf子系统进行跟踪点注册和事件生成
- 提供SIGHUP/SIGUSR1/SIGUSR2信号与poireau.py交互获取分配报告
- 性能开销:中小型分配5-20%,大型分配约70%
- 包含基于xoshiro 256+ 1.0(公有领域)和Systemtap sys/sdt.h的衍生代码