[openstack-dev] [Openstack-operators] [nova] Default scheduler filters survey

Mathieu Gagné mgagne at calavera.ca
Mon Apr 30 16:41:21 UTC 2018


Hi,

On Sun, Apr 29, 2018 at 5:29 PM, Ed Leafe <ed at leafe.com> wrote:
> On Apr 29, 2018, at 1:34 PM, Artom Lifshitz <alifshit at redhat.com> wrote:
>>
>> Based on that, we can definitely say that SameHostFilter and
>> DifferentHostFilter do *not* belong in the defaults. In fact, we got
>> our defaults pretty spot on, based on this admittedly very limited
>> dataset. The only frequently occurring filter that's not in our
>> defaults is AggregateInstanceExtraSpecsFilter.
>
> Another data point that might be illuminating is: how many sites use a custom (i.e., not in-tree) filter or weigher? One of the original design tenets of the scheduler was that we did not want to artificially limit what people could use to control their deployments, but inside of Nova there is a lot of confusion as to whether anyone is using anything but the included filters.
>
> So - does anyone out there rely on a filter and/or weigher that they wrote themselves, and maintain outside of OpenStack?

Yes and we have a bunch.

Here are our filters and weighers with explanations.

Filters for cells:
* InstanceTypeClassFilter [0]

Filters for cloud/virtual cells:
* RetryFilter
* AvailabilityZoneFilter
* RamFilter
* ComputeFilter
* AggregateCoreFilter
* ImagePropertiesFilter
* AggregateImageOsTypeIsolationFilter [1]
* AggregateInstanceExtraSpecsFilter
* AggregateProjectsIsolationFilter [2]

Weighers for cloud/virtual cells:
* MetricsWeigher
* AggregateRAMWeigher [3]

Filters for baremetal cells:
* ComputeFilter
* NetworkModelFilter [4]
* TenantFilter [5]
* UserFilter [6]
* RetryFilter
* AvailabilityZoneFilter
* ComputeCapabilitiesFilter
* ImagePropertiesFilter
* ExactRamFilter
* ExactDiskFilter
* ExactCoreFilter

Weighers for baremetal cells:
* ReservedHostForTenantWeigher [7]
* ReservedHostForUserWeigher [8]

[0] Used to scheduler instances based on flavor class found in
extra_specs (virtual/baremetal)
[1] Allows to properly isolated hosts for licensing purposes.
    The upstream filter is not strict as per bugs/reviews/specs:
    * https://bugs.launchpad.net/nova/+bug/1293444
    * https://bugs.launchpad.net/nova/+bug/1677217
    * https://review.openstack.org/#/c/56420/
    * https://review.openstack.org/#/c/85399/
    Our custom implementation for Mitaka:
    https://gist.github.com/mgagne/462e7fa8417843055aa6da7c5fd51c00
[2] Similar filter to AggregateImageOsTypeIsolationFilter but for projects.
    Our custom implementation for Mitaka:
    https://gist.github.com/mgagne/d729ccb512b0434568ffb094441f643f
[3] Allows to change stacking behavior based on the 'ram_weight_multiplier'
    aggregate key. (emptiest/fullest)
    Our custom implementation for Mitaka:
    https://gist.github.com/mgagne/65f033cbc5fdd4c8d1f45e90c943a5f4
[4] Used to filter Ironic nodes based on supported network models as requested
    by flavor extra_specs. We support JIT network configuration (flat/bond) and
    need to know which nodes support what network models beforehand.
[5] Used to filter Ironic nodes based on the 'reserved_for_tenant_id'
Ironic node property.
    This is used to reserve Ironic node to specific projects.
    Some customers order lot of machines in advance. We reserve those for them.
[6] Used to filter Ironic nodes based on the 'reserved_for_user_id'
Ironic node property.
    This is mainly used when enrolling existing nodes already living
on a different system.
    We reserve the node to a special internal user so the customer
cannot reserve
    the node by mistake until the process is completed.
    Latest version of Nova dropped user_id from RequestSpec. We had to
add it back.
[7] Used to favor reserved host over non-reserved ones based on project.
[8] Used to favor reserved host over non-reserved ones based on user.
    Latest version of Nova dropped user_id from RequestSpec. We had to
add it back.

--
Mathieu



More information about the OpenStack-dev mailing list