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.all_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 cinder-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.

