[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [XenPPC] [xenppc-unstable] [merge] null
# HG changeset patch # User Jimi Xenidis <jimix@xxxxxxxxxxxxxx> # Node ID 00c47d5766100994d1b936873629256874a8d5ba # Parent ff2c736fce49fedc8057d61f13df0a79ead22871 # Parent b2f2c477895af973e727612a3967c68639a2b321 [merge] null --- tools/python/xen/xend/FlatDeviceTree.py | 2 - tools/python/xen/xend/XendDomainInfo.py | 45 ++++++++++++-------------------- tools/python/xen/xend/arch.py | 14 ++++----- tools/python/xen/xend/image.py | 41 +++++++---------------------- 4 files changed, 35 insertions(+), 67 deletions(-) diff -r ff2c736fce49 -r 00c47d576610 tools/python/xen/xend/FlatDeviceTree.py --- a/tools/python/xen/xend/FlatDeviceTree.py Wed Aug 23 05:44:46 2006 -0400 +++ b/tools/python/xen/xend/FlatDeviceTree.py Wed Aug 23 05:49:29 2006 -0400 @@ -293,7 +293,7 @@ def build(imghandler): # identical... cpu0 = None def _nolinuxprops(fullpath): - return not os.path.basename(fullpath).startswith('linux,'): + return not os.path.basename(fullpath).startswith('linux,') for i in range(imghandler.vm.getVCpuCount()): cpu = cpus.addnode('PowerPC,970@0') _copytree(cpu, 'cpus/PowerPC,970@0', _nolinuxprops) diff -r ff2c736fce49 -r 00c47d576610 tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Wed Aug 23 05:44:46 2006 -0400 +++ b/tools/python/xen/xend/XendDomainInfo.py Wed Aug 23 05:49:29 2006 -0400 @@ -30,7 +30,6 @@ import time import time import threading import os -import math import xen.lowlevel.xc from xen.util import asserts @@ -1280,37 +1279,27 @@ class XendDomainInfo: for v in range(0, self.info['max_vcpu_id']+1): xc.vcpu_setaffinity(self.domid, v, self.info['cpus']) - # set domain maxmem in KiB - xc.domain_setmaxmem(self.domid, self.info['maxmem'] * 1024) - - m = self.image.getDomainMemory(self.info['memory'] * 1024) + # set memory limit + maxmem = self.image.getRequiredMemory(self.info['maxmem'] * 1024) + xc.domain_setmaxmem(self.domid, maxmem) + + mem_kb = self.image.getRequiredMemory(self.info['memory'] * 1024) # get the domain's shadow memory requirement - sm = int(math.ceil(self.image.getDomainShadowMemory(m) / 1024.0)) - if self.info['shadow_memory'] > sm: - sm = self.info['shadow_memory'] + shadow_kb = self.image.getRequiredShadowMemory(mem_kb) + shadow_kb_req = self.info['shadow_memory'] * 1024 + if shadow_kb_req > shadow_kb: + shadow_kb = shadow_kb_req # Make sure there's enough RAM available for the domain - balloon.free(m + sm * 1024) - - if os.uname()[4] in ('ppc64'): - self.info['shadow_memory'] = 0 - else: - # Set up the shadow memory - sm = xc.shadow_mem_control(self.domid, mb=sm) - self.info['shadow_memory'] = sm - - init_reservation = self.info['memory'] * 1024 - if os.uname()[4] in ('ia64', 'ppc64'): - # Workaround for architectures that don't yet support - # ballooning. - init_reservation = m - # Following line from xiantao.zhang@xxxxxxxxx - # Needed for IA64 until supports ballooning -- okay for PPC64? - xc.domain_setmaxmem(self.domid, m) - - xc.domain_memory_increase_reservation(self.domid, init_reservation, - 0, 0) + balloon.free(mem_kb + shadow_kb) + + # Set up the shadow memory + shadow_cur = xc.shadow_mem_control(self.domid, shadow_kb * 1024) + self.info['shadow_memory'] = shadow_cur + + # initial memory allocation + xc.domain_memory_increase_reservation(self.domid, mem_kb, 0, 0) self.createChannels() diff -r ff2c736fce49 -r 00c47d576610 tools/python/xen/xend/arch.py --- a/tools/python/xen/xend/arch.py Wed Aug 23 05:44:46 2006 -0400 +++ b/tools/python/xen/xend/arch.py Wed Aug 23 05:49:29 2006 -0400 @@ -20,12 +20,12 @@ import os import os _types = { - "i386": "x86", - "i486": "x86", - "i586": "x86", - "i686": "x86", - "ia64": "ia64", - "ppc": "powerpc", - "ppc64": "powerpc", + "i386": "x86", + "i486": "x86", + "i586": "x86", + "i686": "x86", + "ia64": "ia64", + "ppc": "powerpc", + "ppc64": "powerpc", } type = _types.get(os.uname()[4], "unknown") diff -r ff2c736fce49 -r 00c47d576610 tools/python/xen/xend/image.py --- a/tools/python/xen/xend/image.py Wed Aug 23 05:44:46 2006 -0400 +++ b/tools/python/xen/xend/image.py Wed Aug 23 05:49:29 2006 -0400 @@ -146,7 +146,7 @@ class ImageHandler: def getRequiredMemory(self, mem_kb): return mem_kb - def getDomainShadowMemory(self, mem_kb): + def getRequiredShadowMemory(self, mem_kb): """@return The minimum shadow memory required, in KiB, for a domain with mem_kb KiB of RAM.""" # PV domains don't need any shadow memory @@ -197,10 +197,6 @@ class PPC_LinuxImageHandler(LinuxImageHa def configure(self, imageConfig, deviceConfig): LinuxImageHandler.configure(self, imageConfig, deviceConfig) self.imageConfig = imageConfig - - def getDomainMemory(self, mem_kb): - """@see ImageHandler.getDomainMemory""" - return mem_kb def buildDomain(self): store_evtchn = self.vm.getStorePort() @@ -382,32 +378,6 @@ class HVMImageHandler(ImageHandler): os.waitpid(self.pid, 0) self.pid = 0 - def getDomainMemory(self, mem_kb): - """@see ImageHandler.getDomainMemory""" - if os.uname()[4] == 'ia64': - page_kb = 16 - # ROM size for guest firmware, ioreq page and xenstore page - extra_pages = 1024 + 2 - else: - page_kb = 4 - # This was derived emperically: - # 2.4 MB overhead per 1024 MB RAM + 8 MB constant - # + 4 to avoid low-memory condition - extra_mb = (2.4/1024) * (mem_kb/1024.0) + 12; - extra_pages = int( math.ceil( extra_mb*1024 / page_kb )) - return mem_kb + extra_pages * page_kb - - def getDomainShadowMemory(self, mem_kb): - """@return The minimum shadow memory required, in KiB, for a domain - with mem_kb KiB of RAM.""" - if os.uname()[4] in ('ia64', 'ppc64'): - # Explicit shadow memory is not a concept - return 0 - else: - # 1MB per vcpu plus 4Kib/Mib of RAM. This is higher than - # the minimum that Xen would allocate if no value were given. - return 1024 * self.vm.getVCpuCount() + mem_kb / 256 - def register_shutdown_watch(self): """ add xen store watch on control/shutdown """ self.shutdownWatch = xswatch(self.vm.dompath + "/control/shutdown", \ @@ -453,6 +423,10 @@ class IA64_HVM_ImageHandler(HVMImageHand # ROM size for guest firmware, ioreq page and xenstore page extra_pages = 1024 + 2 return mem_kb + extra_pages * page_kb + + def getRequiredShadowMemory(self, mem_kb): + # Explicit shadow memory is not a concept + return 0 class X86_HVM_ImageHandler(HVMImageHandler): @@ -466,6 +440,11 @@ class X86_HVM_ImageHandler(HVMImageHandl extra_mb = (2.4/1024) * (mem_kb/1024.0) + 12; extra_pages = int( math.ceil( extra_mb*1024 / page_kb )) return mem_kb + extra_pages * page_kb + + def getRequiredShadowMemory(self, mem_kb): + # 1MB per vcpu plus 4Kib/Mib of RAM. This is higher than + # the minimum that Xen would allocate if no value were given. + return 1024 * self.vm.getVCpuCount() + mem_kb / 256 _handlers = { "powerpc": { _______________________________________________ Xen-ppc-devel mailing list Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ppc-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |