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 32A41A0C43; Mon, 18 Oct 2021 14:53:24 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B51B640142; Mon, 18 Oct 2021 14:53:23 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 4E51140141 for ; Mon, 18 Oct 2021 14:53:22 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 19ICYIiA024744; Mon, 18 Oct 2021 05:53:21 -0700 Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2048.outbound.protection.outlook.com [104.47.66.48]) by mx0a-0016f401.pphosted.com with ESMTP id 3bs1buhwg3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 18 Oct 2021 05:53:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LxGWEdKJjjwcx+sy33cTx7rY8/luk9FVxFQSE8LyZuUBzktPzfxhCFYFxiFn0Y5tC12+D+JRdJlsyVCgd0HcOkMNuPZZgWXprzLi9/BlQyCmGRcFbVKRVHatglAvu8CpJsafIOwpWQ9JsvVIR1QFIWYcAzTvoRXspgKxbB8CY/jXh3Mmyj/C2b4vJ/q0ktJWGsHsYu0aZnZfKAn1bkxFYcZ6U5Qbwczd/+LIiwqR7AqciaN7AosIY2zscWiKg3hY4bQYCxtDdLaoCewZPKihdccY2a6fHAm3zLb9RLv2jUBbYtxCE5x+8OzkXtxIyulaCaBpn3wiINHlml+vrUmaHA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gxrFOCZjCiGYpalYfp4z5vM5qTMbjDM+rI3SKwq7gcA=; b=cGccqb10PTlszPygjihDel5lHzbs+gzZ/Hk5FKKap4EAL4vQOQLQKuBFSFXybeZFfUFH8/k4sfSWJy3cjouRqZ5WMsbctajAkuTosNj2il3dlrohifqsKZDrZ2w+129ED/86pTAPg2T+BISGPS0lergtsLZqOAuGyt2kRLOz3zcqOviMFd6/UHhklP4Qn+/Z8SI/9GXYFgfp3xvnjnODv896cVr7G9Yyj0kUzsNFzM1Pn/Jh4HsAR7n2COszR+DiMGYv70DZCgDYsFOa8dX6a2So64SOGgZOnjYHMI2J9GCJ+rqFTcDkp6mIT7k6RfT02+O8a4Y09GJ3ywZ1mn9lEg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gxrFOCZjCiGYpalYfp4z5vM5qTMbjDM+rI3SKwq7gcA=; b=c6uOl11DM/kXxVKHyYwBoILhPWFH35MUO7AzvmPReqg3UOtcWsB0EcX2GUZp1InBlDcxUEVSq1NrvXUwhMD7MPk5lDKNkSnC5UHo1hvhsr0vaM8bXyrS7NGw8/DTeuhjAEXqz4SGjyRBblIzCwEgwlvh9689RJzW4F8i7BR6Wmc= Received: from PH0PR18MB4086.namprd18.prod.outlook.com (2603:10b6:510:3::9) by PH0PR18MB3813.namprd18.prod.outlook.com (2603:10b6:510:23::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.14; Mon, 18 Oct 2021 12:53:18 +0000 Received: from PH0PR18MB4086.namprd18.prod.outlook.com ([fe80::6012:f5c4:8b1b:5289]) by PH0PR18MB4086.namprd18.prod.outlook.com ([fe80::6012:f5c4:8b1b:5289%8]) with mapi id 15.20.4608.018; Mon, 18 Oct 2021 12:53:17 +0000 From: Pavan Nikhilesh Bhagavatula To: Rashmi Shetty , "dev@dpdk.org" CC: Jerin Jacob Kollanukkaran , "harry.van.haaren@intel.com" , "pravin.pathak@intel.com" , "mike.ximing.chen@intel.com" Thread-Topic: [EXT] [dpdk-dev] [PATCH v3] app/test-eventdev: add burst enqueue support Thread-Index: AQHXwdf+c2+t0CXbLkyhDkYRk/AWgKvYuinA Date: Mon, 18 Oct 2021 12:53:17 +0000 Message-ID: In-Reply-To: <20211015151853.225420-1-rashmi.shetty@intel.com> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e27d014a-8a96-40d6-5f3a-08d9923641cb x-ms-traffictypediagnostic: PH0PR18MB3813: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:213; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: eAhBsxjitZ/QBcZCo7GoLWveuO/Gpn5bo74krZSgKWWKbbU2O0P2YUR418Sa5jGcB6e3ADf1i3ukY5cl+qGWDN+wvnoFp897971seufy8Bt/PrDvwF8NUeO7Xxq8EYbCACGhxawwiGYVmePdKy6NFrg2Z1Pe5+vrPs3bWYLa5uWcsa6gBDeh07RJYUluTgGeVCIkIOj+bs+8daX8MJlXZEuwFZo15CUwBpXoosdnvUo+gjd56jRvjyQn2SKCpMEwZDHD20lIvCv5Mylp969Lood5sh456PIsUGPkBC9nNQpHsOmqO05x03akwdy6JXHKxWlVXvWqBbH+u7DOIOEQtkM9vfKVJIjdqVXkLlM/GzNcDvBYzu2W6A72XsWnYnnzSioQROLu29Q9ncG3ujp9Flm+bKIjBbJi8F7PxaCqRSFsk6cnlJ9I9qgg+Kh4kXCnGWm/A/+yJzAppV8YPYnh/XwY3urmx+vkK6lE8pT/FL6aAUuGGgSv5jztImvNoNiaRfdhe+juyXH/BqHRYuOk1sWR+GLhYEYzuVZfgC6Qw2m45gcd7ZRdWOiD/JFGAPyZyqazkMDUOjMdFSsoYH7FS0aKeM5Ikkg++RZS465VoElp2+4W0IA962aBdPaO5XU26SHHH+u9FKC1clTSaPFSzNG9zYWf8gqPBTwuF6zdsflu3ku0E837earAQgpe9f3kE4T0iB2BcDPYRMOfEPD/hA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR18MB4086.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(5660300002)(38100700002)(66946007)(86362001)(7696005)(8676002)(76116006)(122000001)(9686003)(110136005)(54906003)(8936002)(55016002)(186003)(508600001)(38070700005)(26005)(316002)(66476007)(66556008)(66446008)(4326008)(6506007)(30864003)(71200400001)(83380400001)(2906002)(64756008)(33656002)(52536014); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?9RGnhTQq6PfGi3ye6rrbNf3L1/nql3C6hpN+pLc+H5EsPtDqxH3yI3EcfVpE?= =?us-ascii?Q?UJe/8xkYPwfYUNczSTQggUWvvoCGTtTVIjd2BnnYzTR0DI44yz7DyDo4tlnE?= =?us-ascii?Q?+Eat5MsChFwLflEEXlLU38ZOtMw6tBeeTa5xZaSeA6g+r+fIuj/I6Rgyp/z/?= =?us-ascii?Q?H4nHXYgMHVxM5kaGcJl2X2RlTSP8Nz1atLphor98YckjyNxWu3x80HNYvk4g?= =?us-ascii?Q?AIo5Qk/YFXLYcnzjagEnSmVB8xFsWAGaLSP3+nFrrA2C5tUOaULJ+ZTv6elU?= =?us-ascii?Q?wMxa7vrW3dGYWHFP//O5SeCxxpb5yJsRXSJJQii1UfQIo3sQHIxz+NSNuZat?= =?us-ascii?Q?1zZGIsT5Sgl0457AM6nGyBxIQlJlEz9mBx2VHIzBwvcenpeQz67guRzSbVsT?= =?us-ascii?Q?Z4FADXXlT2QJQos+y58A6ikP3mwjEPLk9Py2bGxeZSjytEy121WehKugxKlq?= =?us-ascii?Q?QnzzCG+xafx7pSxJo/nUO6ZFjknvmLgfU8hayYzi2rx59N+qplnuiiGOkJTc?= =?us-ascii?Q?lSiLbPVDithAdtKQ2SjP/I6SjQEXPOIxYRiuDumSp6Wni2UlIoFatPVr3jXx?= =?us-ascii?Q?OpK4J6Zrau6d7d0YDYNAAarV8zuolc6Q4dIJUAiIL5wNkkM76vJfqVQ8Ez4R?= =?us-ascii?Q?uNP6IaCfdfydONwcatwBaycMsCJASeNx2CpHFJyVw0UlNv1QC2NmdGnN+fOc?= =?us-ascii?Q?paTN2bS/foUNBst6pidmxdyWw2tQkqrsFrTZAXcAMlwCBOF11wZlfD2+BbJP?= =?us-ascii?Q?urbVaKd/dJXeTUbsfgjcAZKXizRhZW2ah2YKvfzOJBtyRoJ50kzs2Z/d33SW?= =?us-ascii?Q?grGfjb4Qvy8wk0qePAlGaRznvgQ3C74vk15Vf5LbaFtW1TgdplLQqo8zqgKW?= =?us-ascii?Q?mdFR3i0yg/hn5KNwDmrzO4tV3ttt2zIzYm8T7+rvoY6qak05Prm+2oeppYjp?= =?us-ascii?Q?aIgZl3iRuGcD0LIG9bqN4npVal7zmky8XQvZi4V0fCPa/LBd0JN60DpObMIZ?= =?us-ascii?Q?JVBNH6ovdA4Y2daTFX4svMzwDX+4WJIsVkV76PKswIY3SDs6DrrFAjDwHVpl?= =?us-ascii?Q?NsRIApxgHU+1nvB4yi8wtUoJYivCix+LllW7V7lokvsupDSLMRjREd0/OSx1?= =?us-ascii?Q?HReLzIzm/tpPRxWxc6+3HpCMF3AfQyg2g+AukSzw9prIk52AQiiLILQZ59M9?= =?us-ascii?Q?4GhWmOrgpH7h26V6Z5ovAV7AYcyB9MJfHA6dcvvbDAbi2Xy9djXb9LwzjNgN?= =?us-ascii?Q?QbPiiQ334o3Z5nCKelucKnCZtuy7SV4FYIlRfzZJngiwiT7kEZeZkO92k2ED?= =?us-ascii?Q?4kV0NMsKW3jLgYpNXKtuGZkO?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR18MB4086.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e27d014a-8a96-40d6-5f3a-08d9923641cb X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2021 12:53:17.7659 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vvlAu0rdJclblWgy7wUDVSK9dGJmE3Keox8aZaH5claJBcAs7AtHTo1U+LEIfrbHGc7yhMlHwL1TyA2falxWoztGD0mh5pmdoVmV6v+Dgaw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR18MB3813 X-Proofpoint-GUID: E16FQj_OZiPMEW9cMR4oFWNaEnq6FAfU X-Proofpoint-ORIG-GUID: E16FQj_OZiPMEW9cMR4oFWNaEnq6FAfU X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.425,FMLib:17.0.607.475 definitions=2021-10-18_05,2021-10-14_02,2020-04-07_01 Subject: Re: [dpdk-dev] [EXT] [PATCH v3] app/test-eventdev: add burst enqueue support 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" >This commit introduces a new command line option prod_enq_burst_sz >to set burst size for eventdev enqueue at producer in perf_queue >test. The newly added function perf_producer_burst is called when >prod_enq_burst_sz is greater than 1. > >Signed-off-by: Rashmi Shetty > LGTM Acked-by: Pavan Nikhilesh >--- > >v3: >- Updated testeventdev.rst to document and show new command line >option usage (Jerin) >- Used memset() to zero stack struct instead of =3D {NULL}; syntax (Jerin) > >--- > app/test-eventdev/evt_common.h | 1 + > app/test-eventdev/evt_main.c | 2 +- > app/test-eventdev/evt_options.c | 14 +++++ > app/test-eventdev/evt_options.h | 1 + > app/test-eventdev/test_perf_common.c | 82 >+++++++++++++++++++++++++++- > app/test-eventdev/test_perf_common.h | 1 + > doc/guides/tools/testeventdev.rst | 22 +++++++- > 7 files changed, 117 insertions(+), 6 deletions(-) > >diff --git a/app/test-eventdev/evt_common.h b/app/test- >eventdev/evt_common.h >index 28afb114b3..f466434459 100644 >--- a/app/test-eventdev/evt_common.h >+++ b/app/test-eventdev/evt_common.h >@@ -64,6 +64,7 @@ struct evt_options { > uint32_t nb_flows; > uint32_t tx_first; > uint32_t max_pkt_sz; >+ uint32_t prod_enq_burst_sz; > uint32_t deq_tmo_nsec; > uint32_t q_priority:1; > uint32_t fwd_latency:1; >diff --git a/app/test-eventdev/evt_main.c b/app/test- >eventdev/evt_main.c >index a8d304bab3..3534aabca7 100644 >--- a/app/test-eventdev/evt_main.c >+++ b/app/test-eventdev/evt_main.c >@@ -95,7 +95,7 @@ main(int argc, char **argv) > /* Parse the command line arguments */ > ret =3D evt_options_parse(&opt, argc, argv); > if (ret) { >- evt_err("parsing on or more user options failed"); >+ evt_err("parsing one or more user options failed"); > goto error; > } > >diff --git a/app/test-eventdev/evt_options.c b/app/test- >eventdev/evt_options.c >index b0bcbc6c96..753a7dbd7d 100644 >--- a/app/test-eventdev/evt_options.c >+++ b/app/test-eventdev/evt_options.c >@@ -26,6 +26,7 @@ evt_options_default(struct evt_options *opt) > opt->nb_flows =3D 1024; > opt->socket_id =3D SOCKET_ID_ANY; > opt->pool_sz =3D 16 * 1024; >+ opt->prod_enq_burst_sz =3D 1; > opt->wkr_deq_dep =3D 16; > opt->nb_pkts =3D (1ULL << 26); /* do ~64M packets */ > opt->nb_timers =3D 1E8; >@@ -304,6 +305,16 @@ evt_parse_per_port_pool(struct evt_options >*opt, const char *arg __rte_unused) > return 0; > } > >+static int >+evt_parse_prod_enq_burst_sz(struct evt_options *opt, const char >*arg) >+{ >+ int ret; >+ >+ ret =3D parser_read_uint32(&(opt->prod_enq_burst_sz), arg); >+ >+ return ret; >+} >+ > static void > usage(char *program) > { >@@ -336,6 +347,7 @@ usage(char *program) > "\t--expiry_nsec : event timer expiry ns.\n" > "\t--mbuf_sz : packet mbuf size.\n" > "\t--max_pkt_sz : max packet size.\n" >+ "\t--prod_enq_burst_sz : producer enqueue burst >size.\n" > "\t--nb_eth_queues : number of ethernet Rx >queues.\n" > "\t--enable_vector : enable event vectorization.\n" > "\t--vector_size : Max vector size.\n" >@@ -412,6 +424,7 @@ static struct option lgopts[] =3D { > { EVT_EXPIRY_NSEC, 1, 0, 0 }, > { EVT_MBUF_SZ, 1, 0, 0 }, > { EVT_MAX_PKT_SZ, 1, 0, 0 }, >+ { EVT_PROD_ENQ_BURST_SZ, 1, 0, 0 }, > { EVT_NB_ETH_QUEUES, 1, 0, 0 }, > { EVT_ENA_VECTOR, 0, 0, 0 }, > { EVT_VECTOR_SZ, 1, 0, 0 }, >@@ -451,6 +464,7 @@ evt_opts_parse_long(int opt_idx, struct >evt_options *opt) > { EVT_EXPIRY_NSEC, evt_parse_expiry_nsec}, > { EVT_MBUF_SZ, evt_parse_mbuf_sz}, > { EVT_MAX_PKT_SZ, evt_parse_max_pkt_sz}, >+ { EVT_PROD_ENQ_BURST_SZ, >evt_parse_prod_enq_burst_sz}, > { EVT_NB_ETH_QUEUES, evt_parse_eth_queues}, > { EVT_ENA_VECTOR, evt_parse_ena_vector}, > { EVT_VECTOR_SZ, evt_parse_vector_size}, >diff --git a/app/test-eventdev/evt_options.h b/app/test- >eventdev/evt_options.h >index 6436200b40..413d7092f0 100644 >--- a/app/test-eventdev/evt_options.h >+++ b/app/test-eventdev/evt_options.h >@@ -42,6 +42,7 @@ > #define EVT_EXPIRY_NSEC ("expiry_nsec") > #define EVT_MBUF_SZ ("mbuf_sz") > #define EVT_MAX_PKT_SZ ("max_pkt_sz") >+#define EVT_PROD_ENQ_BURST_SZ ("prod_enq_burst_sz") > #define EVT_NB_ETH_QUEUES ("nb_eth_queues") > #define EVT_ENA_VECTOR ("enable_vector") > #define EVT_VECTOR_SZ ("vector_size") >diff --git a/app/test-eventdev/test_perf_common.c b/app/test- >eventdev/test_perf_common.c >index cc100650c2..6d0806183d 100644 >--- a/app/test-eventdev/test_perf_common.c >+++ b/app/test-eventdev/test_perf_common.c >@@ -77,6 +77,71 @@ perf_producer(void *arg) > return 0; > } > >+static inline int >+perf_producer_burst(void *arg) >+{ >+ uint32_t i; >+ uint64_t timestamp; >+ struct rte_event_dev_info dev_info; >+ struct prod_data *p =3D arg; >+ struct test_perf *t =3D p->t; >+ struct evt_options *opt =3D t->opt; >+ const uint8_t dev_id =3D p->dev_id; >+ const uint8_t port =3D p->port_id; >+ struct rte_mempool *pool =3D t->pool; >+ const uint64_t nb_pkts =3D t->nb_pkts; >+ const uint32_t nb_flows =3D t->nb_flows; >+ uint32_t flow_counter =3D 0; >+ uint16_t enq =3D 0; >+ uint64_t count =3D 0; >+ struct perf_elt *m[MAX_PROD_ENQ_BURST_SIZE + 1]; >+ struct rte_event ev[MAX_PROD_ENQ_BURST_SIZE + 1]; >+ uint32_t burst_size =3D opt->prod_enq_burst_sz; >+ >+ memset(m, 0, sizeof(*m) * (MAX_PROD_ENQ_BURST_SIZE + >1)); >+ rte_event_dev_info_get(dev_id, &dev_info); >+ if (dev_info.max_event_port_enqueue_depth < burst_size) >+ burst_size =3D >dev_info.max_event_port_enqueue_depth; >+ >+ if (opt->verbose_level > 1) >+ printf("%s(): lcore %d dev_id %d port=3D%d queue >%d\n", __func__, >+ rte_lcore_id(), dev_id, port, p- >>queue_id); >+ >+ for (i =3D 0; i < burst_size; i++) { >+ ev[i].op =3D RTE_EVENT_OP_NEW; >+ ev[i].queue_id =3D p->queue_id; >+ ev[i].sched_type =3D t->opt->sched_type_list[0]; >+ ev[i].priority =3D RTE_EVENT_DEV_PRIORITY_NORMAL; >+ ev[i].event_type =3D RTE_EVENT_TYPE_CPU; >+ ev[i].sub_event_type =3D 0; /* stage 0 */ >+ } >+ >+ while (count < nb_pkts && t->done =3D=3D false) { >+ if (rte_mempool_get_bulk(pool, (void **)m, >burst_size) < 0) >+ continue; >+ timestamp =3D rte_get_timer_cycles(); >+ for (i =3D 0; i < burst_size; i++) { >+ ev[i].flow_id =3D flow_counter++ % nb_flows; >+ ev[i].event_ptr =3D m[i]; >+ m[i]->timestamp =3D timestamp; >+ } >+ enq =3D rte_event_enqueue_burst(dev_id, port, ev, >burst_size); >+ while (enq < burst_size) { >+ enq +=3D rte_event_enqueue_burst(dev_id, >port, >+ ev + enq, >+ burst_size - >enq); >+ if (t->done) >+ break; >+ rte_pause(); >+ timestamp =3D rte_get_timer_cycles(); >+ for (i =3D enq; i < burst_size; i++) >+ m[i]->timestamp =3D timestamp; >+ } >+ count +=3D burst_size; >+ } >+ return 0; >+} >+ > static inline int > perf_event_timer_producer(void *arg) > { >@@ -212,9 +277,21 @@ perf_producer_wrapper(void *arg) > { > struct prod_data *p =3D arg; > struct test_perf *t =3D p->t; >- /* Launch the producer function only in case of synthetic >producer. */ >- if (t->opt->prod_type =3D=3D EVT_PROD_TYPE_SYNT) >+ bool burst =3D evt_has_burst_mode(p->dev_id); >+ >+ /* In case of synthetic producer, launch perf_producer or >+ * perf_producer_burst depending on producer enqueue burst >size >+ */ >+ if (t->opt->prod_type =3D=3D EVT_PROD_TYPE_SYNT && >+ t->opt->prod_enq_burst_sz =3D=3D 1) > return perf_producer(arg); >+ else if (t->opt->prod_type =3D=3D EVT_PROD_TYPE_SYNT && >+ t->opt->prod_enq_burst_sz > 1) { >+ if (!burst) >+ evt_err("This event device does not support >burst mode"); >+ else >+ return perf_producer_burst(arg); >+ } > else if (t->opt->prod_type =3D=3D >EVT_PROD_TYPE_EVENT_TIMER_ADPTR && > !t->opt->timdev_use_burst) > return perf_event_timer_producer(arg); >@@ -635,6 +712,7 @@ perf_opt_dump(struct evt_options *opt, >uint8_t nb_queues) > evt_dump_queue_priority(opt); > evt_dump_sched_type_list(opt); > evt_dump_producer_type(opt); >+ evt_dump("prod_enq_burst_sz", "%d", opt- >>prod_enq_burst_sz); > } > > void >diff --git a/app/test-eventdev/test_perf_common.h b/app/test- >eventdev/test_perf_common.h >index 9785dc3e23..14dcf80429 100644 >--- a/app/test-eventdev/test_perf_common.h >+++ b/app/test-eventdev/test_perf_common.h >@@ -71,6 +71,7 @@ struct perf_elt { > } __rte_cache_aligned; > > #define BURST_SIZE 16 >+#define MAX_PROD_ENQ_BURST_SIZE 128 > > #define PERF_WORKER_INIT\ > struct worker_data *w =3D arg;\ >diff --git a/doc/guides/tools/testeventdev.rst >b/doc/guides/tools/testeventdev.rst >index b81340471e..7b4cdeb43f 100644 >--- a/doc/guides/tools/testeventdev.rst >+++ b/doc/guides/tools/testeventdev.rst >@@ -155,9 +155,15 @@ The following are the application command-line >options: > > * ``--max_pkt_sz`` > >- Set max packet mbuf size. Can be used configure Rx/Tx scatter >gather. >+ Set max packet mbuf size. Can be used to configure Rx/Tx scatter >gather. > Only applicable for `pipeline_atq` and `pipeline_queue` tests. > >+* ``--prod_enq_burst_sz`` >+ >+ Set producer enqueue burst size. Can be used to configure the >number of >+ events the producer(s) will enqueue as a burst to the event >device. >+ Only applicable for `perf_queue` test. >+ > * ``--nb_eth_queues`` > > Configure multiple Rx queues per each ethernet port. >@@ -374,8 +380,9 @@ The user can choose the number of workers, the >number of producers and number of > stages through the ``--wlcores``, ``--plcores`` and the ``--stlist`` >application > command line arguments respectively. > >-The producer(s) injects the events to eventdev based the first stage >sched type >-list requested by the user through ``--stlist`` the command line >argument. >+The producer(s) injects the events to eventdev based on the first >stage sched type >+list requested by the user through ``--stlist`` command line argument. >It can >+inject a burst of events using ``--prod_enq_burst_sz`` command line >argument. > > Based on the number of stages to process(selected through ``--stlist``), > The application forwards the event to next upstream queue and >terminates when it >@@ -413,6 +420,7 @@ Supported application command line options are >following:: > --prod_type_ethdev > --prod_type_timerdev_burst > --prod_type_timerdev >+ --prod_enq_burst_sz > --timer_tick_nsec > --max_tmo_nsec > --expiry_nsec >@@ -430,6 +438,14 @@ Example command to run perf queue test: > sudo /app/dpdk-test-eventdev -c 0xf -s 0x1 -- >vdev=3Devent_sw0 -- \ > --test=3Dperf_queue --plcores=3D2 --wlcore=3D3 --stlist=3Dp --nb_= pkts=3D0 > >+Example command to run perf queue test with producer enqueuing a >burst of events: >+ >+.. code-block:: console >+ >+ sudo /app/dpdk-test-eventdev -c 0xf -s 0x1 -- >vdev=3Devent_sw0 -- \ >+ --test=3Dperf_queue --plcores=3D2 --wlcore=3D3 --stlist=3Dp --nb_= pkts=3D0 \ >+ --prod_enq_burst_sz=3D32 >+ > Example command to run perf queue test with ethernet ports: > > .. code-block:: console >-- >2.25.1