def __init__(self, pid): """ Initialize a HostSample. :param pid: The PID of this vdsm host. :type pid: int """ TimedSample.__init__(self) self.interfaces = dict( (link.name, InterfaceSample(link)) for link in getLinks()) self.pidcpu = PidCpuSample(pid) self.totcpu = TotalCpuSample() meminfo = utils.readMemInfo() freeOrCached = (meminfo['MemFree'] + meminfo['Cached'] + meminfo['Buffers']) self.memUsed = 100 - int(100.0 * (freeOrCached) / meminfo['MemTotal']) self.anonHugePages = meminfo.get('AnonHugePages', 0) / 1024 try: self.cpuLoad = file('/proc/loadavg').read().split()[1] except: self.cpuLoad = '0.0' self.diskStats = self._getDiskStats() try: with file(_THP_STATE_PATH) as f: s = f.read() self.thpState = s[s.index('[') + 1:s.index(']')] except: self.thpState = 'never' self.cpuCores = CpuCoreSample() self.numaNodeMem = NumaNodeMemorySample()
def __init__(self, pid): """ Initialize a HostSample. :param pid: The PID of this vdsm host. :type pid: int """ TimedSample.__init__(self) self.interfaces = dict( (link.name, InterfaceSample(link)) for link in getLinks()) self.pidcpu = PidCpuSample(pid) self.totcpu = TotalCpuSample() meminfo = utils.readMemInfo() freeOrCached = (meminfo['MemFree'] + meminfo['Cached'] + meminfo['Buffers']) self.memUsed = 100 - int(100.0 * (freeOrCached) / meminfo['MemTotal']) self.anonHugePages = meminfo.get('AnonHugePages', 0) / 1024 try: self.cpuLoad = file('/proc/loadavg').read().split()[1] except: self.cpuLoad = '0.0' self.diskStats = self._getDiskStats() try: with file(_THP_STATE_PATH) as f: s = f.read() self.thpState = s[s.index('[') + 1:s.index(']')] except: self.thpState = 'never' self.cpuCores = CpuCoreSample() self.numaNodeMem = NumaNodeMemorySample() ENGINE_DEFAULT_POLL_INTERVAL = 15 self.recentClient = ( self.timestamp - os.stat(P_VDSM_CLIENT_LOG).st_mtime < 2 * ENGINE_DEFAULT_POLL_INTERVAL)
def _get_interfaces_and_samples(): links_and_samples = {} for link in ipwrapper.getLinks(): try: links_and_samples[link.name] = InterfaceSample(link) except IOError as e: # this handles a race condition where the device is now no # longer exists and netlink fails to fetch it if e.errno == errno.ENODEV: continue raise return links_and_samples
def _updateIfidsIfrates(self): devices = getLinks() self._ifids = [dev.name for dev in devices] self._ifrates = [] for dev in devices: if dev.isNIC(): speed = netinfo.nicSpeed(dev.name) elif dev.isBOND(): speed = netinfo.bondSpeed(dev.name) else: speed = 0 self._ifrates.append(speed)
def wait_for_device(name, timeout=1): """ Wait for a network device to appear in a given timeout. If the device is not created by then, raise a ConfigNetworkError. """ with monitor.Monitor(timeout=timeout, groups=('link',), silent_timeout=True) as mon: if name in (link.name for link in ipwrapper.getLinks()): return for event in mon: if event.get('name') == name and event.get('event') == 'new_link': return raise ConfigNetworkError(ERR_FAILED_IFUP, 'Device %s was not created ' 'during a %ss timeout.' % (name, timeout))
def _updateIfidsIfrates(self): devices = getLinks() self._ifids = [dev.name for dev in devices] self._ifrates = [] for dev in devices: if dev.isNIC(): speed = netinfo.nicSpeed(dev.name) elif dev.isBOND(): speed = netinfo.bondSpeed(dev.name) elif dev.isVLAN(): speed = netinfo.vlanSpeed(dev.name) else: speed = 0 self._ifrates.append(speed)
def _delTarget(network, parent, target): fs = list(filters(network, parent)) if fs: filt = fs[0] else: return [] devices = set(link.name for link in ipwrapper.getLinks()) acts = [act for act in filt.actions if act.target in devices and act.target != target] if acts: filt = Filter(prio=filt.prio, handle=filt.handle, actions=acts) _filter_replace(network, parent, filt) else: tc_filter.delete(network, filt.prio, parent=parent) return acts
def __init__(self, pid): """ Initialize a HostSample. :param pid: The PID of this vdsm host. :type pid: int """ TimedSample.__init__(self) self.interfaces = dict( (link.name, InterfaceSample(link)) for link in getLinks()) self.pidcpu = PidCpuSample(pid) self.totcpu = TotalCpuSample() meminfo = utils.readMemInfo() freeOrCached = (meminfo['MemFree'] + meminfo['Cached'] + meminfo['Buffers']) self.memUsed = 100 - int(100.0 * (freeOrCached) / meminfo['MemTotal']) self.anonHugePages = meminfo.get('AnonHugePages', 0) / 1024 try: with open('/proc/loadavg') as loadavg: self.cpuLoad = loadavg.read().split()[1] except: self.cpuLoad = '0.0' self.diskStats = self._getDiskStats() try: with open(_THP_STATE_PATH) as f: s = f.read() self.thpState = s[s.index('[') + 1:s.index(']')] except: self.thpState = 'never' self.cpuCores = CpuCoreSample() self.numaNodeMem = NumaNodeMemorySample() ENGINE_DEFAULT_POLL_INTERVAL = 15 try: self.recentClient = ( self.timestamp - os.stat(P_VDSM_CLIENT_LOG).st_mtime < 2 * ENGINE_DEFAULT_POLL_INTERVAL) except OSError as e: if e.errno == errno.ENOENT: self.recentClient = False else: raise