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 94A20A0A0C; Thu, 1 Jul 2021 10:31:53 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 82ECF4067C; Thu, 1 Jul 2021 10:31:53 +0200 (CEST) Received: from mail-io1-f42.google.com (mail-io1-f42.google.com [209.85.166.42]) by mails.dpdk.org (Postfix) with ESMTP id AB45340040 for ; Thu, 1 Jul 2021 10:31:52 +0200 (CEST) Received: by mail-io1-f42.google.com with SMTP id d9so6560261ioo.2 for ; Thu, 01 Jul 2021 01:31:52 -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=1sZ4sca5W98Pw4MiE2v//5yPsPHZ2KR4yXe/WLJXiTQ=; b=GKiZbQ89f9TubaxssUkmDA1wLu7bpq3ogDFzL0VvKFK6llfuDfdlKJU/CHuTDXbUC4 YKKmMabJ3/sNJI6DIBc+vi/GVsNchOy2IMPpcXNPlyTHvBC+aEBkG3Pa3bZ+Kj4UU4Pk zP+ukVyGAezvPPip4kb2HFmVAaMzTbqxrOQ5NsKvkqn37Ey5qRmA5GvH0xcNyCyZBN+h n3mHjKVfu66ceIQhBSoB7VJ7zhlhBYLJDbEYPL0wkhZ/Fdu0kt/t2HGxlu+xjwWFAFJ6 lyn0A+KRm/JJ4dFLrWK//aMPwC6NTj0DpS/NIaEDpxLsRTvuGUlECZgbc3wBtn7z9YWm r7KA== 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=1sZ4sca5W98Pw4MiE2v//5yPsPHZ2KR4yXe/WLJXiTQ=; b=GgCoAwNS5X+9zGaBMkd6DRyU8P1y9BTpUY43Fn9xLmFA9hcm3j93gXoVH6TpDxTc7Q rqg04i/zkyyOoOIFxDmuD2yknMUba6tpkbX2l2Y7pt6ahUIduAnwIcPVX8s85yxSHrsc bJ6sYWAsHA99QDW2dAKKXTD5blERY6oK2qei2Yuzy7CO6l9WEU1Dxn6NcI/NgxzKi9uR LEuiWFuIHUk7RIYUTVZibK+EkCvLeWk+8lJb+HrP+rmvbvyBTSc39ac8aZMaZdnNv+on DBM5x97e3UCYEOTi/eFH3MkPvpT6A9YVjYr09gbb+grUx64pUGzdjpRLZr5vEQ9yI952 7iQw== X-Gm-Message-State: AOAM5325aK7Vr7LJK+jOm7QG44+y1j8ma2VY9Kax8cmjvWRMyEpblQDe orORuMJCaC38xmD1jA32yjRF8TaY9L/DP5pSUE4= X-Google-Smtp-Source: ABdhPJzRfPpyGjLiI4frzmKW1VMcPQ1UnkiCPWa9DSZebNgeSOXl7+NPwaZwRAJ6goQ+akcwB1HVzlHmC3LRKpZh+1k= X-Received: by 2002:a02:272d:: with SMTP id g45mr12597814jaa.104.1625128311961; Thu, 01 Jul 2021 01:31:51 -0700 (PDT) MIME-Version: 1.0 References: <20210615103149.4194-1-pbhagavatula@marvell.com> <20210701060800.1096-1-pbhagavatula@marvell.com> In-Reply-To: <20210701060800.1096-1-pbhagavatula@marvell.com> From: Jerin Jacob Date: Thu, 1 Jul 2021 14:01:25 +0530 Message-ID: To: Pavan Nikhilesh Cc: Jerin Jacob , dpdk-dev Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [PATCH v2] 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 Thu, Jul 1, 2021 at 11:38 AM 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 Acked-by: Jerin Jacob Series applied to dpdk-next-net-eventdev/for-main. Thanks > --- > v2 Changes: > - Fix compilation. > - Rebase on next-event. > > app/test-eventdev/evt_common.h | 1 + > app/test-eventdev/evt_options.c | 10 +++++ > 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, 59 insertions(+), 15 deletions(-) > > diff --git a/app/test-eventdev/evt_common.h b/app/test-eventdev/evt_common.h > index 0e228258e..28afb114b 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 061b63e12..b0bcbc6c9 100644 > --- a/app/test-eventdev/evt_options.c > +++ b/app/test-eventdev/evt_options.c > @@ -297,6 +297,13 @@ evt_parse_eth_queues(struct evt_options *opt, const char *arg) > return ret; > } > > +static int > +evt_parse_per_port_pool(struct evt_options *opt, const char *arg __rte_unused) > +{ > + opt->per_port_pool = 1; > + return 0; > +} > + > static void > usage(char *program) > { > @@ -333,6 +340,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 +416,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 +455,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 1cea2a3e1..6436200b4 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 d5ef90500..6ee530d4c 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 800a90616..d69e2f8a3 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 f252dc2c1..b81340471 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 >