[openstack-dev] [placement][nova] Decision time on granular request groups for like resources
Jay Pipes
jaypipes at gmail.com
Wed Apr 18 17:40:54 UTC 2018
On 04/18/2018 11:58 AM, Matt Riedemann wrote:
> On 4/18/2018 9:06 AM, Jay Pipes wrote:
>> "By default, should resources/traits submitted in different numbered
>> request groups be supplied by separate resource providers?"
>
> Without knowing all of the hairy use cases, I'm trying to channel my
> inner sdague and some of the similar types of discussions we've had to
> changes in the compute API, and a lot of the time we've agreed that we
> shouldn't assume a default in certain cases.
>
> So for this case, if I'm requesting numbered request groups, why doesn't
> the API just require that I pass a query parameter telling it how I'd
> like those requests to be handled, either via affinity or anti-affinity
So, you're thinking maybe something like this?
1) Get me two dedicated CPUs. One of those dedicated CPUs must have AVX2
capabilities. They must be on different child providers (different NUMA
cells that are providing those dedicated CPUs).
GET /allocation_candidates?
resources1=PCPU:1&required1=HW_CPU_X86_AVX2
&resources2=PCPU:1
&proximity=isolate:1,2
2) Get me four dedicated CPUs. Two of those dedicated CPUs must have
AVX2 capabilities. Two of the dedicated CPUs must have the SSE 4.2
capability. They may come from the same provider (NUMA cell) or
different providers.
GET /allocation_candidates?
resources1=PCPU:2&required1=HW_CPU_X86_AVX2
&resources2=PCPU:2&required2=HW_CPU_X86_SSE42
&proximity=any:1,2
3) Get me 2 dedicated CPUs and 2 SR-IOV VFs. The VFs must be provided by
separate physical function providers which have different traits marking
separate physical networks. The dedicated CPUs must come from the same
provider tree in which the physical function providers reside.
GET /allocation_candidates?
resources1=PCPU:2
&resources2=SRIOV_NET_VF:1&required2=CUSTOM_PHYSNET_A
&resources3=SRIOV_NET_VF:1&required3=CUSTOM_PHYSNET_B
&proximity=isolate:2,3
&proximity=same_tree:1,2,3
3) Get me 2 dedicated CPUs and 2 SR-IOV VFs. The VFs must be provided by
separate physical function providers which have different traits marking
separate physical networks. The dedicated CPUs must come from the same
provider *subtree* in which the second group of VF resources are sourced.
GET /allocation_candidates?
resources1=PCPU:2
&resources2=SRIOV_NET_VF:1&required2=CUSTOM_PHYSNET_A
&resources3=SRIOV_NET_VF:1&required3=CUSTOM_PHYSNET_B
&proximity=isolate:2,3
&proximity=same_subtree:1,3
4) Get me 4 SR-IOV VFs. 2 VFs should be sourced from a provider that is
decorated with the CUSTOM_PHYSNET_A trait. 2 VFs should be sourced from
a provider that is decorated with the CUSTOM_PHYSNET_B trait. For HA
purposes, none of the VFs should be sourced from the same provider.
However, the VFs for each physical network should be within the same
subtree (NUMA cell) as each other.
GET /allocation_candidates?
resources1=SRIOV_NET_VF:1&required1=CUSTOM_PHYSNET_A
&resources2=SRIOV_NET_VF:1&required2=CUSTOM_PHYSNET_A
&resources3=SRIOV_NET_VF:1&required3=CUSTOM_PHYSNET_B
&resources4=SRIOV_NET_VF:1&required4=CUSTOM_PHYSNET_B
&proximity=isolate:1,2,3,4
&proximity=same_subtree:1,2
&proximity=same_subtree:3,4
We can go even deeper if you'd like, since NFV means "never-ending
feature velocity". Just let me know.
-jay
More information about the OpenStack-dev
mailing list