From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4BBF8A0588; Thu, 16 Apr 2020 17:12:54 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 156731DD82; Thu, 16 Apr 2020 17:12:54 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2059.outbound.protection.outlook.com [40.107.21.59]) by dpdk.org (Postfix) with ESMTP id 173D91DD2B for ; Thu, 16 Apr 2020 17:12:53 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bjTVWnOqUkxmRFALYqV/CuabdAb6sfJnbt0XO4g0EtNeaO9DmX/j1TMzlqwwD6xnIkIq0f8vP8VY/Iq2bgKWafCTHhqRikIMKMIshY39LQZCpCNwkS2Ur9oO4Ql23QPxmeHfDmq7iPv2eFwGDG2i3vYJlImLsEJBFjelKIOlsP3KZbPtLUx1dsNPk0XfH7uY1iliombuGCvgbuWWqi0MP93pEJGCevARgL0+444ykYVEvp9vP9VvNx6Mtoe3B7ND7mzAdUujSeqhwP2j4K7yUwvdMDYH8veCyUpMDT30UDdBQFO9GwND6qYaxSCFTEJkQBNB6BO8bOK8Gq+KoXQo4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QWhB6Su5Wso4vhIqyLZdohF399ovyCQP7XoJh86WlWg=; b=ZAA7HR6H/gBCC9UnityKBQ6QQW7Ta4P48uEnT6UD9PH9ucAQDRljOo0OMhTpMgXg3d+NMFah9rT/mTL16532VdsMgSih6vyYEv9JJ5xnDKRskRHBuYHR7MjwEu/2WMhiNwVde+0NoGHMMUKCsNwV5Mrk4Erfop2Da2WTHnU7qAH08qiqBReZuSqHKkiRnMouLbzH3+iwvPoUOru4OnNKo6Cy+y6dalh8hqErX4Pu+j7NLji+AZVujKgStyaLBjfaQc9zuk//cFPTzJzVgEdMYwt4yFbLoZMAd29m7j79TEm0I/EsHXQ4DhRCM8WBkjV3pJAlBAvgWlwYRix30uB6pQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QWhB6Su5Wso4vhIqyLZdohF399ovyCQP7XoJh86WlWg=; b=Akgu1w8dZhX83KlZ3GE4fgr1iSPnXvFs3+rGWYB3h2YFniI7rTrDMQM0kTMQzYdU3KG90BwyD/rKoOyTrV/gVMuTXmCu+dztnccRC99VEoHGzhqzGw3I2L4f0QUfPkBcHSc9DmL5EdCW/O/pwSZIe+9uFEjBQ2I+chkXLGCfRWM= Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18) by AM0PR05MB6353.eurprd05.prod.outlook.com (2603:10a6:208:13b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2900.26; Thu, 16 Apr 2020 15:12:51 +0000 Received: from AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::900:c0ac:78bd:18fc]) by AM0PR05MB6610.eurprd05.prod.outlook.com ([fe80::900:c0ac:78bd:18fc%6]) with mapi id 15.20.2900.028; Thu, 16 Apr 2020 15:12:51 +0000 From: Wisam Monther To: "dev@dpdk.org" , Jack Min , "jerinjacobk@gmail.com" CC: Thomas Monjalon Thread-Topic: [dpdk-dev] [PATCH 1/5] app/test-flow-perf: add flow performance skeleton Thread-Index: AQHWFAF+t8aWEV7suECInSaSely6wg== Date: Thu, 16 Apr 2020 15:12:50 +0000 Message-ID: References: <1584452772-31147-1-git-send-email-wisamm@mellanox.com> <20200409154257.11539-1-wisamm@mellanox.com> In-Reply-To: <20200409154257.11539-1-wisamm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=wisamm@mellanox.com; x-originating-ip: [188.161.229.157] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 080872db-e7a6-4a43-01db-08d7e218a157 x-ms-traffictypediagnostic: AM0PR05MB6353:|AM0PR05MB6353: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:639; x-forefront-prvs: 0375972289 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(10009020)(4636009)(366004)(39860400002)(136003)(346002)(376002)(396003)(110136005)(30864003)(81156014)(71200400001)(86362001)(5660300002)(186003)(4326008)(55016002)(8936002)(26005)(66556008)(76116006)(2906002)(316002)(66446008)(64756008)(66946007)(7696005)(6506007)(33656002)(66476007)(9686003)(478600001)(52536014); DIR:OUT; SFP:1101; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /Mr5gLkFqqQvYPPO08UIzm1yzYpbAWKLa6atzbiSEtHjcTpapsVVGXJkXYy4nrbrn/DP75tR2hDLeE3FcDRl1b+jFebucsb16DVoXsrY9Rr/YsbQYauXu3ch+pO1X5/cUaPdpKmOkLyAe/s1LXJG5LJX/cVgJX2Ps8aLN8qNk0uHM5I5vE5ApuNDlWg5ygB4g18sROb7gwLlRIuFHxKKozsL+OkSzMpNaXULEQRw6tNJ9RbLyj97OasnjyW2EwdMNLWsW4govy/aoLC0soMjZM7Rt2ttrl5YdtlTzaiPr5viqFML+1qDtzRpn+4Uwyna+0xyyL+Soz7WYP0lQYuK0HmBSCdNFqfiIbAj8f6+zaj476GbHfONm4nlqnJrDqJJ8sE4suCjDX/G8eVPJVak+6Y4Yu0mfvYrqDVsPq1CZxuI2GkXELONv36142lI2o+e x-ms-exchange-antispam-messagedata: ueKoTw80z/wRtAkVMd0squg6ZmpqOD/x9D8lhPjnASn82y9q4QmFQmhsQLHKVXpJp6ygDE2rrGGY43DFZja6bHUaiy/bKws8xFuiTqdJ0s26h/BOzlvqEDQjN/oBLjQBDIqAqpTcgDRAi3cAEhmKUg== Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 080872db-e7a6-4a43-01db-08d7e218a157 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Apr 2020 15:12:50.9101 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: KXnZpFPbbrzha/nANOB4CAs1Zqkye6fLqkZ6U5fKgcQHMmZYn8f7l1PdLQQlg7ndQBZkQEyVL24lsn+Fdv3T7w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB6353 Subject: Re: [dpdk-dev] [PATCH 1/5] app/test-flow-perf: add flow performance skeleton X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" >-----Original Message----- >From: dev On Behalf Of Wisam Jaddo >Sent: Thursday, April 9, 2020 6:43 PM >To: dev@dpdk.org; Jack Min ; >jerinjacobk@gmail.com >Cc: Thomas Monjalon >Subject: [dpdk-dev] [PATCH 1/5] app/test-flow-perf: add flow performance >skeleton > >Add flow performance application skeleton. > >Signed-off-by: Wisam Jaddo >--- > MAINTAINERS | 5 + > app/Makefile | 1 + > app/meson.build | 1 + > app/test-flow-perf/Makefile | 26 +++ > app/test-flow-perf/main.c | 246 +++++++++++++++++++++++++++ > app/test-flow-perf/meson.build | 11 ++ > app/test-flow-perf/user_parameters.h | 16 ++ > config/common_base | 5 + > doc/guides/tools/flow-perf.rst | 69 ++++++++ > doc/guides/tools/index.rst | 1 + > 10 files changed, 381 insertions(+) > create mode 100644 app/test-flow-perf/Makefile create mode 100644 >app/test-flow-perf/main.c create mode 100644 app/test-flow- >perf/meson.build create mode 100644 app/test-flow- >perf/user_parameters.h > create mode 100644 doc/guides/tools/flow-perf.rst > >diff --git a/MAINTAINERS b/MAINTAINERS >index 4800f6884a..a389ac127f 100644 >--- a/MAINTAINERS >+++ b/MAINTAINERS >@@ -1495,6 +1495,11 @@ T: git://dpdk.org/next/dpdk-next-net > F: app/test-pmd/ > F: doc/guides/testpmd_app_ug/ > >+Flow performance tool >+M: Wisam Jaddo >+F: app/test-flow-perf >+F: doc/guides/flow-perf.rst >+ > Compression performance test application > T: git://dpdk.org/next/dpdk-next-crypto > F: app/test-compress-perf/ >diff --git a/app/Makefile b/app/Makefile index db9d2d5380..694df67358 >100644 >--- a/app/Makefile >+++ b/app/Makefile >@@ -9,6 +9,7 @@ DIRS-$(CONFIG_RTE_PROC_INFO) +=3D proc-info > DIRS-$(CONFIG_RTE_LIBRTE_PDUMP) +=3D pdump > DIRS-$(CONFIG_RTE_LIBRTE_ACL) +=3D test-acl > DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) +=3D test-cmdline >+DIRS-$(CONFIG_RTE_TEST_FLOW_PERF) +=3D test-flow-perf > DIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) +=3D test-pipeline > DIRS-$(CONFIG_RTE_LIBRTE_IPSEC) +=3D test-sad > >diff --git a/app/meson.build b/app/meson.build index >71109cc422..20d77b0bd6 100644 >--- a/app/meson.build >+++ b/app/meson.build >@@ -14,6 +14,7 @@ apps =3D [ > 'test-compress-perf', > 'test-crypto-perf', > 'test-eventdev', >+ 'test-flow-perf', > 'test-pipeline', > 'test-pmd', > 'test-sad'] >diff --git a/app/test-flow-perf/Makefile b/app/test-flow-perf/Makefile new >file mode 100644 index 0000000000..45b1fb1464 >--- /dev/null >+++ b/app/test-flow-perf/Makefile >@@ -0,0 +1,26 @@ >+# SPDX-License-Identifier: BSD-3-Clause # Copyright 2020 Mellanox >+Technologies, Ltd >+ >+include $(RTE_SDK)/mk/rte.vars.mk >+ >+ifeq ($(CONFIG_RTE_TEST_FLOW_PERF),y) >+ >+# >+# library name >+# >+APP =3D flow_perf >+ >+CFLAGS +=3D -DALLOW_EXPERIMENTAL_API >+CFLAGS +=3D -O3 >+CFLAGS +=3D $(WERROR_FLAGS) >+CFLAGS +=3D -Wno-deprecated-declarations >+CFLAGS +=3D -Wno-unused-function >+ >+# >+# all source are stored in SRCS-y >+# >+SRCS-y +=3D main.c >+ >+include $(RTE_SDK)/mk/rte.app.mk >+ >+endif >diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c new fil= e >mode 100644 index 0000000000..156b9ef553 >--- /dev/null >+++ b/app/test-flow-perf/main.c >@@ -0,0 +1,246 @@ >+/* SPDX-License-Identifier: BSD-3-Clause >+ * >+ * This file contain the application main file >+ * This application provides the user the ability to test the >+ * insertion rate for specific rte_flow rule under stress state ~4M >+rule/ >+ * >+ * Then it will also provide packet per second measurement after >+installing >+ * all rules, the user may send traffic to test the PPS that match the >+rules >+ * after all rules are installed, to check performance or functionality >+after >+ * the stress. >+ * >+ * The flows insertion will go for all ports first, then it will print >+the >+ * results, after that the application will go into forwarding packets >+mode >+ * it will start receiving traffic if any and then forwarding it back >+and >+ * gives packet per second measurement. >+ * >+ * Copyright 2020 Mellanox Technologies, Ltd */ #include >+#include #include #include #include >+ #include #include #include >+ #include #include #include >+ #include #include #include >+#include #include #include #include >+ #include >+ >+ >+#include >+#include >+#include >+#include >+#include >+#include >+#include >+#include >+#include >+#include >+#include >+ >+#include "user_parameters.h" >+ >+static uint32_t nb_lcores; >+static struct rte_mempool *mbuf_mp; >+ >+static void usage(char *progname) >+{ >+ printf("\nusage: %s", progname); >+} >+ >+static void >+args_parse(int argc, char **argv) >+{ >+ char **argvopt; >+ int opt; >+ int opt_idx; >+ static struct option lgopts[] =3D { >+ /* Control */ >+ { "help", 0, 0, 0 }, >+ }; >+ >+ argvopt =3D argv; >+ >+ while ((opt =3D getopt_long(argc, argvopt, "", >+ lgopts, &opt_idx)) !=3D EOF) { >+ switch (opt) { >+ case 0: >+ if (!strcmp(lgopts[opt_idx].name, "help")) { >+ usage(argv[0]); >+ rte_exit(EXIT_SUCCESS, "Displayed help\n"); >+ } >+ break; >+ default: >+ usage(argv[0]); >+ printf("Invalid option: %s\n", argv[optind]); >+ rte_exit(EXIT_SUCCESS, "Invalid option\n"); >+ break; >+ } >+ } >+} >+ >+static void >+init_port(void) >+{ >+ int ret; >+ uint16_t i, j; >+ uint16_t port_id; >+ uint16_t nr_ports =3D rte_eth_dev_count_avail(); >+ struct rte_eth_hairpin_conf hairpin_conf =3D { >+ .peer_count =3D 1, >+ }; >+ struct rte_eth_conf port_conf =3D { >+ .rxmode =3D { >+ .split_hdr_size =3D 0, >+ }, >+ .rx_adv_conf =3D { >+ .rss_conf.rss_hf =3D >+ ETH_RSS_IP | >+ ETH_RSS_UDP | >+ ETH_RSS_TCP, >+ } >+ }; >+ struct rte_eth_txconf txq_conf; >+ struct rte_eth_rxconf rxq_conf; >+ struct rte_eth_dev_info dev_info; >+ >+ if (nr_ports =3D=3D 0) >+ rte_exit(EXIT_FAILURE, "Error: no port detected\n"); >+ mbuf_mp =3D rte_pktmbuf_pool_create("mbuf_pool", >+ TOTAL_MBUF_NUM, >MBUF_CACHE_SIZE, >+ 0, MBUF_SIZE, >+ rte_socket_id()); >+ >+ if (mbuf_mp =3D=3D NULL) >+ rte_exit(EXIT_FAILURE, "Error: can't init mbuf pool\n"); >+ >+ for (port_id =3D 0; port_id < nr_ports; port_id++) { >+ ret =3D rte_eth_dev_info_get(port_id, &dev_info); >+ if (ret !=3D 0) >+ rte_exit(EXIT_FAILURE, >+ "Error during getting device (port %u) >info: %s\n", >+ port_id, strerror(-ret)); >+ >+ port_conf.txmode.offloads &=3D dev_info.tx_offload_capa; >+ printf(":: initializing port: %d\n", port_id); >+ ret =3D rte_eth_dev_configure(port_id, RXQs + >HAIRPIN_QUEUES, >+ TXQs + HAIRPIN_QUEUES, &port_conf); >+ if (ret < 0) >+ rte_exit(EXIT_FAILURE, >+ ":: cannot configure device: err=3D%d, >port=3D%u\n", >+ ret, port_id); >+ >+ rxq_conf =3D dev_info.default_rxconf; >+ rxq_conf.offloads =3D port_conf.rxmode.offloads; >+ for (i =3D 0; i < RXQs; i++) { >+ ret =3D rte_eth_rx_queue_setup(port_id, i, NR_RXD, >+ > rte_eth_dev_socket_id(port_id), >+ &rxq_conf, >+ mbuf_mp); >+ if (ret < 0) >+ rte_exit(EXIT_FAILURE, >+ ":: Rx queue setup failed: >err=3D%d, port=3D%u\n", >+ ret, port_id); >+ } >+ >+ txq_conf =3D dev_info.default_txconf; >+ txq_conf.offloads =3D port_conf.txmode.offloads; >+ >+ for (i =3D 0; i < TXQs; i++) { >+ ret =3D rte_eth_tx_queue_setup(port_id, i, NR_TXD, >+ > rte_eth_dev_socket_id(port_id), >+ &txq_conf); >+ if (ret < 0) >+ rte_exit(EXIT_FAILURE, >+ ":: Tx queue setup failed: >err=3D%d, port=3D%u\n", >+ ret, port_id); >+ } >+ >+ ret =3D rte_eth_promiscuous_enable(port_id); >+ if (ret !=3D 0) >+ rte_exit(EXIT_FAILURE, >+ ":: promiscuous mode enable failed: >err=3D%s, port=3D%u\n", >+ rte_strerror(-ret), port_id); >+ >+ for (i =3D RXQs, j =3D 0; i < RXQs + HAIRPIN_QUEUES; i++, j++) { >+ hairpin_conf.peers[0].port =3D port_id; >+ hairpin_conf.peers[0].queue =3D j + TXQs; >+ ret =3D rte_eth_rx_hairpin_queue_setup(port_id, i, >+ NR_RXD, >&hairpin_conf); >+ if (ret !=3D 0) >+ rte_exit(EXIT_FAILURE, >+ ":: Hairpin rx queue setup failed: >err=3D%d, port=3D%u\n", >+ ret, port_id); >+ } >+ >+ for (i =3D TXQs, j =3D 0; i < TXQs + HAIRPIN_QUEUES; i++, j++) { >+ hairpin_conf.peers[0].port =3D port_id; >+ hairpin_conf.peers[0].queue =3D j + RXQs; >+ ret =3D rte_eth_tx_hairpin_queue_setup(port_id, i, >+ NR_TXD, >&hairpin_conf); >+ if (ret !=3D 0) >+ rte_exit(EXIT_FAILURE, >+ ":: Hairpin tx queue setup failed: >err=3D%d, port=3D%u\n", >+ ret, port_id); >+ } >+ >+ ret =3D rte_eth_dev_start(port_id); >+ if (ret < 0) >+ rte_exit(EXIT_FAILURE, >+ "rte_eth_dev_start:err=3D%d, port=3D%u\n", >+ ret, port_id); >+ >+ printf(":: initializing port: %d done\n", port_id); >+ } >+} >+ >+int >+main(int argc, char **argv) >+{ >+ uint16_t lcore_id; >+ uint16_t port; >+ uint16_t nr_ports; >+ int ret; >+ struct rte_flow_error error; >+ >+ nr_ports =3D rte_eth_dev_count_avail(); >+ ret =3D rte_eal_init(argc, argv); >+ if (ret < 0) >+ rte_exit(EXIT_FAILURE, "EAL init failed\n"); >+ >+ argc -=3D ret; >+ argv +=3D ret; >+ >+ if (argc > 1) >+ args_parse(argc, argv); >+ >+ init_port(); >+ >+ nb_lcores =3D rte_lcore_count(); >+ >+ if (nb_lcores <=3D 1) >+ rte_exit(EXIT_FAILURE, "This app needs at least two >cores\n"); >+ >+ RTE_LCORE_FOREACH_SLAVE(lcore_id) >+ >+ if (rte_eal_wait_lcore(lcore_id) < 0) >+ break; >+ >+ for (port =3D 0; port < nr_ports; port++) { >+ rte_flow_flush(port, &error); >+ rte_eth_dev_stop(port); >+ rte_eth_dev_close(port); >+ } >+ return 0; >+} >diff --git a/app/test-flow-perf/meson.build b/app/test-flow- >perf/meson.build new file mode 100644 index 0000000000..ec9bb3b3aa >--- /dev/null >+++ b/app/test-flow-perf/meson.build >@@ -0,0 +1,11 @@ >+# SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2020 Mellanox >+Technologies, Ltd >+ >+# meson file, for building this example as part of a main DPDK build. >+# >+# To build this example as a standalone application with an >+already-installed # DPDK instance, use 'make' >+ >+sources =3D files( >+ 'main.c', >+) >diff --git a/app/test-flow-perf/user_parameters.h b/app/test-flow- >perf/user_parameters.h >new file mode 100644 >index 0000000000..56ec7f47b5 >--- /dev/null >+++ b/app/test-flow-perf/user_parameters.h >@@ -0,0 +1,16 @@ >+/* SPDX-License-Identifier: BSD-3-Claus >+ * >+ * This file will hold the user parameters values >+ * >+ * Copyright 2020 Mellanox Technologies, Ltd */ >+ >+/** Configuration **/ >+#define RXQs 4 >+#define TXQs 4 >+#define HAIRPIN_QUEUES 4 >+#define TOTAL_MBUF_NUM 32000 >+#define MBUF_SIZE 2048 >+#define MBUF_CACHE_SIZE 512 >+#define NR_RXD 256 >+#define NR_TXD 256 >diff --git a/config/common_base b/config/common_base index >c31175f9d6..79455bf94a 100644 >--- a/config/common_base >+++ b/config/common_base >@@ -1111,3 +1111,8 @@ CONFIG_RTE_APP_CRYPTO_PERF=3Dy # Compile the >eventdev application # CONFIG_RTE_APP_EVENTDEV=3Dy >+ >+# >+# Compile the rte flow perf application # CONFIG_RTE_TEST_FLOW_PERF=3Dy >diff --git a/doc/guides/tools/flow-perf.rst b/doc/guides/tools/flow-perf.r= st >new file mode 100644 index 0000000000..30ce1b6cc0 >--- /dev/null >+++ b/doc/guides/tools/flow-perf.rst >@@ -0,0 +1,69 @@ >+.. SPDX-License-Identifier: BSD-3-Clause >+ Copyright 2020 Mellanox Technologies, Ltd >+ >+RTE Flow performance tool >+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D >+ >+Application for rte_flow performance testing. >+ >+ >+Compiling the Application >+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D >+The ``test-flow-perf`` application is compiled as part of the main >+compilation of the DPDK libraries and tools. >+ >+Refer to the DPDK Getting Started Guides for details. >+The basic compilation steps are: >+ >+#. Set the required environmental variables and go to the source director= y: >+ >+ .. code-block:: console >+ >+ export RTE_SDK=3D/path/to/rte_sdk >+ cd $RTE_SDK >+ >+#. Set the compilation target. For example: >+ >+ .. code-block:: console >+ >+ export RTE_TARGET=3Dx86_64-native-linux-gcc >+ >+#. Build the application: >+ >+ .. code-block:: console >+ >+ make install T=3D$RTE_TARGET >+ >+#. The compiled application will be located at: >+ >+ .. code-block:: console >+ >+ $RTE_SDK/$RTE_TARGET/app/flow-perf >+ >+ >+Running the Application >+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >+ >+EAL Command-line Options >+------------------------ >+ >+Please refer to :doc:`EAL parameters (Linux) >+<../linux_gsg/linux_eal_parameters>` >+or :doc:`EAL parameters (FreeBSD) >+<../freebsd_gsg/freebsd_eal_parameters>` for a list of available EAL >command-line options. >+ >+ >+Flow performance Options >+------------------------ >+ >+The following are the command-line options for the flow performance >application. >+They must be separated from the EAL options, shown in the previous >+section, with a ``--`` separator: >+ >+.. code-block:: console >+ >+ sudo ./test-flow-perf -n 4 -w 08:00.0,dv_flow_en=3D1 -- >+ >+The command line options are: >+ >+* ``--help`` >+ Display a help message and quit. >diff --git a/doc/guides/tools/index.rst b/doc/guides/tools/index.rst index >782b30864e..7279daebc6 100644 >--- a/doc/guides/tools/index.rst >+++ b/doc/guides/tools/index.rst >@@ -16,3 +16,4 @@ DPDK Tools User Guides > cryptoperf > comp_perf > testeventdev >+ flow-perf >-- >2.17.1 Any comments guys? BRs, Wisam Jaddo