def physinfo(self, show_numa): info = self.xc.physinfo() tinfo = self.xc.topologyinfo() ninfo = self.xc.numainfo() info['cpu_mhz'] = info['cpu_khz'] / 1000 # physinfo is in KiB, need it in MiB info['total_memory'] = info['total_memory'] / 1024 info['free_memory'] = info['free_memory'] / 1024 info['free_cpus'] = len(XendCPUPool.unbound_cpus()) ITEM_ORDER = ['nr_cpus', 'nr_nodes', 'cores_per_socket', 'threads_per_core', 'cpu_mhz', 'hw_caps', 'virt_caps', 'total_memory', 'free_memory', 'free_cpus', ] if show_numa != 0: info['cpu_topology'] = \ self.format_cpu_to_core_socket_node(tinfo) info['numa_info'] = \ self.format_numa_info(ninfo) ITEM_ORDER += [ 'cpu_topology', 'numa_info' ] return [[k, info[k]] for k in ITEM_ORDER]
def physinfo(self, show_numa): info = self.xc.physinfo() tinfo = self.xc.topologyinfo() ninfo = self.xc.numainfo() info['cpu_mhz'] = info['cpu_khz'] / 1000 # physinfo is in KiB, need it in MiB info['total_memory'] = info['total_memory'] / 1024 info['free_memory'] = info['free_memory'] / 1024 info['free_cpus'] = len(XendCPUPool.unbound_cpus()) ITEM_ORDER = [ 'nr_cpus', 'nr_nodes', 'cores_per_socket', 'threads_per_core', 'cpu_mhz', 'hw_caps', 'virt_caps', 'total_memory', 'free_memory', 'free_cpus', ] if show_numa != 0: info['cpu_topology'] = \ self.format_cpu_to_core_socket_node(tinfo) info['numa_info'] = \ self.format_numa_info(ninfo) ITEM_ORDER += ['cpu_topology', 'numa_info'] return [[k, info[k]] for k in ITEM_ORDER]
def physinfo(self, show_numa): info = self.xc.physinfo() tinfo = self.xc.topologyinfo() ninfo = self.xc.numainfo() info['cpu_mhz'] = info['cpu_khz'] / 1000 configured_floor = xendoptions().get_dom0_min_mem() * 1024 from xen.xend import balloon try: kernel_floor = balloon.get_dom0_min_target() except: kernel_floor = 0 dom0_min_mem = max(configured_floor, kernel_floor) dom0_mem = balloon.get_dom0_current_alloc() extra_mem = 0 if dom0_min_mem > 0 and dom0_mem > dom0_min_mem: extra_mem = dom0_mem - dom0_min_mem info['free_memory'] = info['free_memory'] + info['scrub_memory'] info['max_free_memory'] = info['free_memory'] + extra_mem info['free_cpus'] = len(XendCPUPool.unbound_cpus()) # Convert KiB to MiB, rounding down to be conservative info['total_memory'] = info['total_memory'] / 1024 info['free_memory'] = info['free_memory'] / 1024 info['max_free_memory'] = info['max_free_memory'] / 1024 # FIXME: These are hard-coded to be the inverse of the getXenMemory # functions in image.py. Find a cleaner way. info['max_para_memory'] = info['max_free_memory'] - 4 if info['max_para_memory'] < 0: info['max_para_memory'] = 0 info['max_hvm_memory'] = int( (info['max_free_memory'] - 12) * (1 - 2.4 / 1024)) if info['max_hvm_memory'] < 0: info['max_hvm_memory'] = 0 ITEM_ORDER = [ 'nr_cpus', 'nr_nodes', 'cores_per_socket', 'threads_per_core', 'cpu_mhz', 'hw_caps', 'virt_caps', 'total_memory', 'free_memory', 'free_cpus', 'max_free_memory', 'max_para_memory', 'max_hvm_memory', ] if show_numa != 0: info['cpu_topology'] = \ self.format_cpu_to_core_socket_node(tinfo) info['numa_info'] = \ self.format_numa_info(ninfo) ITEM_ORDER += ['cpu_topology', 'numa_info'] return [[k, info[k]] for k in ITEM_ORDER]
def physinfo(self, show_numa): info = self.xc.physinfo() tinfo = self.xc.topologyinfo() ninfo = self.xc.numainfo() info['cpu_mhz'] = info['cpu_khz'] / 1000 configured_floor = xendoptions().get_dom0_min_mem() * 1024 from xen.xend import balloon try: kernel_floor = balloon.get_dom0_min_target() except: kernel_floor = 0 dom0_min_mem = max(configured_floor, kernel_floor) dom0_mem = balloon.get_dom0_current_alloc() extra_mem = 0 if dom0_min_mem > 0 and dom0_mem > dom0_min_mem: extra_mem = dom0_mem - dom0_min_mem info['free_memory'] = info['free_memory'] + info['scrub_memory'] info['max_free_memory'] = info['free_memory'] + extra_mem info['free_cpus'] = len(XendCPUPool.unbound_cpus()) # Convert KiB to MiB, rounding down to be conservative info['total_memory'] = info['total_memory'] / 1024 info['free_memory'] = info['free_memory'] / 1024 info['max_free_memory'] = info['max_free_memory'] / 1024 # FIXME: These are hard-coded to be the inverse of the getXenMemory # functions in image.py. Find a cleaner way. info['max_para_memory'] = info['max_free_memory'] - 4 if info['max_para_memory'] < 0: info['max_para_memory'] = 0 info['max_hvm_memory'] = int((info['max_free_memory']-12) * (1-2.4/1024)) if info['max_hvm_memory'] < 0: info['max_hvm_memory'] = 0 ITEM_ORDER = ['nr_cpus', 'nr_nodes', 'cores_per_socket', 'threads_per_core', 'cpu_mhz', 'hw_caps', 'virt_caps', 'total_memory', 'free_memory', 'free_cpus', 'max_free_memory', 'max_para_memory', 'max_hvm_memory', ] if show_numa != 0: info['cpu_topology'] = \ self.format_cpu_to_core_socket_node(tinfo) info['numa_info'] = \ self.format_numa_info(ninfo) ITEM_ORDER += [ 'cpu_topology', 'numa_info' ] return [[k, info[k]] for k in ITEM_ORDER]