nova/nova/scheduler
Stephen Finucane ec74cc688e Add PCIWeigher
Take three hosts, one with a single PCI device, one with many PCI
devices, and one with no PCI devices. Nova should prioritise these
differently based on the demands of the instance. If the instance
requests a single PCI device, then the first of the hosts should be
preferred. Similarly, if the instance requests multiple PCI devices,
then the second of these hosts would be preferred. Finally, if the
instance does not request a PCI device, then the last of these hosts
should be preferred.

While the first and second of these cases is already somewhat handled by
the NUMA topology filter (which will ensure the correct number and type
of PCI devices are available on the hosts), there is nothing to stop a
instance that *does not* require PCI devices from occupying space on one
of the few hosts that *does* have free PCI devices.

The PCIWeigher is designed to keep hosts with PCI device(s) as free as
possible, to best ensure they can satisfy requests from instances with
PCI requirements when called upon.  This change ensures (a) an instance
with PCI requirements has the best possible chance of scheduling
successfully and (b) an instance without these requirements won't clog
up hosts that have these valuable resources.

Change-Id: I04bf7e6b8324dcac6c93b0cb69c38c30fb05be56
Partially Implements: blueprint reserve-numa-with-pci
2017-06-08 09:44:46 +01:00
..
client Pass a list of instance UUIDs to scheduler 2017-06-01 14:54:16 +00:00
filters Deprecate TypeAffinityFilter 2017-05-27 10:15:25 +00:00
weights Add PCIWeigher 2017-06-08 09:44:46 +01:00
__init__.py Improve hacking rule to avoid author markers 2014-05-05 14:35:20 +02:00
caching_scheduler.py Make conductor ask scheduler to limit migrates to same cell 2017-03-29 07:12:31 -07:00
chance.py Pass a list of instance UUIDs to scheduler 2017-06-01 14:54:16 +00:00
driver.py Pass a list of instance UUIDs to scheduler 2017-06-01 14:54:16 +00:00
filter_scheduler.py Pass a list of instance UUIDs to scheduler 2017-06-01 14:54:16 +00:00
host_manager.py Handle new hosts for updating instance info in scheduler 2017-05-25 11:52:29 +00:00
ironic_host_manager.py Move to proper target_cell calling convention 2017-05-23 08:12:42 -07:00
manager.py Pass a list of instance UUIDs to scheduler 2017-06-01 14:54:16 +00:00
rpcapi.py Pass a list of instance UUIDs to scheduler 2017-06-01 14:54:16 +00:00
utils.py conf: Group scheduler options 2016-10-07 14:36:21 +01:00