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 <[email protected]> --- 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 <[email protected]> _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
