Hasty Briefsbeta

双语

Poireau: A Sampling Allocation Debugger

a year ago
  • #linux
  • #memory-profiling
  • #performance
  • 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的衍生代码