pprof搭配ceph tell命令分析ceph内存
文章目錄
- 安裝
- 使用
- 使用`ceph tell`產(chǎn)生堆棧信息文
- 使用`pprof`工具分析內(nèi)存及`ceph tell`釋放內(nèi)存
- 火焰圖`FlameGraph`可視化進(jìn)程堆棧信息
pprof是一個(gè)google開發(fā)的支持可視化、且可分析profile文件而達(dá)到對內(nèi)存的分析。并且能夠輸出文本和圖像來支持分析過程,pprof源碼
安裝
可以直接通過gperftools工具集來安裝pprop工具
配置海康yum源,然后執(zhí)行:
yum install gperftools
yum install gperftools-devel
使用
該分析過程同樣適用于其他二進(jìn)制文件
使用ceph tell產(chǎn)生堆棧信息文
-
啟動(dòng)Ceph默認(rèn)的內(nèi)存分析器
ceph tell mon.node1 heap start_profiler -
打印內(nèi)存分析器收集到的堆棧占用數(shù)據(jù)
ceph tell mon.node1 heap stats -
將統(tǒng)計(jì)信息導(dǎo)出到文件
ceph tell mon.node1 heap dump默認(rèn)導(dǎo)出到
/var/log/ceph/mon.node1.profile.0001.heap
使用pprof工具分析內(nèi)存及ceph tell釋放內(nèi)存
-
分析一個(gè)文件:
pprof --text /usr/bin/ceph-mon /var/log/ceph/mon.node1.profile.0001.heap產(chǎn)生如下輸出:
(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.DFS96 3.8% 53.1% 98 3.9% flushptrbuf95 3.8% 56.9% 95 3.8% runtime.aeshash6495 3.8% 60.6% 101 4.0% runtime.settype_flush88 3.5% 64.1% 988 39.1% runtime.mallocgc各個(gè)參數(shù)含義如下:
-
The first column contains the direct memory use in MB. 函數(shù)本身使用的內(nèi)存
-
The fourth column contains memory use by the procedure and all of its callees.函數(shù)本身內(nèi)存+調(diào)用函數(shù)內(nèi)存
-
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.第三列為(到當(dāng)前行數(shù)為止)第二列所有的和
-
對比堆文件:
pprof --text --base /var/log/ceph/mon.node1.profile.0001.heap /usr/bin/ceph-mon /var/log/ceph/mon.node1.profile.0003.heap -
釋放已經(jīng)被
tcmalloc占用但是沒有被ceph占用的內(nèi)存ceph tell osd.0 heap release -
一旦完成停止分析器
ceph tell osd.0 heap stop_profiler
火焰圖FlameGraph可視化進(jìn)程堆棧信息
-
安裝
下載FlameGraph到自己設(shè)備
-
進(jìn)入該目錄下獲取當(dāng)前進(jìn)程堆棧信息 perf工具
perf record -F 99 -p 181 -g --sleep 60perf record表示采集系統(tǒng)事件,沒有使用-e指定,則默認(rèn)采集(cpu clock周期),-F 99表示每秒99次,-p 181表示針對當(dāng)前進(jìn)程進(jìn)行分析,-g表示記錄調(diào)用棧,--sleep 60表示收集60秒的信息 -
對生成的信息進(jìn)行解析
perf script > out.perf -
對解析出來的符號進(jìn)行折疊
進(jìn)入
FlamGraph目錄,增加以下文件的運(yùn)行權(quán)限./stackcollapse-perf.pl out.perf > out.folded -
生成火焰圖
同樣要增加該文件的運(yùn)行權(quán)限,生成如下文件
./flamegraph.pl out.folded > kernel.svg
總結(jié)
以上是生活随笔為你收集整理的pprof搭配ceph tell命令分析ceph内存的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 心悦3多少钱啊?
- 下一篇: centos6.5原生系统修改ceph-