Message ID | 20191126113148.30474-1-i.maximets@ovn.org |
---|---|
State | Accepted |
Delegated to: | Ilya Maximets |
Headers | show |
Series | [ovs-dev] netdev-dpdk: Deprecate ring ports. | expand |
On Tue, Nov 26, 2019 at 12:31:48PM +0100, Ilya Maximets wrote: > 'dpdkr' a.k.a. DPDK ring ports has really poor support in OVS and not > tested on a regular basis. These ports are intended to work via > shared memory with another DPDK secondary process, but there are lots > of limitations for using this functionality in practice. Most of them > connected with running secondary DPDK application and memory layout > issues. More details are available in DPDK guide: > https://doc.dpdk.org/guides/prog_guide/multi_proc_support.html#multi-process-limitations > > Beside the functional limitations it's also hard to use this > functionality correctly. User must be sure that OVS and secondary DPDK > application are running on different CPU cores, which is hard because > non-PMD threads could float over available CPU cores. This or any > other misconfiguration will likely lead to crash of OVS. > > Another problem is that the user must actually build the secondary > application with the same version of DPDK that was used for OVS build. > > Above issues are same as we have while using DPDK pdump. > > Beside that, current implementation in OVS is not able to free > allocated rings that could lead to memory exhausting. > > Initially these ports was added to use with IVSHMEM for a fast > zero-copy HOST<-->VM communication. However, IVSHMEM is not used > anymore. IVSHMEM support was removed from DPDK in 16.11 relase and > the patch for QEMU for using regular files as a device backend is no > longer available. That makes DPDK ring ports barely useful in real > virtualization environment. > > This patch adds a deprecation warnings for run-time port creation > and documentation. Claiming to completely remove this functionality > from OVS in one of the next releases. > > Signed-off-by: Ilya Maximets <i.maximets@ovn.org> > --- Acked-by: Flavio Leitner <fbl@sysclose.org>
On 11/26/2019 11:31 AM, Ilya Maximets wrote: > 'dpdkr' a.k.a. DPDK ring ports has really poor support in OVS and not > tested on a regular basis. These ports are intended to work via > shared memory with another DPDK secondary process, but there are lots > of limitations for using this functionality in practice. Most of them > connected with running secondary DPDK application and memory layout > issues. More details are available in DPDK guide: > https://doc.dpdk.org/guides/prog_guide/multi_proc_support.html#multi-process-limitations > > Beside the functional limitations it's also hard to use this > functionality correctly. User must be sure that OVS and secondary DPDK > application are running on different CPU cores, which is hard because > non-PMD threads could float over available CPU cores. This or any > other misconfiguration will likely lead to crash of OVS. > > Another problem is that the user must actually build the secondary > application with the same version of DPDK that was used for OVS build. > > Above issues are same as we have while using DPDK pdump. > > Beside that, current implementation in OVS is not able to free > allocated rings that could lead to memory exhausting. > > Initially these ports was added to use with IVSHMEM for a fast > zero-copy HOST<-->VM communication. However, IVSHMEM is not used > anymore. IVSHMEM support was removed from DPDK in 16.11 relase and > the patch for QEMU for using regular files as a device backend is no > longer available. That makes DPDK ring ports barely useful in real > virtualization environment. > > This patch adds a deprecation warnings for run-time port creation > and documentation. Claiming to completely remove this functionality > from OVS in one of the next releases. > > Signed-off-by: Ilya Maximets <i.maximets@ovn.org> > --- > > These ports also produces complications with offload flags management: > https://mail.openvswitch.org/pipermail/ovs-dev/2019-November/365048.html > > Documentation/topics/dpdk/ring.rst | 6 ++++++ > NEWS | 2 ++ > lib/netdev-dpdk.c | 4 ++++ > 3 files changed, 12 insertions(+) > > diff --git a/Documentation/topics/dpdk/ring.rst b/Documentation/topics/dpdk/ring.rst > index 81c2efb37..d8d871601 100644 > --- a/Documentation/topics/dpdk/ring.rst > +++ b/Documentation/topics/dpdk/ring.rst > @@ -25,6 +25,12 @@ > DPDK Ring Ports > =============== > > +.. warning:: > + > + DPDK ring ports are considered *deprecated*. Please migrate to > + virtio-based interfaces, e.g. :doc:`vhost-user ports <vhost-user>` ports, > + ``net_virtio_user`` :doc:`DPDK vdev <vdev>`. > + > .. warning:: > > DPDK ring interfaces cannot be used for guest communication and are retained > diff --git a/NEWS b/NEWS > index 100d7b6a8..f9160a9da 100644 > --- a/NEWS > +++ b/NEWS > @@ -22,6 +22,8 @@ Post-v2.12.0 > * DPDK pdump packet capture support disabled by default. New configure > option '--enable-dpdk-pdump' to enable it. > * DPDK pdump support is deprecated and will be removed in next releases. > + * DPDK ring ports (dpdkr) are deprecated and will be removed in next > + releases. > > v2.12.0 - 03 Sep 2019 > --------------------- > diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c > index 02120a379..4c9f122b0 100644 > --- a/lib/netdev-dpdk.c > +++ b/lib/netdev-dpdk.c > @@ -4002,6 +4002,10 @@ netdev_dpdk_ring_construct(struct netdev *netdev) > dpdk_port_t port_no = 0; > int err = 0; > > + VLOG_WARN_ONCE("dpdkr a.k.a. ring ports are considered deprecated. " > + "Please migrate to virtio-based interfaces, e.g. " > + "dpdkvhostuserclient ports, net_virtio_user DPDK vdev."); > + > ovs_mutex_lock(&dpdk_mutex); > > err = dpdk_ring_open(netdev->name, &port_no); > Acked-by: Ian Stokes <ian.stokes@intel.com>
Ilya Maximets <i.maximets@ovn.org> writes: > 'dpdkr' a.k.a. DPDK ring ports has really poor support in OVS and not > tested on a regular basis. These ports are intended to work via > shared memory with another DPDK secondary process, but there are lots > of limitations for using this functionality in practice. Most of them > connected with running secondary DPDK application and memory layout > issues. More details are available in DPDK guide: > https://doc.dpdk.org/guides/prog_guide/multi_proc_support.html#multi-process-limitations > > Beside the functional limitations it's also hard to use this > functionality correctly. User must be sure that OVS and secondary DPDK > application are running on different CPU cores, which is hard because > non-PMD threads could float over available CPU cores. This or any > other misconfiguration will likely lead to crash of OVS. > > Another problem is that the user must actually build the secondary > application with the same version of DPDK that was used for OVS build. > > Above issues are same as we have while using DPDK pdump. > > Beside that, current implementation in OVS is not able to free > allocated rings that could lead to memory exhausting. > > Initially these ports was added to use with IVSHMEM for a fast > zero-copy HOST<-->VM communication. However, IVSHMEM is not used > anymore. IVSHMEM support was removed from DPDK in 16.11 relase and > the patch for QEMU for using regular files as a device backend is no > longer available. That makes DPDK ring ports barely useful in real > virtualization environment. > > This patch adds a deprecation warnings for run-time port creation > and documentation. Claiming to completely remove this functionality > from OVS in one of the next releases. > > Signed-off-by: Ilya Maximets <i.maximets@ovn.org> > --- Acked-by: Aaron Conole <aconole@redhat.com>
On Tue, Nov 26, 2019 at 12:32 PM Ilya Maximets <i.maximets@ovn.org> wrote: > > 'dpdkr' a.k.a. DPDK ring ports has really poor support in OVS and not > tested on a regular basis. These ports are intended to work via > shared memory with another DPDK secondary process, but there are lots > of limitations for using this functionality in practice. Most of them > connected with running secondary DPDK application and memory layout > issues. More details are available in DPDK guide: > https://doc.dpdk.org/guides/prog_guide/multi_proc_support.html#multi-process-limitations Nit. I did not realise earlier with pdump deprecation, but pointing at a release guide might be better than the master guide. The doc of an existing release won't change, while in master, this page could get renamed etc.. Here, https://doc.dpdk.org/guides-18.11/prog_guide/multi_proc_support.html#multi-process-limitations > > Beside the functional limitations it's also hard to use this > functionality correctly. User must be sure that OVS and secondary DPDK > application are running on different CPU cores, which is hard because > non-PMD threads could float over available CPU cores. This or any > other misconfiguration will likely lead to crash of OVS. > > Another problem is that the user must actually build the secondary > application with the same version of DPDK that was used for OVS build. > > Above issues are same as we have while using DPDK pdump. > > Beside that, current implementation in OVS is not able to free > allocated rings that could lead to memory exhausting. > > Initially these ports was added to use with IVSHMEM for a fast > zero-copy HOST<-->VM communication. However, IVSHMEM is not used > anymore. IVSHMEM support was removed from DPDK in 16.11 relase and release > the patch for QEMU for using regular files as a device backend is no > longer available. That makes DPDK ring ports barely useful in real > virtualization environment. > > This patch adds a deprecation warnings for run-time port creation > and documentation. Claiming to completely remove this functionality > from OVS in one of the next releases. > > Signed-off-by: Ilya Maximets <i.maximets@ovn.org> Acked-by: David Marchand <david.marchand@redhat.com> Thanks. -- David Marchand
On 26/11/2019 11:31, Ilya Maximets wrote: > 'dpdkr' a.k.a. DPDK ring ports has really poor support in OVS and not > tested on a regular basis. These ports are intended to work via > shared memory with another DPDK secondary process, but there are lots > of limitations for using this functionality in practice. Most of them > connected with running secondary DPDK application and memory layout > issues. More details are available in DPDK guide: > https://doc.dpdk.org/guides/prog_guide/multi_proc_support.html#multi-process-limitations > > Beside the functional limitations it's also hard to use this > functionality correctly. User must be sure that OVS and secondary DPDK > application are running on different CPU cores, which is hard because > non-PMD threads could float over available CPU cores. This or any > other misconfiguration will likely lead to crash of OVS. > > Another problem is that the user must actually build the secondary > application with the same version of DPDK that was used for OVS build. > > Above issues are same as we have while using DPDK pdump. > > Beside that, current implementation in OVS is not able to free > allocated rings that could lead to memory exhausting. > > Initially these ports was added to use with IVSHMEM for a fast > zero-copy HOST<-->VM communication. However, IVSHMEM is not used > anymore. IVSHMEM support was removed from DPDK in 16.11 relase and > the patch for QEMU for using regular files as a device backend is no > longer available. That makes DPDK ring ports barely useful in real > virtualization environment. > You could also reference that instructions for ivshmem were removed from the OVS docs almost 3 years ago. 90ca71dd317f ("doc: Remove ivshmem instructions.") > This patch adds a deprecation warnings for run-time port creation > and documentation. Claiming to completely remove this functionality > from OVS in one of the next releases. > > Signed-off-by: Ilya Maximets <i.maximets@ovn.org> > --- Acked-by: Kevin Traynor <ktraynor@redhat.com>
On 26.11.2019 12:31, Ilya Maximets wrote: > 'dpdkr' a.k.a. DPDK ring ports has really poor support in OVS and not > tested on a regular basis. These ports are intended to work via > shared memory with another DPDK secondary process, but there are lots > of limitations for using this functionality in practice. Most of them > connected with running secondary DPDK application and memory layout > issues. More details are available in DPDK guide: > https://doc.dpdk.org/guides/prog_guide/multi_proc_support.html#multi-process-limitations > > Beside the functional limitations it's also hard to use this > functionality correctly. User must be sure that OVS and secondary DPDK > application are running on different CPU cores, which is hard because > non-PMD threads could float over available CPU cores. This or any > other misconfiguration will likely lead to crash of OVS. > > Another problem is that the user must actually build the secondary > application with the same version of DPDK that was used for OVS build. > > Above issues are same as we have while using DPDK pdump. > > Beside that, current implementation in OVS is not able to free > allocated rings that could lead to memory exhausting. > > Initially these ports was added to use with IVSHMEM for a fast > zero-copy HOST<-->VM communication. However, IVSHMEM is not used > anymore. IVSHMEM support was removed from DPDK in 16.11 relase and > the patch for QEMU for using regular files as a device backend is no > longer available. That makes DPDK ring ports barely useful in real > virtualization environment. > > This patch adds a deprecation warnings for run-time port creation > and documentation. Claiming to completely remove this functionality > from OVS in one of the next releases. > > Signed-off-by: Ilya Maximets <i.maximets@ovn.org> > --- Thanks to all. I updated the commit-message with suggestions from David and Kevin and applied to master. Best regards, Ilya Maximets.
diff --git a/Documentation/topics/dpdk/ring.rst b/Documentation/topics/dpdk/ring.rst index 81c2efb37..d8d871601 100644 --- a/Documentation/topics/dpdk/ring.rst +++ b/Documentation/topics/dpdk/ring.rst @@ -25,6 +25,12 @@ DPDK Ring Ports =============== +.. warning:: + + DPDK ring ports are considered *deprecated*. Please migrate to + virtio-based interfaces, e.g. :doc:`vhost-user ports <vhost-user>` ports, + ``net_virtio_user`` :doc:`DPDK vdev <vdev>`. + .. warning:: DPDK ring interfaces cannot be used for guest communication and are retained diff --git a/NEWS b/NEWS index 100d7b6a8..f9160a9da 100644 --- a/NEWS +++ b/NEWS @@ -22,6 +22,8 @@ Post-v2.12.0 * DPDK pdump packet capture support disabled by default. New configure option '--enable-dpdk-pdump' to enable it. * DPDK pdump support is deprecated and will be removed in next releases. + * DPDK ring ports (dpdkr) are deprecated and will be removed in next + releases. v2.12.0 - 03 Sep 2019 --------------------- diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index 02120a379..4c9f122b0 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -4002,6 +4002,10 @@ netdev_dpdk_ring_construct(struct netdev *netdev) dpdk_port_t port_no = 0; int err = 0; + VLOG_WARN_ONCE("dpdkr a.k.a. ring ports are considered deprecated. " + "Please migrate to virtio-based interfaces, e.g. " + "dpdkvhostuserclient ports, net_virtio_user DPDK vdev."); + ovs_mutex_lock(&dpdk_mutex); err = dpdk_ring_open(netdev->name, &port_no);
'dpdkr' a.k.a. DPDK ring ports has really poor support in OVS and not tested on a regular basis. These ports are intended to work via shared memory with another DPDK secondary process, but there are lots of limitations for using this functionality in practice. Most of them connected with running secondary DPDK application and memory layout issues. More details are available in DPDK guide: https://doc.dpdk.org/guides/prog_guide/multi_proc_support.html#multi-process-limitations Beside the functional limitations it's also hard to use this functionality correctly. User must be sure that OVS and secondary DPDK application are running on different CPU cores, which is hard because non-PMD threads could float over available CPU cores. This or any other misconfiguration will likely lead to crash of OVS. Another problem is that the user must actually build the secondary application with the same version of DPDK that was used for OVS build. Above issues are same as we have while using DPDK pdump. Beside that, current implementation in OVS is not able to free allocated rings that could lead to memory exhausting. Initially these ports was added to use with IVSHMEM for a fast zero-copy HOST<-->VM communication. However, IVSHMEM is not used anymore. IVSHMEM support was removed from DPDK in 16.11 relase and the patch for QEMU for using regular files as a device backend is no longer available. That makes DPDK ring ports barely useful in real virtualization environment. This patch adds a deprecation warnings for run-time port creation and documentation. Claiming to completely remove this functionality from OVS in one of the next releases. Signed-off-by: Ilya Maximets <i.maximets@ovn.org> --- These ports also produces complications with offload flags management: https://mail.openvswitch.org/pipermail/ovs-dev/2019-November/365048.html Documentation/topics/dpdk/ring.rst | 6 ++++++ NEWS | 2 ++ lib/netdev-dpdk.c | 4 ++++ 3 files changed, 12 insertions(+)