summaryrefslogtreecommitdiff
path: root/vswitchd/vswitch.xml
diff options
context:
space:
mode:
authorIan Stokes <ian.stokes@intel.com>2018-06-27 14:58:31 +0100
committerIan Stokes <ian.stokes@intel.com>2018-07-06 12:46:26 +0100
commit43307ad0e2543c9c8443f3ab1150ab03f4eb551c (patch)
tree6551694f452aab5cb6ff1ee8baeca9873e532641 /vswitchd/vswitch.xml
parentc3c722d2c7ee3a315d3520da7e83644fd05a942e (diff)
downloadopenvswitch-43307ad0e2543c9c8443f3ab1150ab03f4eb551c.tar.gz
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>
Diffstat (limited to 'vswitchd/vswitch.xml')
-rw-r--r--vswitchd/vswitch.xml17
1 files changed, 17 insertions, 0 deletions
diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
index 76094852d..2ada246bd 100644
--- a/vswitchd/vswitch.xml
+++ b/vswitchd/vswitch.xml
@@ -360,6 +360,23 @@
</p>
</column>
+ <column name="other_config" key="per-port-memory"
+ type='{"type": "boolean"}'>
+ <p>
+ By default OVS DPDK uses a shared memory model wherein devices
+ that have the same MTU and socket values can share the same
+ mempool. Setting this value to <code>true</code> changes this
+ behaviour. Per port memory allow DPDK devices to use private
+ memory per device. This can provide greater transparency as
+ regards memory usage but potentially at the cost of greater memory
+ requirements.
+ </p>
+ <p>
+ Changing this value requires restarting the daemon if dpdk-init has
+ already been set to true.
+ </p>
+ </column>
+
<column name="other_config" key="tx-flush-interval"
type='{"type": "integer",
"minInteger": 0, "maxInteger": 1000000}'>