[openstack-dev] [nova] placement/resource providers update 7

Chris Dent cdent+os at anticdent.org
Wed Jan 11 18:11:30 UTC 2017


On Fri, 6 Jan 2017, Chris Dent wrote:

> ## can_host, aggregates in filtering
>
> There's still some confusion (from at least me) on whether the
> can_host field is relevant when making queries to filter resource
> providers. Similarly, when requesting resource providers to satisfy a
> set of resources, we don't (unless I've completely missed it) return
> resource providers (as compute nodes) that are associated with other
> resource providers (by aggregate) that can satisfy a resource
> requirement. Feels like we need to work backwards from a test or use
> case and see what's missing.

At several points throughout the day I've been talking with edleafe
about this to see whether "knowing about aggregates (or can_host)" when
making a request to `GET /resource_providers?resources=<some resources>`
needs to be dealt with on a scale of now, soon, later.

After much confusion I think we've established that for now we don't
need to. But we need to confirm so I said I'd write something down.

The basis for this conclusion is from three assumptions:

* The value of 'local_gb' on the compute_node object is any disk the
   compute_node can see/use and the concept of associating with shared
   disk by aggregates is not something that is real yet[0].

* Any query for resources from the scheduler client is going to
   include a VCPU requirement of at least one (meaning that every
   resource provider returned will be a compute node[1]).

* Claiming the consumption of some of that local_gb by the resource
   tracker is the resource tracker's problem and not something we're
   talking about here[2].

If all that's true, then we're getting pretty close for near term
joy on limiting the number of hosts the filter scheduler needs to
filter[3].

If it's not true (for the near term), can someone explain why not
and what need to do to fix it?

In the longer term:

Presumably the resource tracker will start reporting inventory
without DISK_GB when using shared disk, and shared disk will be
managed via aggregate associations. When that happens, the query
to GET /resource_providers will need a way to say "only give me
compute nodes that can either satisfy this resource request
directly or via associated stuff". Something tidier than:

     GET /resource_providers?resources:<something>&I_only_want_capable_or_associated_compute_nodes=True

The techniques to do that, if I understand correctly, are in an
email from Jay that some of us received a while go with a subject of
"Some attachments to help with resource providers querying".
Butterfly joins and such like.

Thoughts, questions, clarifications?

[0] This is different from the issue with allocations not needing to
be recorded when the instance has non-local disk (is volume backed):
https://review.openstack.org/#/c/407180/ . Here we are talking about
recording compute node inventory.

[1] This ignores for the moment that unless someone has been playing
around there are no resource providers being created in the
placement API that are not compute nodes.

[2] But for reference will presumably come from the work started
here https://review.openstack.org/#/c/407309/ .

[3] That work starts here: https://review.openstack.org/#/c/392569/


-- 
Chris Dent                 ¯\_(ツ)_/¯           https://anticdent.org/
freenode: cdent                                         tw: @anticdent


More information about the OpenStack-dev mailing list