From patchwork Fri Feb 1 13:11:12 2019
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Ilya Maximets
X-Patchwork-Id: 1034753
X-Patchwork-Delegate: ian.stokes@intel.com
Return-Path:
X-Original-To: incoming@patchwork.ozlabs.org
Delivered-To: patchwork-incoming@bilbo.ozlabs.org
Authentication-Results: ozlabs.org;
spf=pass (mailfrom) smtp.mailfrom=openvswitch.org
(client-ip=140.211.169.12; helo=mail.linuxfoundation.org;
envelope-from=ovs-dev-bounces@openvswitch.org;
receiver=)
Authentication-Results: ozlabs.org;
dmarc=fail (p=none dis=none) header.from=samsung.com
Authentication-Results: ozlabs.org;
dkim=fail reason="signature verification failed" (1024-bit key;
unprotected) header.d=samsung.com header.i=@samsung.com
header.b="HzDhcMO1"; dkim-atps=neutral
Received: from mail.linuxfoundation.org (mail.linuxfoundation.org
[140.211.169.12])
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256
bits)) (No client certificate requested)
by ozlabs.org (Postfix) with ESMTPS id 43rd1S0vkXz9s9G
for ;
Sat, 2 Feb 2019 00:17:15 +1100 (AEDT)
Received: from mail.linux-foundation.org (localhost [127.0.0.1])
by mail.linuxfoundation.org (Postfix) with ESMTP id 9875F76C3;
Fri, 1 Feb 2019 13:16:41 +0000 (UTC)
X-Original-To: ovs-dev@openvswitch.org
Delivered-To: ovs-dev@mail.linuxfoundation.org
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
[172.17.192.35])
by mail.linuxfoundation.org (Postfix) with ESMTPS id DE9EC76B4
for ; Fri, 1 Feb 2019 13:11:35 +0000 (UTC)
X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6
Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com
[210.118.77.12])
by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 682A0711
for ; Fri, 1 Feb 2019 13:11:34 +0000 (UTC)
Received: from eucas1p1.samsung.com (unknown [182.198.249.206])
by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id
20190201131132euoutp020193c3c9d2061adb3b2bafbf587e074e~-P5H2MaoM3161131611euoutp02w
for ; Fri, 1 Feb 2019 13:11:32 +0000 (GMT)
DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com
20190201131132euoutp020193c3c9d2061adb3b2bafbf587e074e~-P5H2MaoM3161131611euoutp02w
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com;
s=mail20170921; t=1549026693;
bh=lxz5s6GqfzoDSZV1N5/mBQQ9gQ32WlVnqKT0h1N3EQI=;
h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
b=HzDhcMO1lTdcLTrs6eYBTzhFonPSf8E7yiMJQJPz0Sk/AWu9nrjYydxppZr/6tPer
du6O0tPGRhCUugJUQTgdOOIofVlVbcQk0pujeWHOU1n7J9SHFXnKqSo0iDJTY2iO9W
2NxSpyZdsXRYb+YVevc1kUVIQcIS86v+E6lqgSg8=
Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by
eucas1p2.samsung.com (KnoxPortal) with ESMTP id
20190201131132eucas1p2fd56ec2eb63965cee5d5e47e4a91cc5c~-P5HXO1pZ2188721887eucas1p2y;
Fri, 1 Feb 2019 13:11:32 +0000 (GMT)
Received: from eucas1p2.samsung.com ( [182.198.249.207]) by
eusmges1new.samsung.com (EUCPMTA) with SMTP id 18.EB.04441.485445C5;
Fri, 1 Feb 2019 13:11:32 +0000 (GMT)
Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by
eucas1p1.samsung.com (KnoxPortal) with ESMTPA id
20190201131131eucas1p16f9d8fd16e1ffeb60433c6374482f4c6~-P5Gc1BCU1342013420eucas1p1W;
Fri, 1 Feb 2019 13:11:31 +0000 (GMT)
Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by
eusmtrp1.samsung.com (KnoxPortal) with ESMTP id
20190201131131eusmtrp18601e9036bfdc9eb2033abc954c69da1~-P5GOhBue2924629246eusmtrp1b;
Fri, 1 Feb 2019 13:11:31 +0000 (GMT)
X-AuditID: cbfec7f2-5e3ff70000001159-d1-5c544584bdbf
Received: from eusmtip1.samsung.com ( [203.254.199.221]) by
eusmgms1.samsung.com (EUCPMTA) with SMTP id A8.C2.04284.385445C5;
Fri, 1 Feb 2019 13:11:31 +0000 (GMT)
Received: from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by
eusmtip1.samsung.com (KnoxPortal) with ESMTPA id
20190201131130eusmtip1e6972edce6cd14f8aefddb859cf2815f~-P5FfVGEM1130411304eusmtip1Z;
Fri, 1 Feb 2019 13:11:30 +0000 (GMT)
From: Ilya Maximets
To: ovs-dev@openvswitch.org, Ian Stokes
Date: Fri, 1 Feb 2019 16:11:12 +0300
Message-Id: <20190201131114.29799-2-i.maximets@samsung.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190201131114.29799-1-i.maximets@samsung.com>
X-Brightmail-Tracker:
H4sIAAAAAAAAA0VSa0hTYRju2zk7O45mxyn4ooI4kshKWxTNNC9ksD9RikHY0I56cqKbsjM1
C8pbKTLNFJsJYVKguSJdS0TFdJhGpkF5x7x0Ey+VbFpOydp2lP49z/M+F/j4SEz8C/ciU9Va
RqOm0yWEEG/ts707VHQ6VnF4eYyQbSzPCmSLVXlINlxsE8ha5gb5sqfmFYHsvmUeRRDyh50L
PPm3ib9IPj+qw+U/u0YIebmpCZ3jxwlDk5n01GxGExR2Sah8MlOIZQ5WoCsLbd55yKosRS4k
UEdhqHwSlSIhKaYaEWxuGHGOrCIwz3Uih0tMWREsFqKdxPCnte1EAwJD/RTGkXUE3S0TfIeL
oA7CG0OvM+FBhcHdpgKew4RRZQiqJz8QjoM7dRLafo84AzjlDx9NK05dRIWA1VTJ4+Z8wdDc
jTmwCxUKFn2NswioJQLWinvshLSTKLBVSTm/Oyz2mwQc9oGBKh3O4RswU7SAuGwJAr15a3sg
HExLQwJHD0bth2ftQZwcCXrLFMHVu8L4dzeHjNlhZase42QRlNwSc+69sNnTgHHYCyZ+WAWc
RQ6jr2O457mNoGhax69AvrX/tx4g1IQ8mSxWlcKwUjWTE8jSKjZLnRKYlKEyIvtvGNjqt7Sh
tfeJZkSRSLJb1LwRoxDz6Ww2V2VGQGISD1FjVKxCLEqmc68ymowETVY6w5qRN4lLPEXXds1e
FFMptJZJY5hMRrNz5ZEuXnmoJakh9OZs5KZmy/bIpnx8atwYoAu2Tnd3Xp7Jz+GTX/tj6vJ5
Ou3bY/411fF1fpLzip6xcf8yos8tOjzdb5+avlBvu96x+jyk0rt9StUR11jf5W7oTYqXps1F
RGcu+9TVmu61nqgxEtrjrsEvbQcKEl58fnXnzJH1P7n6L2f3JEpwVklLAzANS/8DV0NCdQkD
AAA=
X-Brightmail-Tracker:
H4sIAAAAAAAAA+NgFrrBLMWRmVeSWpSXmKPExsVy+t/xu7rNriExBlMesVv8evOA3eLV5AZG
iyvtP9ktNj48y2qx9tAHdou5n54zOrB5LN7zksnj2c3/jB7Pr/WweLzfd5XNo2/LKsYA1ig9
m6L80pJUhYz84hJbpWhDCyM9Q0sLPSMTSz1DY/NYKyNTJX07m5TUnMyy1CJ9uwS9jDX3m5kL
zk5grHi5Q7qB8XNGFyMnh4SAicSVR18ZQWwhgaWMEgfuq0HEpSR+/LrACmELS/y51sXWxcgF
VPONUWJazys2kASbgI7EqdVHwJpFBBwkNt9dzApSxCwwkVHi7NReJpCEsICtxI7vV8EmsQio
Stzd8gGsmVfAWuLzlklMEBvkJVZvOMAMYnMK2Eh8mj4DKM4BtM1aon2C4gRGvgWMDKsYRVJL
i3PTc4sN9YoTc4tL89L1kvNzNzECQ3XbsZ+bdzBe2hh8iFGAg1GJh3fDr6AYIdbEsuLK3EOM
EhzMSiK8K1xCYoR4UxIrq1KL8uOLSnNSiw8xmgLdNJFZSjQ5HxhHeSXxhqaG5haWhubG5sZm
FkrivOcNKqOEBNITS1KzU1MLUotg+pg4OKUaGIML3iVJ7i9olft091rNZFnnaatPhWzuOrNL
68rZd4IBn39z5JaIPcpie8Znv3Sf7t7jYlKrd8743XI363jttwliLO+bpCoXHdC+wyuzV7R5
xY9VTyTeSCW/rC7/xXE9dJIUn5j/vETbCAsR3Y4nWqqXf/GmVAg8q488FqiiuOhGf16zjEDO
dCWW4oxEQy3mouJEACcKAmFrAgAA
X-CMS-MailID: 20190201131131eucas1p16f9d8fd16e1ffeb60433c6374482f4c6
X-Msg-Generator: CA
X-RootMTR: 20190201131131eucas1p16f9d8fd16e1ffeb60433c6374482f4c6
X-EPHeader: CA
CMS-TYPE: 201P
X-CMS-RootMailID: 20190201131131eucas1p16f9d8fd16e1ffeb60433c6374482f4c6
References: <20190201131114.29799-1-i.maximets@samsung.com>
X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,
DKIM_VALID, DKIM_VALID_AU,
RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
smtp1.linux-foundation.org
Cc: Ilya Maximets
Subject: [ovs-dev] [RFC 1/3] dpdk: Unify passing of DPDK EAL arguments.
X-BeenThere: ovs-dev@openvswitch.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
MIME-Version: 1.0
Sender: ovs-dev-bounces@openvswitch.org
Errors-To: ovs-dev-bounces@openvswitch.org
This patch deprecates the usage of current configuration knobs for
DPDK EAL arguments:
- dpdk-alloc-mem
- dpdk-socket-mem
- dpdk-socket-limit
- dpdk-lcore-mask
- dpdk-hugepage-dir
- dpdk-extra
All above configuration options replaced with single 'dpdk-options'
which has same format as old 'dpdk-extra', i.e. just a string with
all the DPDK EAL arguments.
All the documentation about old configuration knobs removed. Users
could still use an old interface, but the deprecation warning will be
printed. In case 'dpdk-options' provided, values of old options will
be ignored. New users will start using new 'dpdk-options' as this is
the only documented way providing EAL arguments.
Rationale:
From release to release DPDK becomes more complex. New EAL arguments
appears, old arguments becomes deprecated. Some changes their meaning
and behaviour. It's not easy task to manage all this and current
code in OVS that tries to manage DPDK options is not flexible/extendable
enough even to track all the dependencies between options in DPDK 18.11.
For example, '--socket-mem' changed its meaning, '--legacy-mem' and
'--socket-limit' appeared. But '--legacy-mem' and '--socket-limit'
could not be used at the same time and, also, we want to provide
good default value for '--socket-limit' to keep the consistent
behaviour of OVS memory usage. And this will be worse in the future.
Another point is that even now we have mutually exclusive database
configs in OVS and we have to handle them. i.e we're providing
'dpdk-alloc-mem' and 'dpdk-socket-mem' at the same time. Additionally,
user allowed to configure same options in 'dpdk-extra'. So, we have
similar/equal options in a three places in ovsdb and we need to
choose which one to use. It's pretty easy for user to get into
inconsistent database configuration, because users could update
one field without removing others, and OVS has to resolve all the
conflicts somehow constructing the EAL args. But we do not know in
practice, if the resulted arguments are the arguments that user wanted
to see or just forget to remove the higher priority knob.
Next point is that we have 'dpdk-lcore-mask' (-c) which is actually not
so user-friendly as '-l', but we have no option for it. Will we create
additional 'dpdk-lcore-list' ? I guess, no, because it's not really
important thing. But users will stuck with this not so user-friendly
masks.
Another thing is that OVS is not really need to check the consistency
of the EAL arguments because DPDK could check it instead. DPDK will
always check the args and it will do it better. There is no real
need to duplicate this functionality.
Keeping all the options in a single string 'dpdk-options' allows:
* To have only one place for all the configs, i.e. it will be harder
for user to forget to remove something from the single string while
updating it.
* Not to check the consistency between different configs, DPDK could
check the cmdline itself.
* Not to document every DPDK EAL argument in OVS. We can just
describe few of them and point to DPDK docs for more information.
* OVS still able to provide some minimal default arguments.
Thanks to DPDK 18.11 we only need to specify an lcore. All other
arguments are not necessary. (We still also providing default
--socket-limit in case --socket-mem passed without it and without
--legacy-mem)
Usage example:
ovs-vsctl set Open_vSwitch . \
other_config:dpdk-options="-l 1 -n 4 --socket-mem 1024,1024"
Signed-off-by: Ilya Maximets
---
Documentation/intro/install/dpdk.rst | 40 +++++---
NEWS | 7 +-
lib/dpdk.c | 49 +++++++++-
utilities/ovs-dev.py | 2 +-
vswitchd/vswitch.xml | 132 ++++++---------------------
5 files changed, 108 insertions(+), 122 deletions(-)
diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst
index 344d2b3a6..2243fde53 100644
--- a/Documentation/intro/install/dpdk.rst
+++ b/Documentation/intro/install/dpdk.rst
@@ -235,32 +235,44 @@ listed below. Defaults will be provided for all values not explicitly set.
A value of ``try`` will imply that the ovs-vswitchd process should
continue running even if the EAL initialization fails.
-``dpdk-lcore-mask``
- Specifies the CPU cores on which dpdk lcore threads should be spawned and
- expects hex string (eg '0x123').
+``dpdk-options``
+ Specifies the string of EAL command line arguments for DPDK.
+ For example, ``other_config:dpdk-options="-l 0 --socket-mem 1024,1024"``.
+ Important arguments that could be passed there are:
-``dpdk-socket-mem``
- Comma separated list of memory to pre-allocate from hugepages on specific
- sockets. If not specified, 1024 MB will be set for each numa node by
- default.
+ - ``-c`` or ``-l``
-``dpdk-hugepage-dir``
- Directory where hugetlbfs is mounted
+ Specifies the CPU cores on which dpdk lcore threads should be spawned.
+ ``-c`` expects hex string (eg ``0x123``) while ``-l`` expects core list
+ (eg ``0-5,8``).
+
+ - ``--socket-mem``
+
+ Comma separated list of memory to pre-allocate from hugepages on specific
+ sockets.
+
+ - ``--huge-dir``
+
+ Directory where hugetlbfs is mounted
+
+ - See DPDK documentation for the full list:
+
+ https://doc.dpdk.org/guides-18.11/linux_gsg/linux_eal_parameters.html
``vhost-sock-dir``
Option to set the path to the vhost-user unix socket files.
-If allocating more than one GB hugepage, you can configure the
-amount of memory used from any given NUMA nodes. For example, to use 1GB from
-NUMA node 0 and 0GB for all other NUMA nodes, run::
+You can configure the amount of memory preallocated from any given NUMA nodes.
+For example, to preallocate ``1GB`` from NUMA node ``0`` and ``0GB`` for all
+other NUMA nodes, run::
$ ovs-vsctl --no-wait set Open_vSwitch . \
- other_config:dpdk-socket-mem="1024,0"
+ other_config:dpdk-options="<...> --socket-mem 1024,0"
or::
$ ovs-vsctl --no-wait set Open_vSwitch . \
- other_config:dpdk-socket-mem="1024"
+ other_config:dpdk-options="<...> --socket-mem 1024"
.. note::
Changing any of these options requires restarting the ovs-vswitchd
diff --git a/NEWS b/NEWS
index a64b9d94d..1c09e9d57 100644
--- a/NEWS
+++ b/NEWS
@@ -1,8 +1,11 @@
Post-v2.11.0
---------------------
- DPDK:
- * New option 'other_config:dpdk-socket-limit' to limit amount of
- hugepage memory that can be used by DPDK.
+ * New option 'other_config:dpdk-options' to pass all the
+ DPDK EAL argumants in a single string.
+ * Following config options deprecated:
+ 'dpdk-alloc-mem', 'dpdk-socket-mem', 'dpdk-socket-limit',
+ 'dpdk-lcore-mask', 'dpdk-hugepage-dir' and 'dpdk-extra'.
v2.11.0 - xx xxx xxxx
diff --git a/lib/dpdk.c b/lib/dpdk.c
index 53b74fba4..0c37f231d 100644
--- a/lib/dpdk.c
+++ b/lib/dpdk.c
@@ -91,6 +91,41 @@ args_contains(const struct svec *args, const char *value)
return false;
}
+static bool
+report_deprecated_configs(const struct smap *ovs_other_config, bool ignore)
+{
+ struct option {
+ const char *opt;
+ const char *replacement;
+ } options[] = {
+ { "dpdk-alloc-mem", "-m" },
+ { "dpdk-socket-mem", "--socket-mem" },
+ { "dpdk-socket-limit", "--socket-limit" },
+ { "dpdk-lcore-mask", "-c" },
+ { "dpdk-hugepage-dir", "--huge-dir" },
+ { "dpdk-extra", "" }
+ };
+ int i;
+ bool found = false;
+
+ for (i = 0; i < ARRAY_SIZE(options); i++) {
+ const char *value = smap_get(ovs_other_config, options[i].opt);
+
+ if (value) {
+ VLOG_WARN("Detected deprecated '%s' config. Use '%s %s'"
+ " in 'dpdk-options' instead.%s",
+ options[i].opt, options[i].replacement, value,
+ ignore ? " Value ignored." : "");
+ found = true;
+ }
+ }
+ if (found) {
+ VLOG_WARN("Deprecated options will be "
+ "silently ignored in the future.");
+ }
+ return found;
+}
+
static void
construct_dpdk_options(const struct smap *ovs_other_config, struct svec *args)
{
@@ -270,8 +305,10 @@ dpdk_init__(const struct smap *ovs_other_config)
char **argv = NULL;
int result;
bool auto_determine = true;
+ bool deprecated_found;
int err = 0;
cpu_set_t cpuset;
+ const char *dpdk_options;
struct svec args = SVEC_EMPTY_INITIALIZER;
log_stream = fopencookie(NULL, "w+", dpdk_log_func);
@@ -317,7 +354,15 @@ dpdk_init__(const struct smap *ovs_other_config)
per_port_memory ? "enabled" : "disabled");
svec_add(&args, ovs_get_program_name());
- construct_dpdk_args(ovs_other_config, &args);
+ dpdk_options = smap_get(ovs_other_config, "dpdk-options");
+
+ deprecated_found = report_deprecated_configs(ovs_other_config,
+ dpdk_options ? true : false);
+ if (dpdk_options) {
+ svec_parse_words(&args, dpdk_options);
+ } else if (deprecated_found) {
+ construct_dpdk_args(ovs_other_config, &args);
+ }
if (!args_contains(&args, "--legacy-mem")
&& !args_contains(&args, "--socket-limit")) {
@@ -357,7 +402,7 @@ dpdk_init__(const struct smap *ovs_other_config)
}
}
} else {
- /* User did not set dpdk-lcore-mask and unable to get current
+ /* User did not set lcore mask and unable to get current
* thread affintity - default to core #0 */
VLOG_ERR("Thread getaffinity error %d. Using core #0", err);
}
diff --git a/utilities/ovs-dev.py b/utilities/ovs-dev.py
index 248d22ab9..d10b40c87 100755
--- a/utilities/ovs-dev.py
+++ b/utilities/ovs-dev.py
@@ -283,7 +283,7 @@ def run():
_sh("ovs-vsctl --no-wait set Open_vSwitch %s "
"other_config:dpdk-init=true" % root_uuid)
_sh("ovs-vsctl --no-wait set Open_vSwitch %s other_config:"
- "dpdk-extra=\"%s\"" % (root_uuid, ' '.join(options.dpdk)))
+ "dpdk-options=\"%s\"" % (root_uuid, ' '.join(options.dpdk)))
else:
_sh("ovs-vsctl --no-wait set Open_vSwitch %s "
"other_config:dpdk-init=false" % root_uuid)
diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
index 1db4e8694..c30265d9e 100644
--- a/vswitchd/vswitch.xml
+++ b/vswitchd/vswitch.xml
@@ -234,56 +234,6 @@
-
-
- Set this value to true
or try
to enable
- runtime support for DPDK ports. The vswitch must have compile-time
- support for DPDK as well.
-
-
- A value of true
will cause the ovs-vswitchd process to
- abort if DPDK cannot be initialized. A value of try
- will allow the ovs-vswitchd process to continue running even if DPDK
- cannot be initialized.
-
-
- The default value is false
. Changing this value requires
- restarting the daemon
-
-
- If this value is false
at startup, any dpdk ports which
- are configured in the bridge will fail due to memory errors.
-
-
-
-
-
- Specifies the CPU cores where dpdk lcore threads should be spawned.
- The DPDK lcore threads are used for DPDK library tasks, such as
- library internal message processing, logging, etc. Value should be in
- the form of a hex string (so '0x123') similar to the 'taskset' mask
- input.
-
-
- The lowest order bit corresponds to the first CPU core. A set bit
- means the corresponding core is available and an lcore thread will be
- created and pinned to it. If the input does not cover all cores,
- those uncovered cores are considered not set.
-
-
- For performance reasons, it is best to set this to a single core on
- the system, rather than allow lcore threads to float.
-
-
- If not specified, the value will be determined by choosing the lowest
- CPU core from initial cpu affinity list. Otherwise, the value will be
- passed directly to the DPDK library.
-
-
-
Specifies CPU mask for setting the cpu affinity of PMD (Poll
@@ -303,78 +253,54 @@
-
+
- Specifies the amount of memory to preallocate from the hugepage pool,
- regardless of socket. It is recommended that dpdk-socket-mem is used
- instead.
+ Set this value to true
or try
to enable
+ runtime support for DPDK ports. The vswitch must have compile-time
+ support for DPDK as well.
-
-
-
- Specifies the amount of memory to preallocate from the hugepage pool,
- on a per-socket basis.
+ A value of true
will cause the ovs-vswitchd process to
+ abort if DPDK cannot be initialized. A value of try
+ will allow the ovs-vswitchd process to continue running even if DPDK
+ cannot be initialized.
- The specifier is a comma-separated string, in ascending order of CPU
- socket. E.g. On a four socket system 1024,0,2048 would set socket 0
- to preallocate 1024MB, socket 1 to preallocate 0MB, socket 2 to
- preallocate 2048MB and socket 3 (no value given) to preallocate 0MB.
+ The default value is false
. Changing this value requires
+ restarting the daemon
- If dpdk-socket-mem and dpdk-alloc-mem are not specified, dpdk-socket-mem
- will be used and the default value is 1024 for each numa node. If
- dpdk-socket-mem and dpdk-alloc-mem are specified at same time,
- dpdk-socket-mem will be used as default. Changing this value
- requires restarting the daemon.
+ If this value is false
at startup, any dpdk ports which
+ are configured in the bridge will fail due to memory errors.
-
- Limits the maximum amount of memory that can be used from the
- hugepage pool, on a per-socket basis.
+ Specifies EAL command line arguments for DPDK. For example,
+ "-l 1 --socket-mem 1024,1024 -n 4"
- The specifier is a comma-separated list of memory limits per socket.
- 0
will disable the limit for a particular socket.
-
-
- If not specified, OVS will configure limits equal to the amount of
- preallocated memory specified by or --socket-mem
in
- . If none of the above
- options specified or --legacy-mem
provided in
- , limits will not be
- applied.
Changing this value requires restarting the daemon.
-
-
-
-
- Specifies the path to the hugetlbfs mount point.
-
-
- If not specified, this will be guessed by the DPDK library (default
- is /dev/hugepages). Changing this value requires restarting the
- daemon.
-
-
-
-
- Specifies additional eal command line arguments for DPDK.
+ If -l
and -c
options are not specified,
+ the default value will be provided by choosing the lowest CPU core
+ from initial cpu affinity list.
+ For performance reasons, it is best to set lcore set/list to a single
+ core on the system, rather than allow lcore threads to float.
+ CPU cores proveded by -l
and -c
options
+ only used by DPDK internal threads. To manage affinity of PMD threads
+ use .
- The default is empty. Changing this value requires restarting the
- daemon
+ if --socket-mem
option provided without
+ --legacy-mem
and --socket-limit
, OVS will
+ provide --socket-limit
equal to the amount of
+ preallocated memory specified by --socket-mem
.