[virt-tools-list] [virt-manager PATCH 1/2] virt-install: Add --memtune option

Chen Hanxiao chenhanxiao at cn.fujitsu.com
Mon Feb 24 07:28:06 UTC 2014


This patch provides the ability to
tune memroy tunable parameters for the domain.

Signed-off-by: Chen Hanxiao <chenhanxiao at cn.fujitsu.com>
---
 virtinst/__init__.py         |  1 +
 virtinst/cli.py              | 18 ++++++++++++++++++
 virtinst/domainmemorytune.py | 35 +++++++++++++++++++++++++++++++++++
 virtinst/guest.py            |  4 +++-
 4 files changed, 57 insertions(+), 1 deletion(-)
 create mode 100644 virtinst/domainmemorytune.py

diff --git a/virtinst/__init__.py b/virtinst/__init__.py
index 62b6b36..e197bd4 100644
--- a/virtinst/__init__.py
+++ b/virtinst/__init__.py
@@ -27,6 +27,7 @@ from virtinst.osxml import OSXML
 from virtinst.domainfeatures import DomainFeatures
 from virtinst.domainnumatune import DomainNumatune
 from virtinst.domainblkiotune import DomainBlkiotune
+from virtinst.domainmemorytune import DomainMemorytune
 from virtinst.clock import Clock
 from virtinst.cpu import CPU, CPUFeature
 from virtinst.seclabel import Seclabel
diff --git a/virtinst/cli.py b/virtinst/cli.py
index fb2569e..5bdc1de 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -782,6 +782,8 @@ def add_guest_xml_options(geng):
                     help=_("Set domain security driver configuration."))
     geng.add_argument("--numatune",
                     help=_("Tune NUMA policy for the domain process."))
+    geng.add_argument("--memtune", action="append",
+                    help=_("Tune memory policy for the domain process."))
     geng.add_argument("--blkiotune", action="append",
                     help=_("Tune blkio policy for the domain process."))
     geng.add_argument("--features",
@@ -1248,6 +1250,21 @@ class ParserMemory(VirtCLIParser):
         self.set_param("hugepage", "hugepages", is_onoff=True)
 
 
+#####################
+# --memtune parsing #
+#####################
+
+class ParserMemorytune(VirtCLIParser):
+    def _init_params(self):
+        self.remove_first = "soft_limit"
+        self.clear_attr = "memtune"
+
+        self.set_param("memtune.hard_limit", "hard_limit")
+        self.set_param("memtune.soft_limit", "soft_limit")
+        self.set_param("memtune.swap_hard_limit", "swap_hard_limit")
+        self.set_param("memtune.min_guarantee", "min_guarantee")
+
+
 ###################
 # --vcpus parsing #
 ###################
@@ -2176,6 +2193,7 @@ def build_parser_map(options, skip=None, only=None):
 
     register_parser("metadata", ParserMetadata)
     register_parser("memory", ParserMemory)
+    register_parser("memtune", ParserMemorytune)
     register_parser("vcpus", ParserVCPU)
     register_parser("cpu", ParserCPU)
     register_parser("numatune", ParserNumatune)
diff --git a/virtinst/domainmemorytune.py b/virtinst/domainmemorytune.py
new file mode 100644
index 0000000..efc917f
--- /dev/null
+++ b/virtinst/domainmemorytune.py
@@ -0,0 +1,35 @@
+#
+# Copyright 2014 Fujitsu Limited.
+# Chen Hanxiao <chenhanxiao at cn.fujitsu.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301 USA.
+
+from virtinst.xmlbuilder import XMLBuilder, XMLProperty
+
+
+class DomainMemorytune(XMLBuilder):
+    """
+    Class for generating <memtune> XML
+    """
+
+    _XML_ROOT_NAME = "memtune"
+    _XML_PROP_ORDER = ["hard_limit", "soft_limit", "swap_hard_limit",
+            "min_guarantee"]
+
+    hard_limit = XMLProperty("./hard_limit", is_int=True)
+    soft_limit = XMLProperty("./soft_limit", is_int=True)
+    swap_hard_limit = XMLProperty("./swap_hard_limit", is_int=True)
+    min_guarantee = XMLProperty("./min_guarantee", is_int=True)
diff --git a/virtinst/guest.py b/virtinst/guest.py
index 4b01593..9f8ead5 100644
--- a/virtinst/guest.py
+++ b/virtinst/guest.py
@@ -35,6 +35,7 @@ from virtinst import Clock
 from virtinst import Seclabel
 from virtinst import CPU
 from virtinst import DomainNumatune
+from virtinst import DomainMemorytune
 from virtinst import DomainBlkiotune
 from virtinst import DomainFeatures
 from virtinst import PM
@@ -91,7 +92,7 @@ class Guest(XMLBuilder):
 
     _XML_ROOT_NAME = "domain"
     _XML_PROP_ORDER = ["type", "name", "uuid", "title", "description",
-        "maxmemory", "memory", "hugepage", "vcpus", "curvcpus",
+        "maxmemory", "memory", "hugepage", "vcpus", "curvcpus", "memtune",
         "numatune", "blkiotune", "bootloader", "os", "idmap", "features", "cpu",
         "clock", "on_poweroff", "on_reboot", "on_crash", "pm", "emulator", "_devices",
         "seclabel"]
@@ -192,6 +193,7 @@ class Guest(XMLBuilder):
     numatune = XMLChildProperty(DomainNumatune, is_single=True)
     pm = XMLChildProperty(PM, is_single=True)
     blkiotune = XMLChildProperty(DomainBlkiotune, is_single=True)
+    memtune = XMLChildProperty(DomainMemorytune, is_single=True)
     idmap = XMLChildProperty(IdMap, is_single=True)
 
 
-- 
1.8.5.3




More information about the virt-tools-list mailing list