Compute uses the nova-scheduler service to determine how to dispatch compute and volume requests. For example, the nova-scheduler service determines which host a VM should launch on. The term "host" in the context of filters means a physical node that has a nova-compute service running on it. The scheduler is configurable through a variety of options.
Compute is configured with the following default scheduler options:
scheduler_driver=nova.scheduler.multi.MultiScheduler volume_scheduler_driver=nova.scheduler.chance.ChanceScheduler compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler scheduler_available_filters=nova.scheduler.filters.standard_filters scheduler_default_filters=AvailabilityZoneFilter,RamFilter,ComputeFilter least_cost_functions=nova.scheduler.least_cost.compute_fill_first_cost_fn compute_fill_first_cost_fn_weight=-1.0
Compute is configured by default to use the Multi Scheduler, which allows the admin to specify different scheduling behavior for compute requests versus volume requests.
The volume scheduler is configured by default as a Chance Scheduler, which picks a host at random that has the nova-volume service running.
The compute scheduler is configured by default as a Filter Scheduler, described
in detail in the next section. In the
default configuration, this scheduler will only consider hosts that are in the
requested availability
zone (AvailabilityZoneFilter), that have sufficient RAM
available (RamFilter), and that are actually capable of
servicing the request (ComputeFilter).
From the resulting filtered list of eligible hosts, the scheduler will
assign a cost to each host based on the amount of free RAM
(nova.scheduler.least_cost.compute_fill_first_cost_fn),
will multiply each cost value by -1 (compute_fill_first_cost_fn_weight),
and will select the host with the minimum cost. This is equivalent to
selecting the host with the maximum amount of RAM available.

