]> git.proxmox.com Git - ovs.git/commit
dpdk: Support both shared and per port mempools.
authorIan Stokes <ian.stokes@intel.com>
Wed, 27 Jun 2018 13:58:31 +0000 (14:58 +0100)
committerIan Stokes <ian.stokes@intel.com>
Fri, 6 Jul 2018 11:46:26 +0000 (12:46 +0100)
commit43307ad0e2543c9c8443f3ab1150ab03f4eb551c
tree6551694f452aab5cb6ff1ee8baeca9873e532641
parentc3c722d2c7ee3a315d3520da7e83644fd05a942e
dpdk: Support both shared and per port mempools.

This commit re-introduces the concept of shared mempools as the default
memory model for DPDK devices. Per port mempools are still available but
must be enabled explicitly by a user.

OVS previously used a shared mempool model for ports with the same MTU
and socket configuration. This was replaced by a per port mempool model
to address issues flagged by users such as:

https://mail.openvswitch.org/pipermail/ovs-discuss/2016-September/042560.html

However the per port model potentially requires an increase in memory
resource requirements to support the same number of ports and configuration
as the shared port model.

This is considered a blocking factor for current deployments of OVS
when upgrading to future OVS releases as a user may have to redimension
memory for the same deployment configuration. This may not be possible for
users.

This commit resolves the issue by re-introducing shared mempools as
the default memory behaviour in OVS DPDK but also refactors the memory
configuration code to allow for per port mempools.

This patch adds a new global config option, per-port-memory, that
controls the enablement of per port mempools for DPDK devices.

    ovs-vsctl set Open_vSwitch . other_config:per-port-memory=true

This value defaults to false; to enable per port memory support,
this field should be set to true when setting other global parameters
on init (such as "dpdk-socket-mem", for example). Changing the value at
runtime is not supported, and requires restarting the vswitch
daemon.

The mempool sweep functionality is also replaced with the
sweep functionality from OVS 2.9 found in commits

c77f692 (netdev-dpdk: Free mempool only when no in-use mbufs.)
a7fb0a4 (netdev-dpdk: Add mempool reuse/free debug.)

A new document to discuss the specifics of the memory models and example
memory requirement calculations is also added.

Signed-off-by: Ian Stokes <ian.stokes@intel.com>
Acked-by: Kevin Traynor <ktraynor@redhat.com>
Acked-by: Tiago Lam <tiago.lam@intel.com>
Tested-by: Tiago Lam <tiago.lam@intel.com>
Documentation/automake.mk
Documentation/intro/install/dpdk.rst
Documentation/topics/dpdk/index.rst
Documentation/topics/dpdk/memory.rst [new file with mode: 0644]
NEWS
lib/dpdk-stub.c
lib/dpdk.c
lib/dpdk.h
lib/netdev-dpdk.c
vswitchd/vswitch.xml