Always pass 'NUMACell.siblings' to _pack_instance_onto_cores'
Now that we're populating the aforementioned attribute with cores that don't have siblings, we don't need to continue creating imitation lists of "siblings". Change-Id: Ia371684dd9f821f214c6e023845875021848ca0a Related-Bug: #1744965
This commit is contained in:
@@ -843,6 +843,15 @@ def _pack_instance_onto_cores(available_siblings,
|
|||||||
instance_cell.cpuset,
|
instance_cell.cpuset,
|
||||||
num_cpu_reserved=num_cpu_reserved)
|
num_cpu_reserved=num_cpu_reserved)
|
||||||
else: # REQUIRE, PREFER (explicit, implicit)
|
else: # REQUIRE, PREFER (explicit, implicit)
|
||||||
|
if (instance_cell.cpu_thread_policy ==
|
||||||
|
fields.CPUThreadAllocationPolicy.REQUIRE):
|
||||||
|
# make sure we actually have some siblings to play with
|
||||||
|
if threads_per_core <= 1:
|
||||||
|
LOG.info("Host does not support hyperthreading or "
|
||||||
|
"hyperthreading is disabled, but 'require' "
|
||||||
|
"threads policy was requested.")
|
||||||
|
return
|
||||||
|
|
||||||
# NOTE(ndipanov): We iterate over the sibling sets in descending order
|
# NOTE(ndipanov): We iterate over the sibling sets in descending order
|
||||||
# of cores that can be packed. This is an attempt to evenly distribute
|
# of cores that can be packed. This is an attempt to evenly distribute
|
||||||
# instances among physical cores
|
# instances among physical cores
|
||||||
@@ -941,27 +950,12 @@ def _numa_fit_instance_cell_with_pinning(host_cell, instance_cell,
|
|||||||
'total': host_cell.memory})
|
'total': host_cell.memory})
|
||||||
return
|
return
|
||||||
|
|
||||||
if host_cell.siblings:
|
# Try to pack the instance cell onto cores
|
||||||
LOG.debug('Using thread siblings for packing')
|
# TODO(stephenfin): We should just pass host_cell to this function
|
||||||
# Try to pack the instance cell onto cores
|
numa_cell = _pack_instance_onto_cores(
|
||||||
numa_cell = _pack_instance_onto_cores(
|
host_cell.free_siblings, instance_cell, host_cell.id,
|
||||||
host_cell.free_siblings, instance_cell, host_cell.id,
|
max(map(len, host_cell.siblings)),
|
||||||
max(map(len, host_cell.siblings)),
|
num_cpu_reserved=num_cpu_reserved)
|
||||||
num_cpu_reserved=num_cpu_reserved)
|
|
||||||
else:
|
|
||||||
if (instance_cell.cpu_thread_policy ==
|
|
||||||
fields.CPUThreadAllocationPolicy.REQUIRE):
|
|
||||||
LOG.info("Host does not support hyperthreading or "
|
|
||||||
"hyperthreading is disabled, but 'require' "
|
|
||||||
"threads policy was requested.")
|
|
||||||
return
|
|
||||||
|
|
||||||
# Straightforward to pin to available cpus when there is no
|
|
||||||
# hyperthreading on the host
|
|
||||||
free_cpus = [set([cpu]) for cpu in host_cell.free_cpus]
|
|
||||||
numa_cell = _pack_instance_onto_cores(
|
|
||||||
free_cpus, instance_cell, host_cell.id,
|
|
||||||
num_cpu_reserved=num_cpu_reserved)
|
|
||||||
|
|
||||||
if not numa_cell:
|
if not numa_cell:
|
||||||
LOG.debug('Failed to map instance cell CPUs to host cell CPUs')
|
LOG.debug('Failed to map instance cell CPUs to host cell CPUs')
|
||||||
|
|||||||
Reference in New Issue
Block a user