查询Ceph的OSD占用内存
前言
之前写过一篇关于查询OSD的运行的CPU的情况的分享,本篇是讲的获取内存占用的,代码包括两种输出,一种是直接的表格,一种是可以方便解析的json
代码
直接上代码,python才用不久,所以可能代码实现比较低级,主要是看实现的方法
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import os
import sys
import json
import psutil
import commands
from prettytable import PrettyTable
def main():
    if len(sys.argv) == 1:
        printosdmemtable("table")
    elif sys.argv[1] == 'json':
        printosdmemtable("json")
def printosdmemtable(chosse):
        data_dic = {}
        osd_list={}
        row = PrettyTable()
        row.header = True
        memlist = ["OSD\MEM"]
        memchose = [ 'VIRT','RES']
        for meminfo in memchose:
            memlist.append("%s" %meminfo )
        row.field_names = memlist
        for root, dirs, files in os.walk('/var/run/ceph/'):
            for name in files:
                if "osd"  in name and "pid" in name :
                    osdlist = []
                    osdthlist=[]
                    for osdmem in range(len(memchose)):
                        osdlist.append(" ")
                    pidfile=root+ name
                    osdid=commands.getoutput('ls  %s|cut -d "." -f 2 2>/dev/null'  %pidfile )
                    osdpid = commands.getoutput('cat %s  2>/dev/null' %pidfile)
                    osd_runmemvsz = commands.getoutput('ps -p %s  -o vsz |grep -v VSZ 2>/dev/null' %osdpid)
                    osd_runmemrsz = commands.getoutput('ps -p %s  -o rsz |grep -v RSZ 2>/dev/null' %osdpid)
                    osdname="osd."+osdid
                    osdlist.insert(0,osdname)
                    osdlist[1] = str(int(osd_runmemvsz)/1024)+"KB"
                    osdlist[2] = str(int(osd_runmemrsz)/1024)+"KB"
                    vm_dic = {}
                    vm_dic['VSZ']= str(int(osd_runmemvsz)/1024)+"KB"
                    vm_dic['RSZ']= str(int(osd_runmemrsz)/1024)+"KB"
                    osd_list[osdname] = vm_dic
                    data_dic['osdmemused'] = osd_list
                    if chosse == "table":
                        row.add_row(osdlist)
                    elif chosse == "json":
                        row = json.dumps(data_dic,separators=(',', ':'))
        print row
if __name__ == '__main__':
    main()
运行脚本
[root@lab8106 getmem]# python getmem.py
+---------+-------+------+
| OSD\MEM |  VIRT | RES  |
+---------+-------+------+
|  osd.0  | 825KB | 43KB |
|  osd.1  | 826KB | 43KB |
+---------+-------+------+
[root@lab8106 getmem]# python getmem.py json
{"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占用内存的更多相关文章
- ceph luminous版本限制osd的内存使用
		引言 ceph自从到了L版本以后,L版本的启用,对性能本身有了极大的提高,一直对这个比较不放心的就是内存的占用,刚开始的时候记得大量dd就可以把内存搞崩掉,这个应该是内部的设计逻辑需要更多的内存的占用 ... 
- 删除ecshop底部共执行个查询Gzip 已禁用,占用内存方法
		删除ecshop底部共执行个查询Gzip 已禁用,占用内存方法 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2013-03-25 “共执行 41 个查询,用时 2 ... 
- SQL Server占用内存的认识
		SQL Server占用的内存主要由三部分组成:数据缓存(Data Buffer).执行缓存(Procedure Cache).以及SQL Server引擎程序.SQL Server引擎程序所占用缓存 ... 
- JAVA对象是如何占用内存的
		本文使用的是32位的JVM ,jdk1.6.本文基本是翻译的,加上了一些自己的理解,原文见文章底下链接. 在本文中,我们讨论如何计算或者估计一个JAVA对象占多少内存空间.(注意,使用 C ... 
- php使用mysql_query查询超大结果集超内存的解决方法
		再使用mysql_query查询超大结果集的时候会出现超出内存限制的致命错误,这是因为mysql_query采用的是查询全部结果然后把结果集全部缓存到内存中的方式. mysql的查询还提供了另外一种查 ... 
- 【转载】 Sqlserver限制最大占用内存
		在Sqlserver数据库管理软件中,Sqlserver对系统内存的管理原则是:按需分配,并且分配完成后为了查询有更好的性能,并不会立即自动释放内存,数据取出后,还会一直占用着内存,所以在Sqlser ... 
- Linux的php-fpm优化心得-php-fpm进程占用内存大和不释放内存问题(转)
		原文地址:https://wzfou.com/php-fpm/ 最近发现博客的内存老是隔三差五地被“吃掉”了,登录到后台后偶尔会出卡顿的情况,一开始怀疑是Swap不够导致的,于是给VPS主机增加了几个 ... 
- 设置Redis最大占用内存
		https://blog.csdn.net/happyrabbit456/article/details/54945667 Redis需要设置最大占用内存吗?如果Redis内存使用超出了设置的最大值会 ... 
- ceph存储osd启动异常处理和正常启停操作
		机器角色:cloudstack虚拟机的宿主机:ceph存储机器. 事件:ceph存储的物理机器由于内存异常,需要停机更换,仅仅是把该物理机上面的虚拟机迁移走,同时启动了停机维护,然后就直接关机.结果造 ... 
随机推荐
- k8s-获取kuboardtoken
			master节点执行命令 echo $(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kub ... 
- HTML5/HTML 4.01/XHTML 元素和有效的 DTD
			HTML5/HTML 4.01/XHTML 元素和有效的 DTD 下面的表格列出了所有的 HTML5/HTML 4.01/XHTML 元素,以及它们会出现在什么文档类型 (DTD) 中: 标签 HTM ... 
- lerna管理前端模块实践
			最近在工作中使用了 lerna 进行前端包的管理,效率提升了很多.所以打算总结一下最近几个月使用 lerna 的一些心得.有那些不足的地方,请包涵. 该篇文章主要包括在使用 lerna 的一些注意事项 ... 
- HTTP协议和APACHE
			HTTP服务 超文本传输协议. 互联网上应用最广的一种服务. 是一种应用层协议. Internet 互联网表示把各个网连起来 ARPAnet军网 TCP/IP协议 开放的协议 互联互通 Interne ... 
- Phoenix的一些问题
			date: 2020-09-10 13:50:00 updated: 2020-09-14 16:30:00 1. Phoenix索引 全局索引:适合读多写少的场景.写数据时因为索引表分布在不同数据节 ... 
- 源码都没调试过,怎么能说熟悉 redis 呢?
			一:背景 1. 讲故事 记得在很久之前给初学的朋友们录制 redis 视频课程,当时结合了不少源码进行解读,自以为讲的还算可以,但还是有一个非常核心的点没被分享到,那就是源码级调试, 对,读源码还远远 ... 
- oracle 查询数据库锁及锁处理
			1.数据库锁表查询语句: SELECT SESS.SID, SESS.SERIAL#, LO.ORACLE_USERNAME, LO.OS_USER_NAME, AO.OBJECT_NAME 被锁对象 ... 
- 免费申请HTTPS通配符证书
			前言 在阿里云买了一个域名giantliu.cn 部署了自己的博客系统 https://www.giantliu.cn/ 所有用https证书是Let's Encrypt免费申请的 因为申请的免费证书 ... 
- PHP对接微信扫码登录
			1.PC端扫码登录 如果你将微信小程序和公众账号绑定同一个微信开放平台,那么他们各自的接口返回有一个参数unionid是相同的(没有绑定微信公众账号就没有):那么你就可以使用这个unionid来做业务 ... 
- 华为云FusionInsight MRS:助力企业构建“一企一湖,一城一湖”
			摘要:华为云FusionInsight MRS新一代的数据湖,让大数据越用越快.越用越易.越用越稳.越用越省!让数据价值近在眼前! 10月30日,以"携手共赢·数创未来"为主题的第 ... 
