Change in vdsm[master]: Online check ksmState and ksmPages.

apahim at redhat.com apahim at redhat.com
Tue Nov 27 12:54:03 UTC 2012


Amador Pahim has uploaded a new change for review.

Change subject: Online check ksmState and ksmPages.
......................................................................

Online check ksmState and ksmPages.

Currently ksmState and ksmPages is updated only when adjust()
is called (vm._startUnderlyingVm() and libvirt.releaseVm()).
Since ksmtuned can turn on/off ksm any time, vdsm will report
inaccurate information until adjust() be called.
This patch changes ksmState and ksmPages update to every API
call, reflecting always the accurate information.

Change-Id: I84c2f8b80529a47662bdeac80bb3f71defd0758a
Signed-off-by: Amador Pahim <apahim at redhat.com>
---
M vdsm/API.py
M vdsm/ksm.py
2 files changed, 25 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/10/9510/1

diff --git a/vdsm/API.py b/vdsm/API.py
index 0710191..a0f2067 100644
--- a/vdsm/API.py
+++ b/vdsm/API.py
@@ -1124,8 +1124,8 @@
             stats.update(self._cif.mom.getKsmStats())
         else:
             stats['momStatus'] = 'disabled'
-            stats['ksmState'] = self._cif.ksmMonitor.state
-            stats['ksmPages'] = self._cif.ksmMonitor.pages
+            stats['ksmState'] = self._ksmState()
+            stats['ksmPages'] = self._ksmPages()
             stats['ksmCpu'] = self._cif.ksmMonitor.cpuUsage
             stats['memShared'] = self._memShared() / Mbytes
 
@@ -1372,6 +1372,18 @@
         """
         return (self._cif.ksmMonitor.memsharing() * PAGE_SIZE_BYTES)
 
+    def _ksmState(self):
+        """
+        Return ksm running state.
+        """
+        return (self._cif.ksmMonitor.running())
+
+    def _ksmPages(self):
+        """
+        Return how many pages to scan before ksm will sleep.
+        """
+        return (self._cif.ksmMonitor.npages())
+
     def _memCommitted(self):
         """
         Return the amount of memory (Mb) committed for VMs
diff --git a/vdsm/ksm.py b/vdsm/ksm.py
index 3037a65..3c858b6 100644
--- a/vdsm/ksm.py
+++ b/vdsm/ksm.py
@@ -55,7 +55,6 @@
     def run(self):
         start()
         try:
-            self.state, self.pages = self.readState()
             KSM_MONITOR_INTERVAL = 60
             jiff0 = self._getKsmdJiffies()
             while True:
@@ -66,9 +65,6 @@
                 jiff0 = jiff1
         except:
             self._cif.log.error("Error monitoring KSM", exc_info=True)
-
-    def readState(self):
-        return running(), npages()
 
     def adjust(self):
         """Adjust ksm's vigor
@@ -81,10 +77,9 @@
         try:
             utils.execCmd([constants.EXT_SERVICE, 'ksmtuned', 'retune'],
                           sudo=True)
-            self.state, self.pages = self.readState()
         finally:
             self._lock.release()
-        return self.state
+        return self.running()
 
     def memsharing(self):
         try:
@@ -92,21 +87,17 @@
         except:
             return 0
 
+    def running(self):
+        try:
+            return (int(file('/sys/kernel/mm/ksm/run').read()) & 1 == 1)
+        except:
+            return False
 
-def running():
-    try:
-        state = int(file('/sys/kernel/mm/ksm/run').read()) & 1 == 1
-        return state
-    except:
-        return False
-
-
-def npages():
-    try:
-        npages = int(file('/sys/kernel/mm/ksm/pages_to_scan').read())
-        return npages
-    except:
-        return 0
+    def npages(self):
+        try:
+            return (int(file('/sys/kernel/mm/ksm/pages_to_scan').read()))
+        except:
+            return 0
 
 
 def start():


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I84c2f8b80529a47662bdeac80bb3f71defd0758a
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Amador Pahim <apahim at redhat.com>


More information about the vdsm-patches mailing list