⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xendvmmetrics.py

📁 xen虚拟机源代码安装包
💻 PY
字号:
#============================================================================# This library is free software; you can redistribute it and/or# modify it under the terms of version 2.1 of the GNU Lesser General Public# License as published by the Free Software Foundation.## This library is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU# Lesser General Public License for more details.## You should have received a copy of the GNU Lesser General Public# License along with this library; if not, write to the Free Software# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA#============================================================================# Copyright (c) 2006-2007 Xensource Inc.# Copyright (c) 2007 Tom Wilkie#============================================================================from xen.xend.XendLogging import logfrom xen.xend.XendBase import XendBaseimport xen.lowlevel.xcxc = xen.lowlevel.xc.xc()class XendVMMetrics(XendBase):    """VM Metrics."""    def getClass(self):        return "VM_metrics"        def getAttrRO(self):        attrRO = ['memory_actual',                  'VCPUs_number',                  'VCPUs_utilisation',                  'VCPUs_CPU',                  'VCPUs_flags',                  'VCPUs_params',                  'state',                  'start_time',                  'last_updated']        return XendBase.getAttrRO() + attrRO    getClass    = classmethod(getClass)    getAttrRO   = classmethod(getAttrRO)    def __init__(self, uuid, xend_domain_instance):        XendBase.__init__(self, uuid, {})        self.xend_domain_instance = xend_domain_instance            def get_memory_actual(self):        domInfo = self.xend_domain_instance.getDomInfo()        if domInfo:            return domInfo["mem_kb"] * 1024        else:            return 0    def get_VCPUs_number(self):        domInfo = self.xend_domain_instance.getDomInfo()        if domInfo:            return domInfo["online_vcpus"]        else:            return 0        def get_VCPUs_utilisation(self):        return self.xend_domain_instance.get_vcpus_util()    def get_VCPUs_CPU(self):        domid = self.xend_domain_instance.getDomid()        if domid is not None:            vcpus_cpu = {}            vcpus_max = self.xend_domain_instance.info['VCPUs_max']            for i in range(0, vcpus_max):                info = xc.vcpu_getinfo(domid, i)                vcpus_cpu[i] = info['cpu']            return vcpus_cpu        else:            return {}    def get_VCPUs_flags(self):        domid = self.xend_domain_instance.getDomid()        if domid is not None:            vcpus_flags = {}            vcpus_max = self.xend_domain_instance.info['VCPUs_max']            for i in range(0, vcpus_max):                info = xc.vcpu_getinfo(domid, i)                flags = []                def set_flag(flag):                    if info[flag] == 1:                        flags.append(flag)                set_flag('blocked')                set_flag('online')                set_flag('running')                vcpus_flags[i] = flags            return vcpus_flags        else:            return {}    def get_state(self):        try:            domid = self.xend_domain_instance.getDomid()            domlist = xc.domain_getinfo(domid, 1)            if domlist and domid == domlist[0]['domid']:                dominfo = domlist[0]                states = []                def addState(key):                    if dominfo[key] == 1:                        states.append(key)                addState("running")                addState("blocked")                addState("paused")                addState("dying")                addState("crashed")                addState("shutdown")                return states        except Exception, err:            # ignore missing domain            log.trace("domain_getinfo(%d) failed, ignoring: %s", domid, str(err))        return []    def get_VCPUs_params(self):        domid = self.xend_domain_instance.getDomid()        if domid is not None:            params_live = {}            vcpus_max = self.xend_domain_instance.info['VCPUs_max']            for i in range(0, vcpus_max):                info = xc.vcpu_getinfo(domid, i)                params_live['cpumap%i' % i] = \                    ",".join(map(str, info['cpumap']))            params_live.update(xc.sched_credit_domain_get(domid))                        return params_live        else:            return {}    def get_start_time(self):        import xen.xend.XendAPI as XendAPI        return XendAPI.datetime(            self.xend_domain_instance.info.get("start_time", 0))        def get_last_updated(self):        import xen.xend.XendAPI as XendAPI        return XendAPI.now()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -