`
pypy
  • 浏览: 90519 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

python 监控 linux cpu 使用率

阅读更多
最近一个应用特别的吃cpu,又是和已有的应用复用机器,故所以对机器的cpu监控显的重要起来

当cpu高到某一限度,及时报警

    def _read_cpu_usage(self):
        """Read the current system cpu usage from /proc/stat."""
        try:
            fd = open("/proc/stat", 'r')
            lines = fd.readlines()
        finally:
            if fd:
                fd.close()
        for line in lines:
            l = line.split()
            if len(l) < 5:
                continue
            if l[0].startswith('cpu'):
                return l
        return []

    def get_cpu_usage(self):
        """
        get cpu avg used by percent
        """
        cpustr=self._read_cpu_usage()
        if not cpustr:
            return 0
        #cpu usage=[(user_2 +sys_2+nice_2) - (user_1 + sys_1+nice_1)]/(total_2 - total_1)*100
        usni1=long(cpustr[1])+long(cpustr[2])+long(cpustr[3])+long(cpustr[5])+long(cpustr[6])+long(cpustr[7])+long(cpustr[4])
        usn1=long(cpustr[1])+long(cpustr[2])+long(cpustr[3])
        #usni1=long(cpustr[1])+long(cpustr[2])+long(cpustr[3])+long(cpustr[4])
        # self.sleep=2
        time.sleep(self.sleep)
        cpustr=self._read_cpu_usage()
        if not cpustr:
            return 0
        usni2=long(cpustr[1])+long(cpustr[2])+float(cpustr[3])+long(cpustr[5])+long(cpustr[6])+long(cpustr[7])+long(cpustr[4])
        usn2=long(cpustr[1])+long(cpustr[2])+long(cpustr[3])
        cpuper=(usn2-usn1)/(usni2-usni1)
        return 100*cpupe
分享到:
评论
2 楼 pypy 2009-11-20  
1. 要写成客户端应用,及时收集相关信息,并通过网络上报到中心管理机器上
2. 用shell,网络通信比较麻烦
3. 用system()起外部shell命令获得信息(个人觉得,不到万不得已,不要使用外部调用,)

1 楼 Zandy 2009-11-19  
高射炮打蚊子啊,用shell多简单

相关推荐

Global site tag (gtag.js) - Google Analytics