[virt-tools-list] [PATCHv2 1/2] To add the huge page configuration in virt-manager

Li Zhang zhlcindy at linux.vnet.ibm.com
Thu Dec 15 06:15:11 UTC 2011


This patch is to add the call back functions for
setting huge page. Clicking GTKCheck button will
invoke these functions.

Signed-off-by: Li Zhang <zhlcindy at linux.vnet.ibm.com>
---
 src/virtManager/details.py |   23 ++++++++++++++++++++++-
 src/virtManager/domain.py  |    7 +++++++
 2 files changed, 29 insertions(+), 1 deletions(-)

diff --git a/src/virtManager/details.py b/src/virtManager/details.py
index fcd0652..92a13d8 100644
--- a/src/virtManager/details.py
+++ b/src/virtManager/details.py
@@ -38,7 +38,7 @@ from virtManager import util as util
 import virtinst
 
 # Parameters that can be editted in the details window
-EDIT_TOTAL = 35
+EDIT_TOTAL = 36
 (EDIT_NAME,
 EDIT_ACPI,
 EDIT_APIC,
@@ -52,6 +52,7 @@ EDIT_CPU,
 EDIT_TOPOLOGY,
 
 EDIT_MEM,
+EDIT_HUGEPG,
 
 EDIT_AUTOSTART,
 EDIT_BOOTORDER,
@@ -396,6 +397,7 @@ class vmmDetails(vmmGObjectUI):
 
             "on_config_memory_changed": self.config_memory_changed,
             "on_config_maxmem_changed": self.config_maxmem_changed,
+            "on_config_hugepage_changed": self.config_hugepage_changed,
 
             "on_config_boot_moveup_clicked" : (self.config_boot_move, True),
             "on_config_boot_movedown_clicked" : (self.config_boot_move,
@@ -1702,6 +1704,15 @@ class vmmDetails(vmmGObjectUI):
             maxadj.value = mem
         maxadj.lower = mem
 
+    def config_hugepage_changed(self, ignore):
+        self.enable_apply(EDIT_HUGEPG)
+        widget = self.widget("config-hugepage")
+        incon = widget.get_inconsistent()
+        widget.set_inconsistent(False)
+        if incon:
+            widget.set_active(True)
+        self.enable_apply(EDIT_HUGEPG)
+
     def generate_cpuset(self):
         mem = int(self.vm.get_memory()) / 1024 / 1024
         return virtinst.Guest.generate_cpuset(self.conn.vmm, mem)
@@ -2067,6 +2078,12 @@ class vmmDetails(vmmGObjectUI):
             add_define(self.vm.define_both_mem, curmem, maxmem)
             add_hotplug(self.vm.hotplug_both_mem, curmem, maxmem)
 
+        if self.editted(EDIT_HUGEPG):
+            enable_hugepage = self.widget("config-hugepage").get_active()
+            if self.widget("config-hugepage").get_inconsistent():
+                enable_hugepage = None
+            add_define(self.vm.define_hugepage, enable_hugepage)
+
         return self._change_config_helper(df, da, hf, ha)
 
     # Boot device / Autostart
@@ -2710,6 +2727,7 @@ class vmmDetails(vmmGObjectUI):
         host_mem = self.vm.conn.host_memory_size() / 1024
         vm_cur_mem = self.vm.get_memory() / 1024.0
         vm_max_mem = self.vm.maximum_memory() / 1024.0
+        vm_huge_page = self.vm.get_hugepage()
 
         host_mem_widget.set_text("%d MB" % (int(round(host_mem))))
 
@@ -2721,6 +2739,9 @@ class vmmDetails(vmmGObjectUI):
         if not self.widget("config-memory").get_property("sensitive"):
             maxmem.lower = curmem.value
 
+        self.widget("config-hugepage").set_active(bool(vm_huge_page))
+        self.widget("config-hugepage").set_inconsistent(
+                                vm_huge_page is None and self.is_customize_dialog)
 
     def refresh_disk_page(self):
         disk = self.get_hw_selection(HW_LIST_COL_DEVICE)
diff --git a/src/virtManager/domain.py b/src/virtManager/domain.py
index f1e601b..e29a1c0 100644
--- a/src/virtManager/domain.py
+++ b/src/virtManager/domain.py
@@ -481,6 +481,11 @@ class vmmDomain(vmmLibvirtObject):
             guest.maxmemory = int(int(maxmem) / 1024)
         return self._redefine_guest(change)
 
+    def define_hugepage(self, newvalue):
+        def change(guest):
+            guest.hugepage = newvalue
+        return self._redefine_guest(change)
+
     # Security define methods
 
     def define_seclabel(self, model, t, label):
@@ -847,6 +852,8 @@ class vmmDomain(vmmLibvirtObject):
         return int(self._get_guest().memory * 1024)
     def maximum_memory(self):
         return int(self._get_guest().maxmemory * 1024)
+    def get_hugepage(self):
+        return self._get_guest().hugepage
 
     def vcpu_count(self):
         return int(self._get_guest().vcpus)
-- 
1.7.4.1




More information about the virt-tools-list mailing list