On Fri, Sep 1, 2017 at 10:42 AM, Rua, Philippe (Nokia - FI/Espoo) <philippe....@nokia.com> wrote:
Will it be possible to include network bandwidth as a resource in Nova scheduling, for VM placement decision?

I think it will.



Context: in telecommunication applications, the network traffic is an important dimension of resource usage. For example, it is often important to distribute "bandwidth-greedy" VMs to different compute nodes. There were some earlier discussions on this topic, but I could not find a concrete outcome. [1][2][3]

After some reading, I wonder whether the Custom resource classes can provide a generic mechanism? [4][5][6]
Here is what I have in mind:
- The VM need is specified in the flavor extra-specs, e.g. resources:CUSTOM_BANDWIDTH=123. - The compute node total capacity is specified in host aggregate metadata, e.g. CUSTOM_BANDWIDTH=999.

I'm not aware of any feature that considers aggregate metadata key as resource inventory. As far as I know you have to define new resource providers for your CUSTOM_BANDWIDTH resource via the placement API and you have to report the 999 as inventory on those resource providers also via placement API. Also don't forget to connect your resource provider to the existing compute resource providers via an aggregate (this is an aggregate in placement which is different from the host aggregate concept in nova). This review contains some test cases that can help you how to set things up https://review.openstack.org/#/c/497399

- Nova then takes care of the rest: scheduling where the free capacity is sufficient, and performing simple resource usage accounting (updating the compute node free network bandwidth capacity as required).

With the above flavor extra spec as request and the above resource provider setup nova will do the rest of the resource accounting for the your custom resource. Except in case you hit one of the bugs we discovered in this area https://bugs.launchpad.net/nova/+bugs?field.tag=placement



Is the outline above according to current plans?
If not, what would be possible/needed in order to achieve the same result, i.e. consider the VM network traffic need during VM placement?

You might want to keep an eye on the nested-resource-provider work planned for Queens as it will give you better options to model your resources: https://blueprints.launchpad.net/nova/+spec/nested-resource-providers

Cheers,
gibi



BR,
Philippe

[1] https://blueprints.launchpad.net/nova/+spec/bandwidth-as-scheduler-metric
[2] https://wiki.openstack.org/wiki/NetworkBandwidthEntitlement
[3] https://openstack.nimeyo.com/80515/openstack-scheduling-bandwidth-resources-nic_bw_kb-resource
[4] https://docs.openstack.org/nova/latest/user/placement.html
[5] http://specs.openstack.org/openstack/nova-specs/priorities/pike-priorities.html#placement
[6] https://review.openstack.org/#/c/473627/

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to