[nova][neutron][ptg] How to increase the minimum bandwidth guarantee of a running instance

Balázs Gibizer balazs.gibizer at est.tech
Tue May 19 14:08:18 UTC 2020


Hi,

[This is a topic from the PTG etherpad [0]. As the PTG time is 
intentionally kept short, let's try to discuss it or even conclude it 
before the PTG]

As a next step in the minimum bandwidth QoS support I would like to 
solve the use case where a running instance has some ports with minimum 
bandwidth but then user wants to change (e.g. increase) the minimum 
bandwidth used by the instance.

I see two generic ways to solve the use case:

Option A - interface attach
---------------------------

Attach a new port with minimum bandwidth to the instance to increase 
the instance's overall bandwidth guarantee.

This only impacts Nova's interface attach code path:
1) The interface attach code path needs to read the port's resource 
request
2) Call Placement GET /allocation_candidates?in_tree=<compute RP of the 
instance>
3a) If placement returns candidates then select one and modify the 
current allocation of the instance accordingly and continue the 
existing interface attach code path.
3b) If placement returns no candidates then there is no free resource 
left on the instance's current host to resize the allocation locally.


Option B - QoS rule update
--------------------------

Allow changing the minimum bandwidth guarantee of a port that is 
already bound to the instance.

Today Neutron rejects such QoS rule update. If we want to support such 
update then:
* either Neutron should call placement allocation_candidates API and 
the update the instance's allocation. Similarly what Nova does in 
Option A.
* or Neutron should tell Nova that the resource request of the port has 
been changed and then Nova needs to call Placement and update 
instance's allocation.


The Option A and Option B are not mutually exclusive but still I would 
like to see what is the preference of the community. Which direction 
should we move forward?


Both options have the limitation that if the instance's current host 
does not have enough free resources for the requested change then Nova 
will not do a full scheduling and move the instance to another host 
where resource is available. This seems a hard problem to me.

Do you have any idea how can we remove / ease this limitation without 
boiling the ocean?

For example: Does it make sense to implement a bandwidth weigher in the 
scheduler so instances can be spread by free bandwidth during creation?


Cheers,
gibi


[0] https://etherpad.opendev.org/p/nova-victoria-ptg





More information about the openstack-discuss mailing list