前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >查询OSD运行在哪些cpu上

查询OSD运行在哪些cpu上

作者头像
用户2772802
发布2018-08-06 18:17:42
8620
发布2018-08-06 18:17:42
举报
文章被收录于专栏:磨磨谈磨磨谈

前言

在看CPU相关的文章的时候,想起来之前有文章讨论是否要做CPU绑定,这个有说绑定的也有说不绑定的,然后就想到一个问题,有去观测这些OSD到底运行在哪些CPU上面么,有问题就好解决了,现在就是要查下机器上的OSD运行在哪些CPU上

代码

提前装好psutil和prettytable的python模块,这个通过rpm或者pip来安装都可以的

这里直接上代码了,最近学习python在,就用python来实现

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import os
import sys
import json
import psutil
import commands
from prettytable import PrettyTable

def main():
    printosdcputable()

def printosdcputable():
    row = PrettyTable()
    row.header = True
    cpulist = ["OSD\CPU"]
    corelist=["Core ID"]
    phylist = ["Physical ID"]
    emplist=["-----------"]
    for cpupro in range(psutil.cpu_count()):
        cpulist.append("%s" %cpupro )

        coreid=commands.getoutput('egrep \'processor|physical id|core id\' /proc/cpuinfo | cut -d : -f 2 | paste - - -  | awk  \'$1==%s {print $3 }\'' %cpupro)
        corelist.append("%s" %coreid)

        phyid = commands.getoutput('egrep \'processor|physical id|core id\' /proc/cpuinfo | cut -d : -f 2 | paste - - -  | awk  \'$1==%s {print $2 }\'' % cpupro)
        phylist.append("%s" %phyid)
        emplist.append("--")

    row.field_names = cpulist
    row.add_row(corelist)
    row.add_row(phylist)
    row.add_row(emplist)

    for root, dirs, files in os.walk('/var/run/ceph/'):
        for name in files:
            if "osd"  in name and "pid" in name :
                osdlist = []
                for osdcpu in range(psutil.cpu_count()):
                    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_runcpu = commands.getoutput('ps -o  psr -p %s |grep -v PSR 2>/dev/null' %osdpid)
                osdname="osd."+osdid
                osdlist[int(osd_runcpu)]="+"
                osdlist.insert(0,osdname)
                row.add_row(osdlist)
    print row

if __name__ == '__main__':
    main()

运行脚本:

代码语言:javascript
复制
watch python getosdcpu.py

运行效果如下:

看上去确实有些CPU上面运行了多个OSD,这里不讨论CPU绑定的好坏,只是展示现象,具体有什么效果,是需要用数据取分析的,这个以后再看下

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 磨磨谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档