前言

之前写过一篇关于查询OSD的运行的CPU的情况的分享,本篇是讲的获取内存占用的,代码包括两种输出,一种是直接的表格,一种是可以方便解析的json

代码

直接上代码,python才用不久,所以可能代码实现比较低级,主要是看实现的方法

  1. #!/usr/bin/env python
  2. # -*- coding: UTF-8 -*-
  3. import os
  4. import sys
  5. import json
  6. import psutil
  7. import commands
  8. from prettytable import PrettyTable
  9. def main():
  10. if len(sys.argv) == 1:
  11. printosdmemtable("table")
  12. elif sys.argv[1] == 'json':
  13. printosdmemtable("json")
  14. def printosdmemtable(chosse):
  15. data_dic = {}
  16. osd_list={}
  17. row = PrettyTable()
  18. row.header = True
  19. memlist = ["OSD\MEM"]
  20. memchose = [ 'VIRT','RES']
  21. for meminfo in memchose:
  22. memlist.append("%s" %meminfo )
  23. row.field_names = memlist
  24. for root, dirs, files in os.walk('/var/run/ceph/'):
  25. for name in files:
  26. if "osd" in name and "pid" in name :
  27. osdlist = []
  28. osdthlist=[]
  29. for osdmem in range(len(memchose)):
  30. osdlist.append(" ")
  31. pidfile=root+ name
  32. osdid=commands.getoutput('ls %s|cut -d "." -f 2 2>/dev/null' %pidfile )
  33. osdpid = commands.getoutput('cat %s 2>/dev/null' %pidfile)
  34. osd_runmemvsz = commands.getoutput('ps -p %s -o vsz |grep -v VSZ 2>/dev/null' %osdpid)
  35. osd_runmemrsz = commands.getoutput('ps -p %s -o rsz |grep -v RSZ 2>/dev/null' %osdpid)
  36. osdname="osd."+osdid
  37. osdlist.insert(0,osdname)
  38. osdlist[1] = str(int(osd_runmemvsz)/1024)+"KB"
  39. osdlist[2] = str(int(osd_runmemrsz)/1024)+"KB"
  40. vm_dic = {}
  41. vm_dic['VSZ']= str(int(osd_runmemvsz)/1024)+"KB"
  42. vm_dic['RSZ']= str(int(osd_runmemrsz)/1024)+"KB"
  43. osd_list[osdname] = vm_dic
  44. data_dic['osdmemused'] = osd_list
  45. if chosse == "table":
  46. row.add_row(osdlist)
  47. elif chosse == "json":
  48. row = json.dumps(data_dic,separators=(',', ':'))
  49. print row
  50. if __name__ == '__main__':
  51. main()

运行脚本

  1. [root@lab8106 getmem]# python getmem.py
  2. +---------+-------+------+
  3. | OSD\MEM | VIRT | RES |
  4. +---------+-------+------+
  5. | osd.0 | 825KB | 43KB |
  6. | osd.1 | 826KB | 43KB |
  7. +---------+-------+------+
  8. [root@lab8106 getmem]# python getmem.py json
  9. {"osdmemused":{"osd.1":{"VSZ":"826KB","RSZ":"43KB"},"osd.0":{"VSZ":"825KB","RSZ":"43KB"}}}

附加

如果在/var/run/ceph下面没有生成pid,就在配置文件/etc/ceph/ceph.conf当中提前加好配置文件然后重启进程

pid_file=/var/run/$cluster/$type.$id.pid

查询Ceph的OSD占用内存的更多相关文章

  1. ceph luminous版本限制osd的内存使用

    引言 ceph自从到了L版本以后,L版本的启用,对性能本身有了极大的提高,一直对这个比较不放心的就是内存的占用,刚开始的时候记得大量dd就可以把内存搞崩掉,这个应该是内部的设计逻辑需要更多的内存的占用 ...

  2. 删除ecshop底部共执行个查询Gzip 已禁用,占用内存方法

    删除ecshop底部共执行个查询Gzip 已禁用,占用内存方法 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2013-03-25   “共执行 41 个查询,用时 2 ...

  3. SQL Server占用内存的认识

    SQL Server占用的内存主要由三部分组成:数据缓存(Data Buffer).执行缓存(Procedure Cache).以及SQL Server引擎程序.SQL Server引擎程序所占用缓存 ...

  4. JAVA对象是如何占用内存的

      本文使用的是32位的JVM ,jdk1.6.本文基本是翻译的,加上了一些自己的理解,原文见文章底下链接.     在本文中,我们讨论如何计算或者估计一个JAVA对象占多少内存空间.(注意,使用 C ...

  5. php使用mysql_query查询超大结果集超内存的解决方法

    再使用mysql_query查询超大结果集的时候会出现超出内存限制的致命错误,这是因为mysql_query采用的是查询全部结果然后把结果集全部缓存到内存中的方式. mysql的查询还提供了另外一种查 ...

  6. 【转载】 Sqlserver限制最大占用内存

    在Sqlserver数据库管理软件中,Sqlserver对系统内存的管理原则是:按需分配,并且分配完成后为了查询有更好的性能,并不会立即自动释放内存,数据取出后,还会一直占用着内存,所以在Sqlser ...

  7. Linux的php-fpm优化心得-php-fpm进程占用内存大和不释放内存问题(转)

    原文地址:https://wzfou.com/php-fpm/ 最近发现博客的内存老是隔三差五地被“吃掉”了,登录到后台后偶尔会出卡顿的情况,一开始怀疑是Swap不够导致的,于是给VPS主机增加了几个 ...

  8. 设置Redis最大占用内存

    https://blog.csdn.net/happyrabbit456/article/details/54945667 Redis需要设置最大占用内存吗?如果Redis内存使用超出了设置的最大值会 ...

  9. ceph存储osd启动异常处理和正常启停操作

    机器角色:cloudstack虚拟机的宿主机:ceph存储机器. 事件:ceph存储的物理机器由于内存异常,需要停机更换,仅仅是把该物理机上面的虚拟机迁移走,同时启动了停机维护,然后就直接关机.结果造 ...

随机推荐

  1. bootStrap小结1

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 【UNR #2】UOJ拯救计划

    UOJ小清新题表 题目内容 UOJ链接 题面太长了(其实是我懒得改LaTeX了) 一句话题意: 给出 \(n\) 个点和 \(m\) 条边,对其进行染色,共 \(k\) 种颜色,要求同一条边两点颜色不 ...

  3. k8s-命令创建service

    查看命令帮助 [root@master kubernetes]# kubectl create service -h Create a service using specified subcomma ...

  4. MySQL字段添加注释,但不改变字段的类型

    之前在导数据库数据的时候,忘记将字段的注释导过来了.现在需要将所有字段都加上注释(崩溃).由于导数据的过程比较长,业务那边从原始数据库导出了一个 Excel,里面有所有字段的注释,然后让我们根据这个注 ...

  5. postgresql使用规范解读

    表设计规范1.建议能使用小字节数类型,就不要用大字节数类型2.建议能用varchar(N).text就不用char(N):3.建议使用default NULL,而不用default '':4.建议使用 ...

  6. node初学

    安装node.js 往往需要解析环境,但是现在直接安装时就已经配置好了, cmd打开 输入cd/ 在输入node -v   显示版本号 Node与php比较:https://www.techug.co ...

  7. linux 安装配置zerotier

    1.在线安装zerotier curl -s https://install.zerotier.com/ | sudo bash 2.添加开机自启 $ sudo systemctl enable ze ...

  8. 面试不再慌,看完这篇保证让你写HashMap跟玩一样

    今天这篇文章给大家讲讲hashmap,这个号称是所有Java工程师都会的数据结构.为什么说是所有Java工程师都会呢,因为很简单,他们不会这个找不到工作.几乎所有面试都会问,基本上已经成了标配了. 在 ...

  9. 第1天|12天搞定Python网络爬虫,吃里爬外?

    人力资源部漂亮的小MM,跑来问我:老陈,数据分析和爬虫究竟是关系呀?说实在的,我真不想理她,因为我一直认为这个跟她的工作关系不大,可一想到她负责我负责部门的招聘工作,我只好勉为其难地跟她说:数据分析, ...

  10. Hadoop框架:HDFS高可用环境配置

    本文源码:GitHub·点这里 || GitEE·点这里 一.HDFS高可用 1.基础描述 在单点或者少数节点故障的情况下,集群还可以正常的提供服务,HDFS高可用机制可以通过配置Active/Sta ...