Petr Šebek has uploaded a new change for review.

Change subject: Removal of needless base class StatsThread
......................................................................

Removal of needless base class StatsThread

From this base class inherit only class HostStatsThread, therefore can
be content of class StatsThread moved to class HostStatsThread without
changing of functionality and with higher clarity.

Change-Id: Ica913d6e97d37c7729b77574373247add2125338
Signed-off-by: Petr Sebek <pse...@redhat.com>
---
M vdsm/sampling.py
1 file changed, 64 insertions(+), 77 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/45/20745/1

diff --git a/vdsm/sampling.py b/vdsm/sampling.py
index 851034d..41453d6 100644
--- a/vdsm/sampling.py
+++ b/vdsm/sampling.py
@@ -358,30 +358,47 @@
             intervalAccum = (intervalAccum + waitInterval) % maxInterval
 
 
-class StatsThread(threading.Thread):
+class HostStatsThread(threading.Thread):
     """
-    A thread that periodically checks the stats of interfaces
+    A thread that periodically samples host statistics.
     """
     AVERAGING_WINDOW = 5
     SAMPLE_INTERVAL_SEC = 2
 
-    def __init__(self, log, ifids, ifrates):
+    def __init__(self, cif, log, ifids, ifrates):
+        self.startTime = time.time()
+
         threading.Thread.__init__(self)
         self._log = log
         self._stopEvent = threading.Event()
         self._samples = []
         self._ifids = ifids
         self._ifrates = ifrates
-        self._ncpus = 1
         # in bytes-per-second
-        self._lineRate = (sum(ifrates) or 1000) * (10 ** 6) / 8
+        self._lineRate = (sum(self._ifrates) or 1000) * (10 ** 6) / 8
         self._lastSampleTime = time.time()
 
+        self._imagesStatus = ImagePathStatus(cif)
+        self._pid = os.getpid()
+        self._ncpus = max(os.sysconf('SC_NPROCESSORS_ONLN'), 1)
+
     def stop(self):
+        self._imagesStatus.stop()
         self._stopEvent.set()
 
-    def sample(self):  # override
-        pass
+    def _updateIfRates(self, hs0, hs1):
+        i = 0
+        for ifid in self._ifids:
+            if (hs0.interfaces[ifid].operstate !=
+                    hs1.interfaces[ifid].operstate):
+                self._ifrates[i] = netinfo.speed(ifid)
+            i += 1
+
+    def sample(self):
+        hs = HostSample(self._pid, self._ifids)
+        if self._samples:
+            self._updateIfRates(self._samples[-1], hs)
+        return hs
 
     def run(self):
         import vm
@@ -404,6 +421,46 @@
                 self._log.error("Error while sampling stats", exc_info=True)
 
     def get(self):
+        stats = self._getInterfacesStats()
+        stats['cpuSysVdsmd'] = stats['cpuUserVdsmd'] = 0.0
+        stats['storageDomains'] = {}
+        if self._imagesStatus._cif.irs:
+            self._imagesStatus._refreshStorageDomains()
+        now = time.time()
+        for sd, d in self._imagesStatus.storageDomains.iteritems():
+            stats['storageDomains'][sd] = {
+                'code': d['code'],
+                'delay': d['delay'],
+                'lastCheck': d['lastCheck'],
+                'valid': d['valid'],
+                'version': d['version'],
+                'acquired': d['acquired'],
+            }
+        stats['elapsedTime'] = int(now - self.startTime)
+        if len(self._samples) < 2:
+            return stats
+        hs0, hs1 = self._samples[0], self._samples[-1]
+        interval = hs1.timestamp - hs0.timestamp
+        jiffies = (hs1.pidcpu.user - hs0.pidcpu.user) % (2 ** 32)
+        stats['cpuUserVdsmd'] = (jiffies / interval) % (2 ** 32)
+        jiffies = hs1.pidcpu.sys - hs0.pidcpu.sys
+        stats['cpuSysVdsmd'] = (jiffies / interval) % (2 ** 32)
+
+        jiffies = (hs1.totcpu.user - hs0.totcpu.user) % (2 ** 32)
+        stats['cpuUser'] = jiffies / interval / self._ncpus
+        jiffies = (hs1.totcpu.sys - hs0.totcpu.sys) % (2 ** 32)
+        stats['cpuSys'] = jiffies / interval / self._ncpus
+        stats['cpuIdle'] = max(0.0,
+                               100.0 - stats['cpuUser'] - stats['cpuSys'])
+        stats['memUsed'] = hs1.memUsed
+        stats['anonHugePages'] = hs1.anonHugePages
+        stats['cpuLoad'] = hs1.cpuLoad
+
+        stats['diskStats'] = hs1.diskStats
+        stats['thpState'] = hs1.thpState
+        return stats
+
+    def _getInterfacesStats(self):
         """
         Compile and return a dict containing the stats.
 
@@ -468,76 +525,6 @@
         stats['rxDropped'] = rxDropped
         stats['txDropped'] = txDropped
 
-        return stats
-
-
-class HostStatsThread(StatsThread):
-    """
-    A thread that periodically samples host statistics.
-    """
-    def __init__(self, cif, log, ifids, ifrates):
-        self.startTime = time.time()
-        StatsThread.__init__(self, log, ifids, ifrates)
-        self._imagesStatus = ImagePathStatus(cif)
-        self._pid = os.getpid()
-        self._ncpus = max(os.sysconf('SC_NPROCESSORS_ONLN'), 1)
-
-    def stop(self):
-        self._imagesStatus.stop()
-        StatsThread.stop(self)
-
-    def _updateIfRates(self, hs0, hs1):
-        i = 0
-        for ifid in self._ifids:
-            if (hs0.interfaces[ifid].operstate !=
-                    hs1.interfaces[ifid].operstate):
-                self._ifrates[i] = netinfo.speed(ifid)
-            i += 1
-
-    def sample(self):
-        hs = HostSample(self._pid, self._ifids)
-        if self._samples:
-            self._updateIfRates(self._samples[-1], hs)
-        return hs
-
-    def get(self):
-        stats = StatsThread.get(self)
-        stats['cpuSysVdsmd'] = stats['cpuUserVdsmd'] = 0.0
-        stats['storageDomains'] = {}
-        if self._imagesStatus._cif.irs:
-            self._imagesStatus._refreshStorageDomains()
-        now = time.time()
-        for sd, d in self._imagesStatus.storageDomains.iteritems():
-            stats['storageDomains'][sd] = {
-                'code': d['code'],
-                'delay': d['delay'],
-                'lastCheck': d['lastCheck'],
-                'valid': d['valid'],
-                'version': d['version'],
-                'acquired': d['acquired'],
-            }
-        stats['elapsedTime'] = int(now - self.startTime)
-        if len(self._samples) < 2:
-            return stats
-        hs0, hs1 = self._samples[0], self._samples[-1]
-        interval = hs1.timestamp - hs0.timestamp
-        jiffies = (hs1.pidcpu.user - hs0.pidcpu.user) % (2 ** 32)
-        stats['cpuUserVdsmd'] = (jiffies / interval) % (2 ** 32)
-        jiffies = hs1.pidcpu.sys - hs0.pidcpu.sys
-        stats['cpuSysVdsmd'] = (jiffies / interval) % (2 ** 32)
-
-        jiffies = (hs1.totcpu.user - hs0.totcpu.user) % (2 ** 32)
-        stats['cpuUser'] = jiffies / interval / self._ncpus
-        jiffies = (hs1.totcpu.sys - hs0.totcpu.sys) % (2 ** 32)
-        stats['cpuSys'] = jiffies / interval / self._ncpus
-        stats['cpuIdle'] = max(0.0,
-                               100.0 - stats['cpuUser'] - stats['cpuSys'])
-        stats['memUsed'] = hs1.memUsed
-        stats['anonHugePages'] = hs1.anonHugePages
-        stats['cpuLoad'] = hs1.cpuLoad
-
-        stats['diskStats'] = hs1.diskStats
-        stats['thpState'] = hs1.thpState
         return stats
 
 


-- 
To view, visit http://gerrit.ovirt.org/20745
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ica913d6e97d37c7729b77574373247add2125338
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Petr Šebek <pse...@redhat.com>
_______________________________________________
vdsm-patches mailing list
vdsm-patches@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches

Reply via email to