如何测量Ceph OSD内存占用

前言

这个工具我第一次看到是在填坑群里面看到,是由研发-北京-蓝星同学分享的,看到比较有趣,就写一篇相关的记录下用法

火焰图里面也可以定位内存方面的问题,那个是通过一段时间的统计,以一个汇总的方式来查看内存在哪个地方可能出了问题 本篇是另外一个工具,这个工具的好处是有很清晰的图表操作,以及基于时间线的统计,下面来看下这个工具怎么使用的

本篇对具体的内存函数的调用占用不会做更具体的分析,这里是提供一个工具的使用方法供感兴趣的研发同学来使用

环境准备

目前大多数的ceph运行在centos7系列上面,笔者的环境也是在centos7上面,所以以这个举例,其他平台同样可以

需要用到的工具

  • valgrind
  • massif-visualizer

安装valgrind

yum install valgrind

massif-visualizer是数据可视化的工具,由于并没有centos的发行版本,但是有fedora的版本,从网上看到资料说这个可以直接安装忽略掉需要的依赖即可,我自己跑了下,确实可行

下载massif-visualizer

wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/linux/releases/23/Everything/x86_64/os/Packages/m/massif-visualizer-0.4.0-6.fc23.x86_64.rpm

安装massif-visualizer

rpm -ivh massif-visualizer-0.4.0-6.fc23.x86_64.rpm  --nodeps

不要漏了后面的nodeps

抓取ceph osd运行时内存数据

停掉需要监控的osd(例如我的是osd.4)

[root@lab8106 ~]# systemctl stop ceph-osd@4

开始运行监控

[root@lab8106 ~]# valgrind --tool=massif /usr/bin/ceph-osd -f --cluster ceph --id 4 --setuser ceph --setgroup ceph==21522== Massif, a heap profiler
==21522== Copyright (C) 2003-2015, and GNU GPL'd, by Nicholas Nethercote
==21522== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==21522== Command: /usr/bin/ceph-osd -f --cluster ceph --id 4 --setuser ceph --setgroup ceph
==21522== 
==21522== 
starting osd.4 at :/0 osd_data /var/lib/ceph/osd/ceph-4 /var/lib/ceph/osd/ceph-4/journal
2017-08-10 16:36:42.395682 a14d680 -1 osd.4 522 log_to_monitors {default=true}

监控已经开始了,在top下可以看到有这个进程运行,占用cpu还是比较高的,可能是要抓取很多数据的原因

等待一段时间后,就可以把之前运行的命令ctrl+C掉

在当前目录下面就会生成一个【massif.out.进程号】的文件

[root@lab8106 ~]# ll massif.out.21522 -rw------- 1 root root 142682 Aug 10 16:39 massif.out.21522

查看截取的数据

命令行下的查看

[root@lab8106 ~]# ms_print massif.out.21522 |less

这个方式是文本方式的查看,也比较方便,自带的文本分析工具,效果如下:

图形界面的查看

首先在windows上面运行好xmanager-Passive,这个走的x11转发的(也可以用另外一个工具MobaXterm)

运行好了后,直接在xshell命令行运行

[root@lab8106 ~]# massif-visualizer massif.out.21522 massif-visualizer(22494)/kdeui (kdelibs): Attempt to use QAction "toggleDataTree" with KXMLGUIFactory! 
massif-visualizer(22494)/kdeui (kdelibs): Attempt to use QAction "toggleAllocators" with KXMLGUIFactory! 
description: "(none)" command: "/usr/bin/ceph-osd -f --cluster ceph --id 4" time unit: "i" snapshots: 56 peak: snapshot # 52 after "2.3138e+09i" peak cost: "16.2 MiB"  heap "749.0 KiB"  heap extra "0 B"  stacks

然后在windows上面就会弹出下面的

就可以交互式的查看快照点的内存占用了,然后根据这个就可以进行内存分析了,剩下的工作就留给研发去做了

相关链接

linux – 如何测量应用程序或进程的实际内存使用情况?

总结

只有分析落地到数据层面,这样的分析才是比较精准的

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

原文发表时间:2017-08-13

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java工会

15个顶级Java多线程面试题及答案,快来看看吧

1775
来自专栏互联网技术栈

Zookeeper 使用场景

911
来自专栏转载gongluck的CSDN博客

python笔记:#006#程序执行原理

程序执行原理(科普) 目标 计算机中的 三大件 程序执行的原理 程序的作用 01. 计算机中的三大件 计算机中包含有较多的硬件,但是一个程序要运行,有 三个 核...

42810
来自专栏星流全栈

dva - React + Redux, but like elm

1454
来自专栏木头编程 - moTzxx

Laravel 框架中对Layer的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

2233
来自专栏CSDN技术头条

微博宕机背后,高并发有哪些常见问题?

上周,赵丽颖、冯绍峰结婚官宣造成微博宕机,那么回归技术,面对如此大的高并发流量和屡次崩溃的系统,作为程序员是否有较好的方法来应对及解决?在此,技术专家丁浪为我们...

3821
来自专栏腾讯移动品质中心TMQ的专栏

腾讯TMQ在线沙龙回顾|接口测试用例设计

活动介绍 TMQ第四十期在线沙龙分享活动圆满结束啦! 本次分享的主题:接口测试用例设计 共有470位测试小伙伴报名参加活动。 想知道活动分享了啥吗? 请往下看吧...

4868
来自专栏子勰随笔

SDK设计心得之架构和资源

5984
来自专栏程序员的SOD蜜

唯一不变的就是一直在变”--“数据”的华丽“变身术”

 系列文章索引: [WCF邮件通信系统应用 之 数据同步程序 之 设计内幕 之 一] 同步一个数据库要发多少个数据包? [WCF邮件通信系统应用 之 数据同步...

2206
来自专栏C++

python笔记:#006#程序执行原理

1211

扫码关注云+社区

领取腾讯云代金券