利用火焰图分析ceph pg分布

前言

性能优化大神Brendan Gregg发明了火焰图来定位性能问题,通过图表就可以发现问题出在哪里,通过svg矢量图来查看性能卡在哪个点,哪个操作占用的资源最多 在查看了原始数据后,这个分析的原理是按层级来对调用进行一个计数,然后以层级去做比对,来看横向的占用的比例情况

基于这个原理,把osd tree的数据和pg数据可以做一个层级的组合,从而可以很方便的看出pg的分布情况,主机的分布情况,还可以进行搜索,在一个简单的图表内汇聚了大量的信息

实践

获取需要的数据,这个获取数据是我用一个脚本解析的osd tree 和pg dump,然后按照需要的格式进行输出

default;lab8106;osd.2;0.0 6 default;lab8106;osd.3;0.0 6 default;rack1;lab8107;osd.0;0.0 6

需要的格式是这个样的,最后一个为权重,使用的是对象数,因为对象数可能为0,所以默认在每个数值进行了加一的操作,前面就是osd的分布的位置

脚本/sbin/stackcollapse-crush内容如下: 处理脚本看原文链接

获取数据

/sbin/stackcollapse-crush > /tmp/mydata

解析数据

获取解析脚本,这个脚本是Brendan Gregg写好的,这地方托管到我的github里面了

 wget -O /sbin/flamegraph https://raw.githubusercontent.com/zphj1987/cephcrushflam/master/flamegraph.pl

对数据进行解析

/sbin/flamegraph  --title  "Ceph crush flame graph" --width "1800" --countname "num" /tmp/mydata > /tmp/mycrush.svg

将/tmp/mycrush.svg拷贝到windows机器,然后用浏览器打开即可,推荐chrome

效果图如下

Example (在原文链接当中可以点击查看):

  • 通过颜色来区分比例占用的区别
  • 支持搜索
  • tree方式,可以清楚看到分布
  • 可以查看pg对象数目
  • 可以查看osd上面有哪些pg,主机上有哪些osd

总结

通过ceph osd tree可以查到整个的信息,但是一个屏幕的信息量有限,而通过滚屏或者过滤进行查询的信息,需要做一下关联,而这种可以缩放的svg位图的方式,可以包含大量的信息,如果是做分析的时候还是能比较直观的看到,上面的难点在于获取数据部分,而绘图的部分是直接用的现有的处理,比自己重新开发一个要简单的多,类似的工具还有个桑基图方式,这个在inkscope这个管理平台里面有用到

本篇就是在最小的视野里容纳尽量多的信息量一个实例,其他的数据有类似模型的也可以做相似的处理

原文发布于微信公众号 - 磨磨谈(momotan1987)

原文发表时间:2017-07-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏TensorFlow从0到N

TensorFlow从0到1 - 18 - TensorFlow 1.3.0安装手记

《TensorFlow从0到1》写到现在,TensorFlow的版本也从当时的1.1.0迭代到了8月初发布的1.3.0。可以预见在未来很长一段时间里,它仍会持...

3536
来自专栏大数据文摘

机器学习:如何在安卓上集成TensorFlow

2395
来自专栏ATYUN订阅号

小白也可以操作的手机TensorFlow教程:Android版和iOS版

TensorFlow通常用于训练海量数据,但新兴的智能手机市场也不可忽略。那些不能等待未来和love Machine Learning的人正在通过制造工具来突破...

3966
来自专栏自然语言处理

深度学习环境搭建

本文作者的专题《目标检测》链接:https://www.jianshu.com/c/fd1d6f784c1f 此专题的宗旨是让基础较为薄弱的新手能够顺利实现目标...

4561
来自专栏大数据智能实战

facebook faiss的安装测试

Faiss 是由 Facebook AI Research(FAIR)开发的一个用于有效的相似性搜索(similarity search)和稠密矢量聚类(clu...

7298
来自专栏ATYUN订阅号

多模型机器学习功能数据库EuclidesDB全新发布

EuclidesDB,一个多模型机器学习功能数据库,发布了0.1版本。EuclidesDB 0.1与PyTorch紧密耦合,为模型特征空间中包含和查询数据提供后...

931
来自专栏Python中文社区

手把手教你用1行代码实现人脸识别

專 欄 ❈Kangvcar,Python爱好者,简书活跃作者,欢迎关注,打赏支持。❈ 环境要求: Ubuntu17.10 Python 2.7.14 环境...

2.8K10
来自专栏网络

HTML 正文内容提取库 Boilerpipe

Boilerpipe 是一个能从 HTML 中剔除广告和其他附加信息,提取出目标信息(如正文内容、发布时间)的 Java 库。 授权协议:Apache 开发语言...

3366
来自专栏AI科技评论

开发 | GitHub项目推荐 : 用于对机器学习模型进行对抗性攻击、防御和基准测试的Python库

此资料库包含CleverHans的源代码,CleverHans是一个Python库,用于将机器学习系统中的漏洞与对抗性示例进行对比。 您可以在随附的博客上了解有...

1222
来自专栏性能与架构

LVS负载均衡的调度算法

LVS是如何决定把用户请求转给哪台服务器的?LVS有很多种调度算法,下面介绍几个最常用的算法 (1)轮询 这是最简单的调度算法,调度器将收到的请求循环分配到服务...

37510

扫码关注云+社区

领取腾讯云代金券