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

Jay Pipes jaypipes at gmail.com
Mon Apr 30 17:06:34 UTC 2018


Mathieu,

How do you handle issues where compute nodes are associated with 
multiple aggregates and both aggregates have different values for a 
particular filter key?

Is that a human-based validation process to ensure you don't have that 
situation?

Best,
-jay

On 04/30/2018 12:41 PM, Mathieu Gagné wrote:
> 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
> 
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> 



More information about the OpenStack-dev mailing list