From: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
To: Yuying.Zhang@intel.com, beilei.xing@intel.com,
olivier.matz@6wind.com, andrew.rybchenko@oktetlabs.ru,
bruce.richardson@intel.com, mb@smartsharesystems.com,
konstantin.ananyev@huawei.com, Honnappa.Nagarahalli@arm.com
Cc: dev@dpdk.org, nd@arm.com,
Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>,
Ruifeng Wang <ruifeng.wang@arm.com>,
Feifei Wang <feifei.wang2@arm.com>
Subject: [PATCH 2/2] test/mempool: add zero-copy API's
Date: Thu, 9 Feb 2023 06:25:01 +0000 [thread overview]
Message-ID: <20230209062501.142828-2-kamalakshitha.aligeri@arm.com> (raw)
In-Reply-To: <20230209062501.142828-1-kamalakshitha.aligeri@arm.com>
Added mempool test cases with zero-copy get and put API's
Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Feifei Wang <feifei.wang2@arm.com>
---
Link: https://patchwork.dpdk.org/project/dpdk/patch/20221227151700.80887-1-mb@smartsharesystems.com/
app/test/test_mempool.c | 81 ++++++++++++++++++++++++++++++-----------
1 file changed, 60 insertions(+), 21 deletions(-)
diff --git a/app/test/test_mempool.c b/app/test/test_mempool.c
index 8e493eda47..6d29f5bc7b 100644
--- a/app/test/test_mempool.c
+++ b/app/test/test_mempool.c
@@ -74,7 +74,7 @@ my_obj_init(struct rte_mempool *mp, __rte_unused void *arg,
/* basic tests (done on one core) */
static int
-test_mempool_basic(struct rte_mempool *mp, int use_external_cache)
+test_mempool_basic(struct rte_mempool *mp, int use_external_cache, int use_zc_api)
{
uint32_t *objnum;
void **objtable;
@@ -84,6 +84,7 @@ test_mempool_basic(struct rte_mempool *mp, int use_external_cache)
unsigned i, j;
int offset;
struct rte_mempool_cache *cache;
+ void **cache_objs;
if (use_external_cache) {
/* Create a user-owned mempool cache. */
@@ -100,8 +101,13 @@ test_mempool_basic(struct rte_mempool *mp, int use_external_cache)
rte_mempool_dump(stdout, mp);
printf("get an object\n");
- if (rte_mempool_generic_get(mp, &obj, 1, cache) < 0)
- GOTO_ERR(ret, out);
+ if (use_zc_api) {
+ cache_objs = rte_mempool_cache_zc_get_bulk(cache, mp, 1);
+ obj = *cache_objs;
+ } else {
+ if (rte_mempool_generic_get(mp, &obj, 1, cache) < 0)
+ GOTO_ERR(ret, out);
+ }
rte_mempool_dump(stdout, mp);
/* tests that improve coverage */
@@ -123,21 +129,41 @@ test_mempool_basic(struct rte_mempool *mp, int use_external_cache)
#endif
printf("put the object back\n");
- rte_mempool_generic_put(mp, &obj, 1, cache);
+ if (use_zc_api) {
+ cache_objs = rte_mempool_cache_zc_put_bulk(cache, mp, 1);
+ rte_memcpy(cache_objs, &obj, sizeof(void *));
+ } else {
+ rte_mempool_generic_put(mp, &obj, 1, cache);
+ }
rte_mempool_dump(stdout, mp);
printf("get 2 objects\n");
- if (rte_mempool_generic_get(mp, &obj, 1, cache) < 0)
- GOTO_ERR(ret, out);
- if (rte_mempool_generic_get(mp, &obj2, 1, cache) < 0) {
- rte_mempool_generic_put(mp, &obj, 1, cache);
- GOTO_ERR(ret, out);
+ if (use_zc_api) {
+ cache_objs = rte_mempool_cache_zc_get_bulk(cache, mp, 1);
+ obj = *cache_objs;
+ cache_objs = rte_mempool_cache_zc_get_bulk(cache, mp, 1);
+ obj2 = *cache_objs;
+ } else {
+ if (rte_mempool_generic_get(mp, &obj, 1, cache) < 0)
+ GOTO_ERR(ret, out);
+ if (rte_mempool_generic_get(mp, &obj2, 1, cache) < 0) {
+ rte_mempool_generic_put(mp, &obj, 1, cache);
+ GOTO_ERR(ret, out);
+ }
}
rte_mempool_dump(stdout, mp);
printf("put the objects back\n");
- rte_mempool_generic_put(mp, &obj, 1, cache);
- rte_mempool_generic_put(mp, &obj2, 1, cache);
+ if (use_zc_api) {
+ cache_objs = rte_mempool_cache_zc_put_bulk(cache, mp, 1);
+ rte_memcpy(cache_objs, &obj, sizeof(void *));
+ cache_objs = rte_mempool_cache_zc_put_bulk(cache, mp, 1);
+ rte_memcpy(cache_objs, &obj2, sizeof(void *));
+
+ } else {
+ rte_mempool_generic_put(mp, &obj, 1, cache);
+ rte_mempool_generic_put(mp, &obj2, 1, cache);
+ }
rte_mempool_dump(stdout, mp);
/*
@@ -149,8 +175,13 @@ test_mempool_basic(struct rte_mempool *mp, int use_external_cache)
GOTO_ERR(ret, out);
for (i = 0; i < MEMPOOL_SIZE; i++) {
- if (rte_mempool_generic_get(mp, &objtable[i], 1, cache) < 0)
- break;
+ if (use_zc_api) {
+ cache_objs = rte_mempool_cache_zc_get_bulk(cache, mp, 1);
+ objtable[i] = *cache_objs;
+ } else {
+ if (rte_mempool_generic_get(mp, &objtable[i], 1, cache) < 0)
+ break;
+ }
}
/*
@@ -170,8 +201,12 @@ test_mempool_basic(struct rte_mempool *mp, int use_external_cache)
if (obj_data[j] != 0)
ret = -1;
}
-
- rte_mempool_generic_put(mp, &objtable[i], 1, cache);
+ if (use_zc_api) {
+ cache_objs = rte_mempool_cache_zc_put_bulk(cache, mp, 1);
+ rte_memcpy(cache_objs, &objtable[i], sizeof(void *));
+ } else {
+ rte_mempool_generic_put(mp, &objtable[i], 1, cache);
+ }
}
free(objtable);
@@ -979,15 +1014,19 @@ test_mempool(void)
rte_mempool_list_dump(stdout);
/* basic tests without cache */
- if (test_mempool_basic(mp_nocache, 0) < 0)
+ if (test_mempool_basic(mp_nocache, 0, 0) < 0)
+ GOTO_ERR(ret, err);
+
+ /* basic tests with zero-copy API's */
+ if (test_mempool_basic(mp_cache, 0, 1) < 0)
GOTO_ERR(ret, err);
- /* basic tests with cache */
- if (test_mempool_basic(mp_cache, 0) < 0)
+ /* basic tests with user-owned cache and zero-copy API's */
+ if (test_mempool_basic(mp_nocache, 1, 1) < 0)
GOTO_ERR(ret, err);
/* basic tests with user-owned cache */
- if (test_mempool_basic(mp_nocache, 1) < 0)
+ if (test_mempool_basic(mp_nocache, 1, 0) < 0)
GOTO_ERR(ret, err);
/* more basic tests without cache */
@@ -1008,10 +1047,10 @@ test_mempool(void)
GOTO_ERR(ret, err);
/* test the stack handler */
- if (test_mempool_basic(mp_stack, 1) < 0)
+ if (test_mempool_basic(mp_stack, 1, 0) < 0)
GOTO_ERR(ret, err);
- if (test_mempool_basic(default_pool, 1) < 0)
+ if (test_mempool_basic(default_pool, 1, 0) < 0)
GOTO_ERR(ret, err);
/* test mempool event callbacks */
--
2.25.1
next prev parent reply other threads:[~2023-02-09 6:25 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-09 6:25 [PATCH 1/2] net/i40e: replace put function Kamalakshitha Aligeri
2023-02-09 6:25 ` Kamalakshitha Aligeri [this message]
2023-02-09 9:15 ` [PATCH 2/2] test/mempool: add zero-copy API's Morten Brørup
2023-02-09 9:34 ` [PATCH 1/2] net/i40e: replace put function Morten Brørup
2023-02-09 10:58 ` 回复: " Feifei Wang
2023-02-09 11:30 ` Morten Brørup
2023-02-10 2:43 ` 回复: " Feifei Wang
2023-02-10 6:54 ` [PATCH v2 0/2] Integrated mempool cache zero-copy API's Kamalakshitha Aligeri
2023-02-10 6:54 ` [PATCH v2 1/2] net/i40e: replace put function Kamalakshitha Aligeri
2023-02-10 7:28 ` Morten Brørup
2023-02-10 15:20 ` Honnappa Nagarahalli
2023-02-13 18:18 ` [PATCH v3 0/2] Integrated mempool cache zero-copy API's Kamalakshitha Aligeri
2023-02-13 18:18 ` [PATCH v3 1/2] net/i40e: replace put function Kamalakshitha Aligeri
2023-02-14 8:50 ` Morten Brørup
2023-02-17 2:02 ` Lu, Wenzhuo
2023-02-17 7:52 ` Morten Brørup
2023-02-17 10:05 ` Ferruh Yigit
2023-02-17 11:24 ` Morten Brørup
2023-02-17 14:25 ` Aaron Conole
2023-02-17 14:25 ` Aaron Conole
2023-02-13 18:18 ` [PATCH v3 2/2] test/mempool: add zero-copy API's Kamalakshitha Aligeri
2023-02-21 5:52 ` [PATCH v4 0/2] Integrated mempool cache " Kamalakshitha Aligeri
2023-02-21 5:52 ` [PATCH v4 1/2] net/i40e: replace put function Kamalakshitha Aligeri
2023-02-21 5:52 ` [PATCH v4 2/2] test/mempool: add zero-copy API's Kamalakshitha Aligeri
2023-02-10 6:54 ` [PATCH v2 " Kamalakshitha Aligeri
2023-02-10 7:33 ` Morten Brørup
2023-02-20 13:52 ` Thomas Monjalon
2023-02-21 20:18 ` Kamalakshitha Aligeri
2023-02-22 8:01 ` Thomas Monjalon
2023-02-22 8:24 ` Morten Brørup
2023-02-22 12:40 ` Thomas Monjalon
2023-02-22 16:32 ` Morten Brørup
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230209062501.142828-2-kamalakshitha.aligeri@arm.com \
--to=kamalakshitha.aligeri@arm.com \
--cc=Honnappa.Nagarahalli@arm.com \
--cc=Yuying.Zhang@intel.com \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=beilei.xing@intel.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=feifei.wang2@arm.com \
--cc=konstantin.ananyev@huawei.com \
--cc=mb@smartsharesystems.com \
--cc=nd@arm.com \
--cc=olivier.matz@6wind.com \
--cc=ruifeng.wang@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).