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