Exemplo n.º 1
0
    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]
Exemplo n.º 2
0
    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]
Exemplo n.º 3
0
    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]
Exemplo n.º 4
0
    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]