[ovs-dev] OvS-DPDK as secondary process

Ilya Maximets i.maximets at ovn.org
Thu Mar 11 20:55:58 UTC 2021

On 3/11/21 8:46 PM, Ravi Kerur wrote:
> On Thu, Mar 11, 2021 at 10:00 AM Ben Pfaff <blp at ovn.org> wrote:
>> On Thu, Mar 11, 2021 at 03:06:28AM -0800, Ravi Kerur wrote:
>>> I am looking into running OvS-DPDK as a secondary DPDK process instead of
>>> primary. We have a  custom built binary running as a primary DPDK process
>>> and would like to augment it with OvS-DPDK running as secondary. DPDK EAL
>>> has '--proc-type=secondary' parameter which could be used to run as
>>> secondary, however, I don't see it as a supported option while
>> configuring
>>> OvS-DPDK. Any config in OvS available for this?
>> You can set additional DPDK configuration options for OVS with
>> ovs-vsctl set Open_vSwitch . other-config:dpdk-extra="..."
>> I don't know whether this particular option works.
> Thank you, it worked.

Yes, it might work.  However, OVS uses non-EAL threads to poll
DPDK ports and not all DPDK mempool implementations are safe
while using non-EAL threads.  For example, bucket mempool is
not safe and attempt to use it will crash OVS.  While using
multi-process mode you also must ensure that both applications
are running on a different set of cores and that is not easy
taking into account that non-pmd threads in OVS are not pinned.
There are likely other places in DPDK that are not safe.
For these reasons we deprecated and removed support of pdump
and dpdk ring ports:

  4ae8c4617fd3 ("dpdk: Deprecate pdump support.")
  b4c5f00c339b ("netdev-dpdk: Deprecate ring ports.")

Disabling of a multi-process support also required in order
to use new lcore management API which is needed to support
running on arbitrary CPU cores.

In general, OVS doesn't support multi-process mode and we're
going to completely disable it and, likely, use '--in-memory'
by default to avoid littering of a filesystem with hugepage
files and other stuff.

Best regards, Ilya Maximets.

More information about the dev mailing list