def _numa_get_constraints_auto(nodes, flavor, image_meta): if ((flavor['vcpus'] % nodes) > 0 or (flavor['memory_mb'] % nodes) > 0): raise exception.ImageNUMATopologyAsymmetric() cells = [] for node in range(nodes): cpus = _numa_get_flavor_or_image_prop(flavor, image_meta, "numa_cpus.%d" % node) mem = _numa_get_flavor_or_image_prop(flavor, image_meta, "numa_mem.%d" % node) # We're not expecting any properties set, so # raise an error if there are any if cpus is not None or mem is not None: raise exception.ImageNUMATopologyIncomplete() ncpus = int(flavor['vcpus'] / nodes) mem = int(flavor['memory_mb'] / nodes) start = node * ncpus cpuset = set(range(start, start + ncpus)) cells.append( objects.InstanceNUMACell(id=node, cpuset=cpuset, memory=mem)) return objects.InstanceNUMATopology(cells=cells)
def _get_constraints_auto(cls, nodes, flavor, image_meta): if ((flavor.vcpus % nodes) > 0 or (flavor.memory_mb % nodes) > 0): raise exception.ImageNUMATopologyAsymmetric() cells = [] for node in range(nodes): cpus = cls._get_flavor_or_image_prop( flavor, image_meta, "numa_cpus.%d" % node) mem = cls._get_flavor_or_image_prop( flavor, image_meta, "numa_mem.%d" % node) # We're not expecting any properties set, so # raise an error if there are any if cpus is not None or mem is not None: raise exception.ImageNUMATopologyIncomplete() ncpus = int(flavor.vcpus / nodes) mem = int(flavor.memory_mb / nodes) start = node * ncpus cpuset = set(range(start, start + ncpus)) cells.append(VirtNUMATopologyCell(node, cpuset, mem)) return cls(cells)
def _numa_get_constraints_auto(nodes, flavor): if ((flavor.vcpus % nodes) > 0 or (flavor.memory_mb % nodes) > 0): raise exception.ImageNUMATopologyAsymmetric() cells = [] for node in range(nodes): ncpus = int(flavor.vcpus / nodes) mem = int(flavor.memory_mb / nodes) start = node * ncpus cpuset = set(range(start, start + ncpus)) cells.append( objects.InstanceNUMACell(id=node, cpuset=cpuset, memory=mem)) return objects.InstanceNUMATopology(cells=cells)