mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
domain: Don't pass timestamp to domain tick()
Since we might not poll stats info until a decent amount of time after this timestamp, it messes up VM stats reporting. Our usage still isn't correct because we use a later timestamp for calculating total host usage. We could fix it by averaging out the timestamp of each VM but I don't care that much at the moment.
This commit is contained in:
parent
b7ee86541d
commit
ed5e67485c
@ -1223,14 +1223,12 @@ class vmmConnection(vmmGObject):
|
|||||||
|
|
||||||
self.idle_add(tick_send_signals)
|
self.idle_add(tick_send_signals)
|
||||||
|
|
||||||
now = time.time()
|
|
||||||
|
|
||||||
ticklist = []
|
ticklist = []
|
||||||
def add_to_ticklist(l, args=()):
|
def add_to_ticklist(l, args=()):
|
||||||
ticklist.extend([(o, args) for o in l.values()])
|
ticklist.extend([(o, args) for o in l.values()])
|
||||||
|
|
||||||
updateVMs = noStatsUpdate and newVMs or vms
|
updateVMs = noStatsUpdate and newVMs or vms
|
||||||
add_to_ticklist(updateVMs, (now,))
|
add_to_ticklist(updateVMs)
|
||||||
add_to_ticklist(noStatsUpdate and newNets or nets)
|
add_to_ticklist(noStatsUpdate and newNets or nets)
|
||||||
add_to_ticklist(noStatsUpdate and newPools or pools)
|
add_to_ticklist(noStatsUpdate and newPools or pools)
|
||||||
add_to_ticklist(noStatsUpdate and newInterfaces or interfaces)
|
add_to_ticklist(noStatsUpdate and newInterfaces or interfaces)
|
||||||
@ -1251,15 +1249,16 @@ class vmmConnection(vmmGObject):
|
|||||||
"Ignoring.")
|
"Ignoring.")
|
||||||
|
|
||||||
if not noStatsUpdate:
|
if not noStatsUpdate:
|
||||||
self._recalculate_stats(now, updateVMs.values())
|
self._recalculate_stats(updateVMs.values())
|
||||||
self.idle_emit("resources-sampled")
|
self.idle_emit("resources-sampled")
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
def _recalculate_stats(self, now, vms):
|
def _recalculate_stats(self, vms):
|
||||||
if not self._backend.is_open():
|
if not self._backend.is_open():
|
||||||
return
|
return
|
||||||
|
|
||||||
|
now = time.time()
|
||||||
expected = self.config.get_stats_history_length()
|
expected = self.config.get_stats_history_length()
|
||||||
current = len(self.record)
|
current = len(self.record)
|
||||||
if current > expected:
|
if current > expected:
|
||||||
|
@ -1713,10 +1713,7 @@ class vmmDomain(vmmLibvirtObject):
|
|||||||
|
|
||||||
return rd, wr
|
return rd, wr
|
||||||
|
|
||||||
def tick(self, now=None):
|
def tick(self):
|
||||||
if now is None:
|
|
||||||
now = time.time()
|
|
||||||
|
|
||||||
# Invalidate cached values
|
# Invalidate cached values
|
||||||
self._invalidate_xml()
|
self._invalidate_xml()
|
||||||
|
|
||||||
@ -1734,6 +1731,7 @@ class vmmDomain(vmmLibvirtObject):
|
|||||||
self.is_management_domain()):
|
self.is_management_domain()):
|
||||||
info[1] = self.conn.host_memory_size()
|
info[1] = self.conn.host_memory_size()
|
||||||
|
|
||||||
|
now = time.time()
|
||||||
(cpuTime, cpuTimeAbs,
|
(cpuTime, cpuTimeAbs,
|
||||||
pcentHostCpu, pcentGuestCpu) = self._sample_cpu_stats(info, now)
|
pcentHostCpu, pcentGuestCpu) = self._sample_cpu_stats(info, now)
|
||||||
pcentCurrMem, curmem = self._sample_mem_stats(info)
|
pcentCurrMem, curmem = self._sample_mem_stats(info)
|
||||||
|
@ -79,8 +79,8 @@ class vmmLibvirtObject(vmmGObject):
|
|||||||
ignore = xml
|
ignore = xml
|
||||||
return
|
return
|
||||||
|
|
||||||
def tick(self, now):
|
def tick(self):
|
||||||
ignore = now
|
pass
|
||||||
|
|
||||||
|
|
||||||
##################
|
##################
|
||||||
|
Loading…
Reference in New Issue
Block a user