From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 702ECA0A0F; Wed, 30 Jun 2021 17:37:42 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 064D240141; Wed, 30 Jun 2021 17:37:42 +0200 (CEST) Received: from mail-il1-f172.google.com (mail-il1-f172.google.com [209.85.166.172]) by mails.dpdk.org (Postfix) with ESMTP id 6445540040 for ; Wed, 30 Jun 2021 17:37:40 +0200 (CEST) Received: by mail-il1-f172.google.com with SMTP id s11so1989746ilt.8 for ; Wed, 30 Jun 2021 08:37:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=12+GNYKYCxnmR0ZjQdxSUabBCbNObr99nlkTMJDpCTE=; b=X0nMChxMGcdai1ibTRtUrbIY+bBOjwusBxsBHglDzifydnTlGbUIqlDhfl9hdirlo7 gTZMqhBwAoiqv9Tf5dU8k4kg5MW7rAs8/XzkSwOZR519m20H1O9XPxGf0KtNdhGhwgxb ZGeVklu9Z2wxIMwPZJniNPfZzT8RoUknbs5brsORFGt26AOtA68tLeX8xlAaykSMYduO +XXzzRz8GXyEpR4CSezZGVxRdnI2/624sCngS8eSbP2yus0JPrU1eRM1TV1nHsgiUlIl 7cYqXk/YoT5LPX+4O4wly4MAlgnak0raJpazFtDfpab3gvLvt6BjidSrtQfMJ9DqFgD2 Zbnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=12+GNYKYCxnmR0ZjQdxSUabBCbNObr99nlkTMJDpCTE=; b=IapNPid6EI+jS3enTnAi+3qCPN9a255OdWG0Gfd19allQZf1JZDFZiEG/9eoxUwoZh scWUr5eXzhjdUNhy7NhjU3llokjcY00NHwdmsk0yVtKNV12uWDEIpzv81otpImMpr6cW eD/2ZnoUeTf3f/MPviO3aE0al3bOq5DR36b4z2ob8wbbx451ZA8K5FljdMqBCr7OWAHR gqZ3L+jZ1ewjl/2oTz7drz/Cyzurt0aeBTfTeYCft/MOcarNqKFhBTDL8BKmH9aGZP0Z +XATpf8/UgopY+pUiU7D5MzlbyL4UVM3LU/gyNeJaeR1ineED1oFo5lAH7uQfxtIFj5y BKRQ== X-Gm-Message-State: AOAM532jvbtDNxxI1+s4dpsVqgM+mGi913cSnjFYmLQv0yTGQ3pw/tcl 7FiuLhfdbhm4857nLyLtZQ3iq0tQJ4kxxE2v31E= X-Google-Smtp-Source: ABdhPJxqppLq4ACByFWZjaVRkBZgfgoIn9TgXdZo05LIVAFM1QCyHJjhZtOvcWVeVC/9ZHxlGTeq2EIEX0RdJ4iw/78= X-Received: by 2002:a05:6e02:1341:: with SMTP id k1mr20069320ilr.162.1625067459738; Wed, 30 Jun 2021 08:37:39 -0700 (PDT) MIME-Version: 1.0 References: <20210615103149.4194-1-pbhagavatula@marvell.com> In-Reply-To: <20210615103149.4194-1-pbhagavatula@marvell.com> From: Jerin Jacob Date: Wed, 30 Jun 2021 21:07:13 +0530 Message-ID: To: Pavan Nikhilesh Cc: Jerin Jacob , dpdk-dev Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [PATCH] app/eventdev: add option to enable per port pool X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" On Tue, Jun 15, 2021 at 4:02 PM wrote: > > From: Pavan Nikhilesh > > Add option to configure unique mempool for each ethernet device > port. Can be used with `pipeline_atq` and `pipeline_queue` tests. > > Signed-off-by: Pavan Nikhilesh > --- > app/test-eventdev/evt_common.h | 1 + > app/test-eventdev/evt_options.c | 9 ++++ > app/test-eventdev/evt_options.h | 1 + > app/test-eventdev/test_pipeline_common.c | 52 +++++++++++++++++------- > app/test-eventdev/test_pipeline_common.h | 2 +- > doc/guides/tools/testeventdev.rst | 8 ++++ > 6 files changed, 58 insertions(+), 15 deletions(-) > > diff --git a/app/test-eventdev/evt_common.h b/app/test-eventdev/evt_common.h > index 0e228258e7..28afb114b3 100644 > --- a/app/test-eventdev/evt_common.h > +++ b/app/test-eventdev/evt_common.h > @@ -55,6 +55,7 @@ struct evt_options { > uint8_t timdev_cnt; > uint8_t nb_timer_adptrs; > uint8_t timdev_use_burst; > + uint8_t per_port_pool; > uint8_t sched_type_list[EVT_MAX_STAGES]; > uint16_t mbuf_sz; > uint16_t wkr_deq_dep; > diff --git a/app/test-eventdev/evt_options.c b/app/test-eventdev/evt_options.c > index 061b63e12e..bfa3840dbc 100644 > --- a/app/test-eventdev/evt_options.c > +++ b/app/test-eventdev/evt_options.c > @@ -297,6 +297,12 @@ evt_parse_eth_queues(struct evt_options *opt, const char *arg) > return ret; > } > > +evt_parse_per_port_pool(struct evt_options *opt, const char *arg __rte_unused) Syntax issue with the old compiler on return value. http://mails.dpdk.org/archives/test-report/2021-June/198858.html > +{ > + opt->per_port_pool = 1; > + return 0; > +} > + > static void > usage(char *program) > { > @@ -333,6 +339,7 @@ usage(char *program) > "\t--enable_vector : enable event vectorization.\n" > "\t--vector_size : Max vector size.\n" > "\t--vector_tmo_ns : Max vector timeout in nanoseconds\n" > + "\t--per_port_pool : Configure unique pool per ethdev port\n" > ); > printf("available tests:\n"); > evt_test_dump_names(); > @@ -408,6 +415,7 @@ static struct option lgopts[] = { > { EVT_ENA_VECTOR, 0, 0, 0 }, > { EVT_VECTOR_SZ, 1, 0, 0 }, > { EVT_VECTOR_TMO, 1, 0, 0 }, > + { EVT_PER_PORT_POOL, 0, 0, 0 }, > { EVT_HELP, 0, 0, 0 }, > { NULL, 0, 0, 0 } > }; > @@ -446,6 +454,7 @@ evt_opts_parse_long(int opt_idx, struct evt_options *opt) > { EVT_ENA_VECTOR, evt_parse_ena_vector}, > { EVT_VECTOR_SZ, evt_parse_vector_size}, > { EVT_VECTOR_TMO, evt_parse_vector_tmo_ns}, > + { EVT_PER_PORT_POOL, evt_parse_per_port_pool}, > }; > > for (i = 0; i < RTE_DIM(parsermap); i++) { > diff --git a/app/test-eventdev/evt_options.h b/app/test-eventdev/evt_options.h > index 1cea2a3e11..6436200b40 100644 > --- a/app/test-eventdev/evt_options.h > +++ b/app/test-eventdev/evt_options.h > @@ -46,6 +46,7 @@ > #define EVT_ENA_VECTOR ("enable_vector") > #define EVT_VECTOR_SZ ("vector_size") > #define EVT_VECTOR_TMO ("vector_tmo_ns") > +#define EVT_PER_PORT_POOL ("per_port_pool") > #define EVT_HELP ("help") > > void evt_options_default(struct evt_options *opt); > diff --git a/app/test-eventdev/test_pipeline_common.c b/app/test-eventdev/test_pipeline_common.c > index d5ef90500f..6ee530d4cd 100644 > --- a/app/test-eventdev/test_pipeline_common.c > +++ b/app/test-eventdev/test_pipeline_common.c > @@ -259,9 +259,10 @@ pipeline_ethdev_setup(struct evt_test *test, struct evt_options *opt) > } > > for (j = 0; j < opt->eth_queues; j++) { > - if (rte_eth_rx_queue_setup(i, j, NB_RX_DESC, > - rte_socket_id(), &rx_conf, > - t->pool) < 0) { > + if (rte_eth_rx_queue_setup( > + i, j, NB_RX_DESC, rte_socket_id(), &rx_conf, > + opt->per_port_pool ? t->pool[i] : > + t->pool[0]) < 0) { > evt_err("Failed to setup eth port [%d] rx_queue: %d.", > i, 0); > return -EINVAL; > @@ -569,18 +570,35 @@ pipeline_mempool_setup(struct evt_test *test, struct evt_options *opt) > if (data_size > opt->mbuf_sz) > opt->mbuf_sz = data_size; > } > + if (opt->per_port_pool) { > + char name[RTE_MEMPOOL_NAMESIZE]; > + > + snprintf(name, RTE_MEMPOOL_NAMESIZE, "%s-%d", > + test->name, i); > + t->pool[i] = rte_pktmbuf_pool_create( > + name, /* mempool name */ > + opt->pool_sz, /* number of elements*/ > + 0, /* cache size*/ > + 0, opt->mbuf_sz, opt->socket_id); /* flags */ > + > + if (t->pool[i] == NULL) { > + evt_err("failed to create mempool %s", name); > + return -ENOMEM; > + } > + } > } > > - t->pool = rte_pktmbuf_pool_create(test->name, /* mempool name */ > + if (!opt->per_port_pool) { > + t->pool[0] = rte_pktmbuf_pool_create( > + test->name, /* mempool name */ > opt->pool_sz, /* number of elements*/ > - 512, /* cache size*/ > - 0, > - opt->mbuf_sz, > - opt->socket_id); /* flags */ > - > - if (t->pool == NULL) { > - evt_err("failed to create mempool"); > - return -ENOMEM; > + 0, /* cache size*/ > + 0, opt->mbuf_sz, opt->socket_id); /* flags */ > + > + if (t->pool[0] == NULL) { > + evt_err("failed to create mempool"); > + return -ENOMEM; > + } > } > > return 0; > @@ -589,10 +607,16 @@ pipeline_mempool_setup(struct evt_test *test, struct evt_options *opt) > void > pipeline_mempool_destroy(struct evt_test *test, struct evt_options *opt) > { > - RTE_SET_USED(opt); > struct test_pipeline *t = evt_test_priv(test); > + int i; > > - rte_mempool_free(t->pool); > + RTE_SET_USED(opt); > + if (opt->per_port_pool) { > + RTE_ETH_FOREACH_DEV(i) > + rte_mempool_free(t->pool[i]); > + } else { > + rte_mempool_free(t->pool[0]); > + } > } > > int > diff --git a/app/test-eventdev/test_pipeline_common.h b/app/test-eventdev/test_pipeline_common.h > index 800a90616f..d69e2f8a3e 100644 > --- a/app/test-eventdev/test_pipeline_common.h > +++ b/app/test-eventdev/test_pipeline_common.h > @@ -47,7 +47,7 @@ struct test_pipeline { > enum evt_test_result result; > uint32_t nb_flows; > uint64_t outstand_pkts; > - struct rte_mempool *pool; > + struct rte_mempool *pool[RTE_MAX_ETHPORTS]; > struct worker_data worker[EVT_MAX_PORTS]; > struct evt_options *opt; > uint8_t sched_type_list[EVT_MAX_STAGES] __rte_cache_aligned; > diff --git a/doc/guides/tools/testeventdev.rst b/doc/guides/tools/testeventdev.rst > index f252dc2c19..b81340471e 100644 > --- a/doc/guides/tools/testeventdev.rst > +++ b/doc/guides/tools/testeventdev.rst > @@ -178,6 +178,12 @@ The following are the application command-line options: > Vector timeout nanoseconds to be configured for the Rx adapter. > Only applicable for `pipeline_atq` and `pipeline_queue` tests. > > +* ``--per_port_pool`` > + > + Configure unique mempool per ethernet device, the size of each pool > + is equal to `pool_sz`. > + Only applicable for pipeline_atq` and `pipeline_queue` tests. > + > > Eventdev Tests > -------------- > @@ -631,6 +637,7 @@ Supported application command line options are following:: > --enable_vector > --vector_size > --vector_tmo_ns > + --per_port_pool > > > .. Note:: > @@ -734,6 +741,7 @@ Supported application command line options are following:: > --enable_vector > --vector_size > --vector_tmo_ns > + --per_port_pool > > > .. Note:: > -- > 2.17.1 >