Multiqueue support for NFV
Change-Id: I898cf3a2fd1809f388d021fa3d3ce596ff860407 blueprint: multiqueue-support-nfv
This commit is contained in:
parent
788661894e
commit
009ddf9861
|
@ -0,0 +1,271 @@
|
|||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
====================================================
|
||||
Improve NFV workload performance with multiq support
|
||||
====================================================
|
||||
|
||||
https://blueprints.launchpad.net/fuel/+spec/multiqueue-support-nfv
|
||||
|
||||
|
||||
--------------------
|
||||
Problem description
|
||||
--------------------
|
||||
|
||||
Today’s high-end servers have more processors, and guests running on them
|
||||
often have an increasing number of vCPUs. In a single virtio-net queue, the
|
||||
scale of the protocol stack in a guest is restricted, as the network
|
||||
performance does not scale as the number of vCPUs increases. Guests cannot
|
||||
transmit or retrieve packets in parallel, as virtio-net has only one TX and
|
||||
RX queue.
|
||||
|
||||
Multiqueue virtio-net provides the greatest performance benefit when:
|
||||
|
||||
* Traffic packets are relatively large.
|
||||
|
||||
* The guest is active on many connections at the same time, with traffic
|
||||
running between guests, guest to host, or guest to an external system.
|
||||
|
||||
* The number of queues is equal to the number of vCPUs. This is because
|
||||
multi-queue support optimizes RX interrupt affinity and TX queue selection
|
||||
in order to make a specific queue private to a specific vCPU.
|
||||
|
||||
There is a spec `Libvirt: virtio-net multiqueue`_ implemented that adds
|
||||
support for mutliqueue feature in OpenStack, now we need to add support
|
||||
on packages level. To achieve this we need the following packages together:
|
||||
|
||||
* qemu 2.5
|
||||
|
||||
* libvirt 1.3.1
|
||||
|
||||
* openvswitch 2.5
|
||||
|
||||
* dpdk 2.2
|
||||
|
||||
These packages availabe in Ubuntu 16.04 out of the box (thus MOS-10 will not
|
||||
need any additional actions except QA), but need backporting in case of
|
||||
Ubuntu 14.04 (which is a base system in MOS 9.x). The good thing is that
|
||||
backported packages were already tested as part of optional 'NFV feature
|
||||
support'.
|
||||
|
||||
----------------
|
||||
Proposed changes
|
||||
----------------
|
||||
|
||||
Integrate packages from 'feature/nfv' branch into main 9.0 development branch
|
||||
and verify that they work as expected.
|
||||
|
||||
To enable the feature from OpenStack side additional parameter should be
|
||||
added to image properties, like shown below:
|
||||
|
||||
..code-block:: text
|
||||
|
||||
hw_vif_multiqueue_enabled=true|false (default false)
|
||||
|
||||
Currently, the number of queues will match the number of vCPUs, defined for
|
||||
the instance.
|
||||
|
||||
..note:: Virtio-net multiqueue should be enabled in the guest OS manually,
|
||||
using ethtool. For example:
|
||||
|
||||
..code-block:: text
|
||||
|
||||
ethtool -L <NIC> combined #num_of_queues
|
||||
|
||||
|
||||
Web UI
|
||||
======
|
||||
|
||||
None
|
||||
|
||||
Nailgun
|
||||
=======
|
||||
|
||||
None
|
||||
|
||||
|
||||
Data model
|
||||
----------
|
||||
|
||||
None
|
||||
|
||||
|
||||
REST API
|
||||
--------
|
||||
|
||||
None
|
||||
|
||||
|
||||
Orchestration
|
||||
=============
|
||||
|
||||
None
|
||||
|
||||
|
||||
RPC Protocol
|
||||
------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
Fuel Client
|
||||
===========
|
||||
|
||||
None
|
||||
|
||||
|
||||
Plugins
|
||||
=======
|
||||
|
||||
Networking-related plugins might face issues with new packages.
|
||||
|
||||
|
||||
Fuel Library
|
||||
============
|
||||
|
||||
None
|
||||
|
||||
|
||||
------------
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
There is no other way than upgrade to the packages that provide multiqueue
|
||||
functionality.
|
||||
|
||||
|
||||
--------------
|
||||
Upgrade impact
|
||||
--------------
|
||||
|
||||
Upgrading QEMU requires every guest VM was stopped and started again (not
|
||||
rebooted).
|
||||
|
||||
|
||||
---------------
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
--------------------
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
---------------
|
||||
End user impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
------------------
|
||||
Performance impact
|
||||
------------------
|
||||
|
||||
Improves NFV performance.
|
||||
|
||||
|
||||
-----------------
|
||||
Deployment impact
|
||||
-----------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
----------------
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
---------------------
|
||||
Infrastructure impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
--------------------
|
||||
Documentation impact
|
||||
--------------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
--------------
|
||||
Implementation
|
||||
--------------
|
||||
|
||||
Assignee(s)
|
||||
===========
|
||||
|
||||
Primary assignee:
|
||||
`Dmitry Teselkin`_
|
||||
|
||||
Other contributors:
|
||||
`Ivan Suzdal`_
|
||||
|
||||
Mandatory design review:
|
||||
`Dmitry Klenov`_
|
||||
|
||||
|
||||
Work Items
|
||||
==========
|
||||
|
||||
* Move every package from 'feature/nfv' into 9.0 branch, merge and build
|
||||
packages.
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
None
|
||||
|
||||
|
||||
------------
|
||||
Testing, QA
|
||||
------------
|
||||
|
||||
* Verify that new set of packages doesn't introduce any regressions.
|
||||
|
||||
* Verify that vhost-user network works in OpenStack
|
||||
|
||||
|
||||
Acceptance criteria
|
||||
===================
|
||||
|
||||
* The following packages available in 9.2 repository:
|
||||
|
||||
* qemu - 2.5
|
||||
|
||||
* libvirt - 1.3.1
|
||||
|
||||
* openvswitch - 2.5
|
||||
|
||||
* dpdk - 2.2
|
||||
|
||||
* dependencies for the packages above
|
||||
|
||||
* MOS 9.2 uses updated packages by default
|
||||
|
||||
* Multiqueue support with vhost user in OpenStack
|
||||
|
||||
|
||||
----------
|
||||
References
|
||||
----------
|
||||
|
||||
.. _`Dmitry Teselkin`: https://launchpad.net/~teselkin-d
|
||||
.. _`Ivan Suzdal`: https://launchpad.net/~isuzdal
|
||||
.. _`Dmitry Klenov`: https://launchpad.net/~dklenov
|
||||
.. _`Vladimir Khlyunev`: https://launchpad.net/~vkhlyunev
|
||||
.. _`Libvirt: virtio-net multiqueue`: https://specs.openstack.org/openstack/nova-specs/specs/liberty/implemented/libvirt-virtiomq.html
|
Loading…
Reference in New Issue