conn/domain: Privatize stats list

This commit is contained in:
Cole Robinson 2015-05-04 18:16:09 -04:00
parent fbf841151d
commit cb0eaf23d8
2 changed files with 41 additions and 41 deletions

View File

@ -187,8 +187,8 @@ class vmmConnection(vmmGObject):
self._objects = _ObjectList()
self.record = []
self.hostinfo = None
self._stats = []
self._hostinfo = None
self.add_gsettings_handle(
self._on_config_pretty_name_changed(
@ -274,12 +274,12 @@ class vmmConnection(vmmGObject):
def host_memory_size(self):
if not self._backend.is_open():
return 0
return self.hostinfo[1] * 1024
return self._hostinfo[1] * 1024
def host_active_processor_count(self):
if not self._backend.is_open():
return 0
return self.hostinfo[2]
return self._hostinfo[2]
def connect(self, name, callback, *args):
handle_id = vmmGObject.connect(self, name, callback, *args)
@ -816,7 +816,7 @@ class vmmConnection(vmmGObject):
self._network_cb_ids = []
self._backend.close()
self.record = []
self._stats = []
if self._init_object_event:
self._init_object_event.clear()
@ -1118,7 +1118,7 @@ class vmmConnection(vmmGObject):
if self.using_network_events and not force:
pollnet = False
self.hostinfo = self._backend.getInfo()
self._hostinfo = self._backend.getInfo()
gone_objects, preexisting_objects = self._poll(
initial_poll, pollvm, pollnet, pollpool, polliface, pollnodedev)
@ -1164,9 +1164,9 @@ class vmmConnection(vmmGObject):
now = time.time()
expected = self.config.get_stats_history_length()
current = len(self.record)
current = len(self._stats)
if current > expected:
del self.record[expected:current]
del self._stats[expected:current]
mem = 0
cpuTime = 0
@ -1194,8 +1194,8 @@ class vmmConnection(vmmGObject):
pcentHostCpu = 0
pcentMem = mem * 100.0 / self.host_memory_size()
if len(self.record) > 0:
prevTimestamp = self.record[0]["timestamp"]
if len(self._stats) > 0:
prevTimestamp = self._stats[0]["timestamp"]
host_cpus = self.host_active_processor_count()
pcentHostCpu = ((cpuTime) * 100.0 /
@ -1219,7 +1219,7 @@ class vmmConnection(vmmGObject):
"netMaxRate" : netMaxRate,
}
self.record.insert(0, newStats)
self._stats.insert(0, newStats)
def schedule_priority_tick(self, **kwargs):
@ -1266,9 +1266,9 @@ class vmmConnection(vmmGObject):
########################
def _get_record_helper(self, record_name):
if len(self.record) == 0:
if len(self._stats) == 0:
return 0
return self.record[0][record_name]
return self._stats[0][record_name]
def _vector_helper(self, record_name, limit, ceil=100.0):
vector = []
@ -1277,8 +1277,8 @@ class vmmConnection(vmmGObject):
statslen = min(statslen, limit)
for i in range(statslen):
if i < len(self.record):
vector.append(self.record[i][record_name] / ceil)
if i < len(self._stats):
vector.append(self._stats[i][record_name] / ceil)
else:
vector.append(0)

View File

@ -305,8 +305,8 @@ class vmmDomain(vmmLibvirtObject):
self.cloning = False
self.record = []
self.maxRecord = {
self._stats = []
self._stats_rates = {
"diskRdRate" : 10.0,
"diskWrRate" : 10.0,
"netTxRate" : 10.0,
@ -1542,9 +1542,9 @@ class vmmDomain(vmmLibvirtObject):
pcentHostCpu = 0
pcentGuestCpu = 0
if len(self.record) > 0:
prevTimestamp = self.record[0]["timestamp"]
prevCpuTime = self.record[0]["cpuTimeAbs"]
if len(self._stats) > 0:
prevTimestamp = self._stats[0]["timestamp"]
prevCpuTime = self._stats[0]["cpuTimeAbs"]
if not (info[0] in [libvirt.VIR_DOMAIN_SHUTOFF,
libvirt.VIR_DOMAIN_CRASHED]):
@ -1566,25 +1566,25 @@ class vmmDomain(vmmLibvirtObject):
return cpuTime, cpuTimeAbs, pcentHostCpu, pcentGuestCpu
def _get_cur_rate(self, what):
if len(self.record) > 1:
ret = (float(self.record[0][what] -
self.record[1][what]) /
float(self.record[0]["timestamp"] -
self.record[1]["timestamp"]))
if len(self._stats) > 1:
ret = (float(self._stats[0][what] -
self._stats[1][what]) /
float(self._stats[0]["timestamp"] -
self._stats[1]["timestamp"]))
else:
ret = 0.0
return max(ret, 0, 0) # avoid negative values at poweroff
def _set_max_rate(self, record, what):
if record[what] > self.maxRecord[what]:
self.maxRecord[what] = record[what]
if record[what] > self._stats_rates[what]:
self._stats_rates[what] = record[what]
def _get_max_rate(self, name1, name2):
return float(max(self.maxRecord[name1], self.maxRecord[name2]))
return float(max(self._stats_rates[name1], self._stats_rates[name2]))
def _get_record_helper(self, record_name):
if len(self.record) == 0:
if len(self._stats) == 0:
return 0
return self.record[0][record_name]
return self._stats[0][record_name]
def _vector_helper(self, record_name, limit, ceil=100.0):
vector = []
@ -1593,8 +1593,8 @@ class vmmDomain(vmmLibvirtObject):
statslen = min(statslen, limit)
for i in range(statslen):
if i < len(self.record):
vector.append(self.record[i][record_name] / ceil)
if i < len(self._stats):
vector.append(self._stats[i][record_name] / ceil)
else:
vector.append(0)
@ -1743,18 +1743,18 @@ class vmmDomain(vmmLibvirtObject):
def _on_config_sample_network_traffic_changed(self, ignore=None):
self._enable_net_poll = self.config.get_stats_enable_net_poll()
if self._enable_net_poll and len(self.record) > 1:
if self._enable_net_poll and len(self._stats) > 1:
rxBytes, txBytes = self._sample_network_traffic()
self.record[0]["netRxKiB"] = rxBytes / 1024
self.record[0]["netTxKiB"] = txBytes / 1024
self._stats[0]["netRxKiB"] = rxBytes / 1024
self._stats[0]["netTxKiB"] = txBytes / 1024
def _on_config_sample_disk_io_changed(self, ignore=None):
self._enable_disk_poll = self.config.get_stats_enable_disk_poll()
if self._enable_disk_poll and len(self.record) > 1:
if self._enable_disk_poll and len(self._stats) > 1:
rdBytes, wrBytes = self._sample_disk_io()
self.record[0]["diskRdKiB"] = rdBytes / 1024
self.record[0]["diskWrKiB"] = wrBytes / 1024
self._stats[0]["diskRdKiB"] = rdBytes / 1024
self._stats[0]["diskWrKiB"] = wrBytes / 1024
def _on_config_sample_mem_stats_changed(self, ignore=None):
self._enable_mem_stats = self.config.get_stats_enable_memory_poll()
@ -1909,9 +1909,9 @@ class vmmDomain(vmmLibvirtObject):
def _tick_stats(self, info):
expected = self.config.get_stats_history_length()
current = len(self.record)
current = len(self._stats)
if current > expected:
del self.record[expected:current]
del self._stats[expected:current]
# Xen reports complete crap for Dom0 max memory
# (ie MAX_LONG) so lets clamp it to the actual
@ -1945,7 +1945,7 @@ class vmmDomain(vmmLibvirtObject):
newStats[r + "Rate"] = self._get_cur_rate(r + "KiB")
self._set_max_rate(newStats, r + "Rate")
self.record.insert(0, newStats)
self._stats.insert(0, newStats)
########################