天天看点

pprof搭配ceph tell命令分析ceph内存

文章目录

  • ​​安装​​
  • ​​使用​​
  • ​​使用`ceph tell`产生堆栈信息文​​
  • ​​使用`pprof`工具分析内存及`ceph tell`释放内存​​
  • ​​火焰图`FlameGraph`可视化进程堆栈信息​​
pprof是一个google开发的支持可视化、且可分析profile文件而达到对内存的分析。并且能够输出文本和图像来支持分析过程,​​pprof源码​​

安装

可以直接通过​

​gperftools​

​工具集来安装pprop工具

配置海康yum源,然后执行:

​yum install gperftools​

​yum install gperftools-devel​

使用

该分析过程同样适用于其他二进制文件

使用​

​ceph tell​

​产生堆栈信息文
  • 启动Ceph默认的内存分析器

    ​​

    ​ceph tell mon.node1 heap start_profiler​

  • 打印内存分析器收集到的堆栈占用数据

    ​​

    ​ceph tell mon.node1 heap stats​

  • 将统计信息导出到文件

    ​​

    ​ceph tell mon.node1 heap dump​

    ​​默认导出到​

    ​/var/log/ceph/mon.node1.profile.0001.heap​

使用​

​pprof​

​​工具分析内存及​

​ceph tell​

​释放内存
  • 分析一个文件:

    ​pprof --text /usr/bin/ceph-mon /var/log/ceph/mon.node1.profile.0001.heap​

    ​产生如下输出:
(pprof) top10
Total: 2525 samples
298  11.8%  11.8%  345  13.7% runtime.mapaccess1_fast64
268  10.6%  22.4% 2124  84.1% main.FindLoops
251   9.9%  32.4%  451  17.9% scanblock
178   7.0%  39.4%  351  13.9% hash_insert
131   5.2%  44.6%  158   6.3% sweepspan
119   4.7%  49.3%  350  13.9% main.DFS
 96   3.8%  53.1%   98   3.9% flushptrbuf
 95   3.8%  56.9%   95   3.8% runtime.aeshash64
 95   3.8%  60.6%  101   4.0% runtime.settype_flush
 88   3.5%  64.1%  988  39.1% runtime.mallocgc      
  • The first column contains the direct memory use in MB. 函数本身使用的内存
  • The fourth column contains memory use by the procedure and all of its callees.函数本身内存+调用函数内存
  • The second and fifth columns are just percentage representations of the numbers in the first and fourth columns. 第二第五列分别为第一列,第四列与total的比值
  • The third column is a cumulative sum of the second column.第三列为(到当前行数为止)第二列所有的和
  • 对比堆文件:

    ​​

    ​pprof --text --base /var/log/ceph/mon.node1.profile.0001.heap /usr/bin/ceph-mon /var/log/ceph/mon.node1.profile.0003.heap​

  • 释放已经被​

    ​tcmalloc​

    ​​占用但是没有被ceph占用的内存

    ​​

    ​ceph tell osd.0 heap release​

  • 一旦完成停止分析器

    ​​

    ​ceph tell osd.0 heap stop_profiler​

火焰图​

​FlameGraph​

​可视化进程堆栈信息
  • 安装

    下载​​​FlameGraph​​到自己设备

  • 进入该目录下获取当前进程堆栈信息 ​​perf工具​​​

    ​perf record -F 99 -p 181 -g --sleep 60​

  • 对生成的信息进行解析

    ​​

    ​perf script > out.perf​

  • 对解析出来的符号进行折叠

    进入​​

    ​FlamGraph​

    ​​目录,增加以下文件的运行权限

    ​​

    ​./stackcollapse-perf.pl out.perf > out.folded​

  • 生成火焰图

    同样要增加该文件的运行权限,生成如下文件

    ​​

    ​./flamegraph.pl out.folded > kernel.svg​