查询Ceph的OSD占用内存的脚本

# -*- coding: UTF-8 -*-import osimport sysimport jsonimport psutilimport commandsfrom prettytable import PrettyTabledef 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"}}}
时间: 2024-09-21 10:51:16

查询Ceph的OSD占用内存的脚本的相关文章

[20170406]查询占用内存情况.txt

[20170406]查询占用内存情况.txt --//昨天看了链接,http://www.dbaqhs.com/archives/35,发现脚本不对,显示KEEP buffer cache. --//google找到如下脚本: col component format a32 select min(BASEADDR), max(BASEADDR), count(1) Granules, sum(a.gransize)/1048576 MB, a.GRANFLAGS, component, a.G

人生日历:占用内存小 功能很强大

人生日历提供天气预报,公农历对应,假日节气查询,放假安排查询等生活化的功能,可以帮助用户便捷的查询各类生活信息.其界面设计清新简洁,支持自由换肤,在细节方面的设计处理十分贴心. 人生日历此版本占用内存更少,安装包仅5.8MB大小 人生日历自带插件不默认安装,解决软件臃肿,占用内存的问题;应用管理的插件不再默认安装,用户可选择性安装常用的插件,不仅仅方便用户管理使用,还大大的提升了软件运行速度;同时把常用的插件放到人生日历主界面上,更方便用户使用. 人生日历此版本新增桌面图标实时显示日期功能,更新

c#-C#静态变量重新赋值 旧数据还是会占用内存么

问题描述 C#静态变量重新赋值 旧数据还是会占用内存么 如题 如果我的程序中有30个静态变量 而且频繁的对其进行赋值(几乎3秒一次) 那么之前的值(数据) 还是会占用内存么 这样挂起 会导致cpu飙高么? 解决方案 旧数据不会占用内存. 解决方案二: 看什么类型,如果是引用类型,会消耗一些内存.值类型直接覆盖. 引用类型,如果之前的对象没有其它引用,会被gc回收,但是如果你的内存比较大,未必会马上回收. 解决方案三: 如果你不断生成新的datatable,datatable又很大,不断赋值,那么

Unity3D占用内存太大的解决方法

最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化. Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大. Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时 动态加载,可以指定路径和来源的. 其实场景里所有静态的对象也有这么一个加载过程,只是Unity3D后台替你

MySQL占用内存与CPU过高测试与解决办法

为了装mysql环境测试,装上后发现启动后MySQL占用内存了很大,达8百多兆.网上搜索了一下,得到高人指点my.ini.再也没见再详细的了..只好打开my.ini逐行的啃,虽然英文差了点,不过多少M还是看得明的^-^ 更改后如下: innodb_buffer_pool_size=576M ->256M InnoDB引擎缓冲区占了大头,首要就是拿它开刀 query_cache_size=100M ->16M 查询缓存 tmp_table_size=102M ->64M 临时表大小 key

w3wp.exe进程占用内存过高解决办法

今天研究了一下,可以做以下配置: 1.在IIS中对每个网站进行单独的应用程序池配置.即互相之间不影响. 2.设置应用程序池的回收时间,默认为1720小时,可以根据情况修改.同时,设置同时运行的w3wp进程数目为1.再设置当内存或者cpu占用超过多少,就自动回收内存   一般来说,这样就可以解决了.但仍然会出现个别网站因为程序问题,不能正确释放. 那么,怎么样才能找到是哪一个网站的?   1.在任务管理器中增加显示pid字段.就可以看到占用内存或者cpu最高的进程pid 2.在命令提示符下运行ii

w3wp.exe进程占用内存过高解决方法_win服务器

w3wp.exe是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运行.这个进程用来分配大量的系统资 今天研究了一下,可以做以下配置: 1.在IIS中对每个网站进行单独的应用程序池配置.即互相之间不影响. 2.设置应用程序池的回收时间,默认为1720小时,可以根据情况修改.同时,设置同时运行的w3wp进程数目为1.再设置当内存或者cpu占用超过多少,就自动回收内存 一般来说,这样就可以解决了.但仍然会出现个别网站因为程序

如何解决PHP使用mysql_query查询超大结果集超内存问题_php实例

再使用mysql_query查询超大结果集的时候会出现超出内存限制的致命错误,这是因为mysql_query采用的是查询全部结果然后把结果集全部缓存到内存中的方式. mysql的查询还提供了另外一种查询方式,函数名为mysql_unbuffered_query,这个函数采用的是查出结果后立即操作结果集,并不会把结果集缓存到内存中,这样就避免了超出内存的情况发生.但是使用这个方法的代价就是不能再查询的时候使用获取总行之类的方法,因为这种方法是便查询边返回结果.同时在使用该方法的时候不能在同一数据库

360极速浏览器占用内存过高怎么办

  不知道你有没有遇到你电脑上的360极速浏览器老是提示你占用内存过大的情况,小编也是经常遇到,解决的方法网上有很多,不过我自己试了试,都是治标不治本的,下面为大家分析一下问题原因以及解决的办法. 内存过高原因分析: 在360浏览器3.x的多进程的框架下,内存占用比单进程高,但是优点是能在网页关闭之后完全释放网页占用的资源.在360浏览器3.x的混合进程的框架下,内存占用比单进程较高,但是优点是能在网页关闭之后较好释放网页占用的资源. 这两种模式长时间使用时,内存占用反正比单进程低.同时也能避免