Use half of host memory as maxmem by default. Allow to configure it per VM.
This commit is contained in:
		
							parent
							
								
									ac84bbe621
								
							
						
					
					
						commit
						aa7df98b7e
					
				| @ -179,6 +179,7 @@ class QubesVm(object): | |||||||
|                  root_img = None, |                  root_img = None, | ||||||
|                  private_img = None, |                  private_img = None, | ||||||
|                  memory = default_memory, |                  memory = default_memory, | ||||||
|  |                  maxmem = None, | ||||||
|                  template_vm = None, |                  template_vm = None, | ||||||
|                  firewall_conf = None, |                  firewall_conf = None, | ||||||
|                  volatile_img = None, |                  volatile_img = None, | ||||||
| @ -246,6 +247,12 @@ class QubesVm(object): | |||||||
| 
 | 
 | ||||||
|         self.memory = memory |         self.memory = memory | ||||||
| 
 | 
 | ||||||
|  |         if maxmem is None: | ||||||
|  |             total_mem_mb = self.get_total_xen_memory()/1024/1024 | ||||||
|  |             self.maxmem = total_mem_mb/2 | ||||||
|  |         else: | ||||||
|  |             self.maxmem = maxmem | ||||||
|  | 
 | ||||||
|         self.template_vm = template_vm |         self.template_vm = template_vm | ||||||
|         if template_vm is not None: |         if template_vm is not None: | ||||||
|             if updateable: |             if updateable: | ||||||
| @ -882,8 +889,7 @@ class QubesVm(object): | |||||||
|             print "--> Loading the VM (type = {0})...".format(self.type) |             print "--> Loading the VM (type = {0})...".format(self.type) | ||||||
| 
 | 
 | ||||||
|         if not self.is_netvm(): |         if not self.is_netvm(): | ||||||
|             total_mem_mb = self.get_total_xen_memory()/1024/1024 |             xend_session.xend_server.xend.domain.maxmem_set(self.name, self.maxmem) | ||||||
|             xend_session.xend_server.xend.domain.maxmem_set(self.name, total_mem_mb) |  | ||||||
| 
 | 
 | ||||||
|         mem_required = self.get_mem_dynamic_max() |         mem_required = self.get_mem_dynamic_max() | ||||||
|         qmemman_client = QMemmanClient() |         qmemman_client = QMemmanClient() | ||||||
| @ -993,6 +999,7 @@ class QubesVm(object): | |||||||
|         attrs["updateable"] = str(self.updateable) |         attrs["updateable"] = str(self.updateable) | ||||||
|         attrs["label"] = self.label.name |         attrs["label"] = self.label.name | ||||||
|         attrs["memory"] = str(self.memory) |         attrs["memory"] = str(self.memory) | ||||||
|  |         attrs["maxmem"] = str(self.maxmem) | ||||||
|         attrs["pcidevs"] = str(self.pcidevs) |         attrs["pcidevs"] = str(self.pcidevs) | ||||||
|         attrs["vcpus"] = str(self.vcpus) |         attrs["vcpus"] = str(self.vcpus) | ||||||
|         attrs["internal"] = str(self.internal) |         attrs["internal"] = str(self.internal) | ||||||
| @ -2004,7 +2011,8 @@ class QubesVmCollection(dict): | |||||||
|         common_attr_list = ("qid", "name", "dir_path", "conf_file", |         common_attr_list = ("qid", "name", "dir_path", "conf_file", | ||||||
|                 "private_img", "root_img", "template_qid", |                 "private_img", "root_img", "template_qid", | ||||||
|                 "installed_by_rpm", "updateable", "internal", |                 "installed_by_rpm", "updateable", "internal", | ||||||
|                 "uses_default_netvm", "label", "memory", "vcpus", "pcidevs") |                 "uses_default_netvm", "label", "memory", "vcpus", "pcidevs", | ||||||
|  |                 "maxmem" ) | ||||||
| 
 | 
 | ||||||
|         for attribute in common_attr_list: |         for attribute in common_attr_list: | ||||||
|             kwargs[attribute] = element.get(attribute) |             kwargs[attribute] = element.get(attribute) | ||||||
|  | |||||||
| @ -49,6 +49,8 @@ def do_list(vm): | |||||||
|         print fmt.format ("root volatile img", vm.volatile_img) |         print fmt.format ("root volatile img", vm.volatile_img) | ||||||
| 
 | 
 | ||||||
|     print fmt.format ("private img", vm.private_img) |     print fmt.format ("private img", vm.private_img) | ||||||
|  |     print fmt.format ("memory", vm.memory) | ||||||
|  |     print fmt.format ("maxmem", vm.maxmem) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def set_label(vms, vm, args): | def set_label(vms, vm, args): | ||||||
| @ -65,6 +67,17 @@ def set_label(vms, vm, args): | |||||||
|     vm.label = QubesVmLabels[label] |     vm.label = QubesVmLabels[label] | ||||||
|     subprocess.check_call (["ln", "-sf", vm.label.icon_path, vm.icon_path]) |     subprocess.check_call (["ln", "-sf", vm.label.icon_path, vm.icon_path]) | ||||||
| 
 | 
 | ||||||
|  | def set_memory(vms, vm, args): | ||||||
|  |     if len (args) != 1: | ||||||
|  |         print "Missing memory argument!" | ||||||
|  | 
 | ||||||
|  |     vm.memory = int(args[0]) | ||||||
|  | 
 | ||||||
|  | def set_maxmem(vms, vm, args): | ||||||
|  |     if len (args) != 1: | ||||||
|  |         print "Missing maxmem argument!" | ||||||
|  | 
 | ||||||
|  |     vm.maxmem = int(args[0]) | ||||||
| 
 | 
 | ||||||
| def set_netvm(vms, vm, args): | def set_netvm(vms, vm, args): | ||||||
|     if len (args) != 1: |     if len (args) != 1: | ||||||
| @ -153,6 +166,8 @@ properties = { | |||||||
|     "nonupdateable": set_nonupdateable, |     "nonupdateable": set_nonupdateable, | ||||||
|     "label" : set_label, |     "label" : set_label, | ||||||
|     "netvm" : set_netvm, |     "netvm" : set_netvm, | ||||||
|  |     "maxmem" : set_maxmem, | ||||||
|  |     "memory" : set_memory, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Marek Marczykowski
						Marek Marczykowski