not-perf cpu采样profiler工具

发布时间 2023-05-05 10:16:30作者: 荣锋亮

not-perf 类似perf,但是实现了cpu 无关,可以开箱即用

支持的特性

  • 支持多种cpu 架构
  • 支持离线以及在线stack trace展开
  • 支持不带debuginfo 的分析
  • 支持跨架构数据分析
  • 架构无关的数据费事
  • 内置火焰图

参考使用

  • 支持的命令
nperf-core 0.1.1
Jan Bujak <j@exia.io>
 
USAGE:
    nperf <SUBCOMMAND>
 
FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information
 
SUBCOMMANDS:
    collate         Emits collated stack traces for use with Brendan Gregg's flamegraph script
    csv             Emits a CSV file
    flamegraph      Emits an SVG flamegraph
    help            Prints this message or the help of the given subcommand(s)
    metadata        Outputs rudimentary JSON-formatted metadata
    record          Records profiling information with perf_event_open
    trace-events    Emits trace events for use with Chromium's Trace Viewer
  • trace nginx
    注意内核可能需要配置echo 0 > /proc/sys/kernel/perf_event_paranoid
 
nperf  record -P nginx

效果

 

进行一个压测

  • 生成火焰图
 
nperf  flamegraph 20230505_020349_02059_nginx.nperf  > /opt/apps/flame.svg

 


效果(如何包含了debug 信息分析会更加全的)

说明

因为默认官方的构建使用高版本的glibc 我自己构建了一个支持centos7 的,具体参考github

参考资料

https://github.com/koute/not-perf
https://github.com/rongfengliang/not-perf-package/releases/tag/v0.1.1
https://github.com/rongfengliang/not-perf-package/blob/main/flame.svg