Dudi Maroshi has uploaded a new change for review. Change subject: monitor: implement NUMA aware KSM policy ......................................................................
monitor: implement NUMA aware KSM policy Add parameter to HostKSM.py collector to collect merge_across_nodes Add parameter to KSM.py controller to udpate merge_across_nodes kernel flag Used Entity.py to debug by monitoring the state of variables change Change-Id: I26caf0abe0a33a82b242549ba2ba4ad7f01ec925 Related-to: https://bugzilla.redhat.com/show_bug.cgi?id=840114 Signed-off-by: Dudi Maroshi <d...@redhat.com> --- M mom/Collectors/HostKSM.py M mom/Controllers/KSM.py M mom/Entity.py 3 files changed, 13 insertions(+), 3 deletions(-) git pull ssh://gerrit.ovirt.org:29418/mom refs/changes/30/40130/1 diff --git a/mom/Collectors/HostKSM.py b/mom/Collectors/HostKSM.py index 68ab957..027dd0b 100644 --- a/mom/Collectors/HostKSM.py +++ b/mom/Collectors/HostKSM.py @@ -32,17 +32,19 @@ ksm_full_scans - The number of times all mergeable memory areas have been scanned ksm_shareable - Estimated amount of host memory that is eligible for sharing ksmd_cpu_usage - The cpu usage of kernel thread ksmd during the monitor interval + ksm_share_across_nodes - Toggle, policy_string, Share memory pages across all NUMA nodes = 1, default = 1 """ sysfs_keys = [ 'full_scans', 'pages_sharing', 'pages_unshared', 'run', 'pages_shared', 'pages_to_scan', 'pages_volatile', - 'sleep_millisecs' ] + 'sleep_millisecs', 'merge_across_nodes'] def __init__(self, properties): self.open_files() self.interval = properties['interval'] self.pid = self._get_ksmd_pid() self.last_jiff = self.get_ksmd_jiffies() + self.log = logging.getLogger('mom.Collectors.HostKSM') def __del__(self): for datum in self.sysfs_keys: @@ -112,6 +114,7 @@ data['ksm_' + datum] = parse_int('(.*)', file.read()) data['ksm_shareable'] = self.get_shareable_mem() data['ksmd_cpu_usage'] = self.get_ksmd_cpu_usage() +# self.log.debug("HostKSM.collect.data[ksm_merge_across_nodes] = %s", data['ksm_merge_across_nodes']) return data def getFields(self=None): diff --git a/mom/Controllers/KSM.py b/mom/Controllers/KSM.py index fbe921a..1e07e5a 100644 --- a/mom/Controllers/KSM.py +++ b/mom/Controllers/KSM.py @@ -20,14 +20,17 @@ """ Simple controller to tune KSM paramaters. Output triggers are: - ksm_run - Change the state of the KSM kernel daemon: - 0 - Stop, 1 - Run + 0 - Stop, 1 - Run, 2 - unmerge shared pages - ksm_pages_to_scan - Set the number of pages to be scanned per work unit - ksm_sleep_millisecs - Set the time to sleep between scans + - ksm_merge_across_nodes - Toggle (0/1), default 1, + merge across all nodes = 1, merge inside each NUMA node = 0 """ def __init__(self, properties): self.hypervisor_iface = properties['hypervisor_iface'] self.logger = logging.getLogger('mom.Controllers.KSM') - self.cur = { 'run': '0', 'pages_to_scan': '0', 'sleep_millisecs': '0' } + self.cur = { 'run': '0', 'pages_to_scan': '0', 'sleep_millisecs': '0', 'merge_across_nodes': '8'} + self.logger.debug("KSM policy initialized") def write_value(self, fname, value): try: diff --git a/mom/Entity.py b/mom/Entity.py index 48a065c..7874ea1 100644 --- a/mom/Entity.py +++ b/mom/Entity.py @@ -14,6 +14,8 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +import logging + class EntityError(Exception): def __init__(self, message): self.message = message @@ -31,6 +33,7 @@ self.statistics = [] self.controls = {} self.monitor = monitor + self.logger = logging.getLogger('mom.Entity') def _set_property(self, name, val): self.properties[name] = val @@ -141,6 +144,7 @@ """ Set a control variable in this instance. """ +# self.logger.debug("set Control %s=%s", name, val) self.controls[name] = val def GetControl(self, name): -- To view, visit https://gerrit.ovirt.org/40130 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I26caf0abe0a33a82b242549ba2ba4ad7f01ec925 Gerrit-PatchSet: 1 Gerrit-Project: mom Gerrit-Branch: master Gerrit-Owner: Dudi Maroshi <d...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches