[2/2] examples/ip_pipeline: fix to use sock id instead of cpuid
Checks
Commit Message
From: Jun Yang <jun.yang@nxp.com>
rte_lcore_to_socket_id should be used to convert cpu ID to socket ID.
Fixes: 6bfe74f8c93e ("examples/ip_pipeline: add mempool object")
Fixes: d75c371e9b46 ("examples/ip_pipeline: add pipeline object")
Cc: Stable@dpdk.org
Signed-off-by: Jun Yang <jun.yang@nxp.com>
---
examples/ip_pipeline/mempool.c | 2 +-
examples/ip_pipeline/pipeline.c | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
Comments
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Hemant Agrawal
> Sent: Wednesday, December 11, 2019 5:26 AM
> To: dev@dpdk.org
> Cc: Dumitrescu, Cristian <cristian.dumitrescu@intel.com>; Stable@dpdk.org;
> Jun Yang <jun.yang@nxp.com>
> Subject: [dpdk-dev] [PATCH 2/2] examples/ip_pipeline: fix to use sock id
> instead of cpuid
>
> From: Jun Yang <jun.yang@nxp.com>
>
> rte_lcore_to_socket_id should be used to convert cpu ID to socket ID.
>
> Fixes: 6bfe74f8c93e ("examples/ip_pipeline: add mempool object")
> Fixes: d75c371e9b46 ("examples/ip_pipeline: add pipeline object")
> Cc: Stable@dpdk.org
>
> Signed-off-by: Jun Yang <jun.yang@nxp.com>
> ---
> examples/ip_pipeline/mempool.c | 2 +-
> examples/ip_pipeline/pipeline.c | 10 +++++-----
> 2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/examples/ip_pipeline/mempool.c
> b/examples/ip_pipeline/mempool.c
> index f5d2a7d108..d7eea85f8f 100644
> --- a/examples/ip_pipeline/mempool.c
> +++ b/examples/ip_pipeline/mempool.c
> @@ -58,7 +58,7 @@ mempool_create(const char *name, struct
> mempool_params *params)
> params->cache_size,
> 0,
> params->buffer_size - sizeof(struct rte_mbuf),
> - params->cpu_id);
> + rte_lcore_to_socket_id(params->cpu_id));
>
> if (m == NULL)
> return NULL;
> diff --git a/examples/ip_pipeline/pipeline.c
> b/examples/ip_pipeline/pipeline.c
> index b627310a0c..d8df62d785 100644
> --- a/examples/ip_pipeline/pipeline.c
> +++ b/examples/ip_pipeline/pipeline.c
> @@ -94,7 +94,7 @@ pipeline_create(const char *name, struct
> pipeline_params *params)
>
> msgq_req = rte_ring_create(msgq_name,
> PIPELINE_MSGQ_SIZE,
> - params->cpu_id,
> + rte_lcore_to_socket_id(params->cpu_id),
> RING_F_SP_ENQ | RING_F_SC_DEQ);
> if (msgq_req == NULL)
> return NULL;
> @@ -103,7 +103,7 @@ pipeline_create(const char *name, struct
> pipeline_params *params)
>
> msgq_rsp = rte_ring_create(msgq_name,
> PIPELINE_MSGQ_SIZE,
> - params->cpu_id,
> + rte_lcore_to_socket_id(params->cpu_id),
> RING_F_SP_ENQ | RING_F_SC_DEQ);
> if (msgq_rsp == NULL) {
> rte_ring_free(msgq_req);
> @@ -111,7 +111,7 @@ pipeline_create(const char *name, struct
> pipeline_params *params)
> }
>
> pp.name = name;
> - pp.socket_id = (int) params->cpu_id;
> + pp.socket_id = (int) rte_lcore_to_socket_id(params->cpu_id);
> pp.offset_port_id = params->offset_port_id;
>
> p = rte_pipeline_create(&pp);
> @@ -332,7 +332,7 @@ pipeline_port_in_create(const char *pipeline_name,
>
> if (ap) {
> action = rte_port_in_action_create(ap->ap,
> - pipeline->cpu_id);
> + rte_lcore_to_socket_id(pipeline->cpu_id));
> if (action == NULL)
> return -1;
>
> @@ -1002,7 +1002,7 @@ pipeline_table_create(const char *pipeline_name,
>
> if (ap) {
> action = rte_table_action_create(ap->ap,
> - pipeline->cpu_id);
> + rte_lcore_to_socket_id(pipeline->cpu_id));
> if (action == NULL)
> return -1;
>
> --
> 2.17.1
NACK.
This is incorrect, probably a misunderstanding: the params->cpu_id is already the CPU socket ID (passed as parameter), and not the core ID. For core ID, we typically use variable names as core_id or lcore_id, and never cpu_id.
Hi Cristian,
Per my debug log, the CPU ID is actually DPDK current core ID on NXP ARM64 platform whose socket ID is always 0.
-----Original Message-----
From: Dumitrescu, Cristian [mailto:cristian.dumitrescu@intel.com]
Sent: Friday, February 14, 2020 7:27 PM
To: Hemant Agrawal <hemant.agrawal@nxp.com>; dev@dpdk.org
Cc: Stable@dpdk.org; Jun Yang <jun.yang@nxp.com>
Subject: [EXT] RE: [dpdk-dev] [PATCH 2/2] examples/ip_pipeline: fix to use sock id instead of cpuid
Caution: EXT Email
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Hemant Agrawal
> Sent: Wednesday, December 11, 2019 5:26 AM
> To: dev@dpdk.org
> Cc: Dumitrescu, Cristian <cristian.dumitrescu@intel.com>;
> Stable@dpdk.org; Jun Yang <jun.yang@nxp.com>
> Subject: [dpdk-dev] [PATCH 2/2] examples/ip_pipeline: fix to use sock
> id instead of cpuid
>
> From: Jun Yang <jun.yang@nxp.com>
>
> rte_lcore_to_socket_id should be used to convert cpu ID to socket ID.
>
> Fixes: 6bfe74f8c93e ("examples/ip_pipeline: add mempool object")
> Fixes: d75c371e9b46 ("examples/ip_pipeline: add pipeline object")
> Cc: Stable@dpdk.org
>
> Signed-off-by: Jun Yang <jun.yang@nxp.com>
> ---
> examples/ip_pipeline/mempool.c | 2 +-
> examples/ip_pipeline/pipeline.c | 10 +++++-----
> 2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/examples/ip_pipeline/mempool.c
> b/examples/ip_pipeline/mempool.c index f5d2a7d108..d7eea85f8f 100644
> --- a/examples/ip_pipeline/mempool.c
> +++ b/examples/ip_pipeline/mempool.c
> @@ -58,7 +58,7 @@ mempool_create(const char *name, struct
> mempool_params *params)
> params->cache_size,
> 0,
> params->buffer_size - sizeof(struct rte_mbuf),
> - params->cpu_id);
> + rte_lcore_to_socket_id(params->cpu_id));
>
> if (m == NULL)
> return NULL;
> diff --git a/examples/ip_pipeline/pipeline.c
> b/examples/ip_pipeline/pipeline.c index b627310a0c..d8df62d785 100644
> --- a/examples/ip_pipeline/pipeline.c
> +++ b/examples/ip_pipeline/pipeline.c
> @@ -94,7 +94,7 @@ pipeline_create(const char *name, struct
> pipeline_params *params)
>
> msgq_req = rte_ring_create(msgq_name,
> PIPELINE_MSGQ_SIZE,
> - params->cpu_id,
> + rte_lcore_to_socket_id(params->cpu_id),
> RING_F_SP_ENQ | RING_F_SC_DEQ);
> if (msgq_req == NULL)
> return NULL;
> @@ -103,7 +103,7 @@ pipeline_create(const char *name, struct
> pipeline_params *params)
>
> msgq_rsp = rte_ring_create(msgq_name,
> PIPELINE_MSGQ_SIZE,
> - params->cpu_id,
> + rte_lcore_to_socket_id(params->cpu_id),
> RING_F_SP_ENQ | RING_F_SC_DEQ);
> if (msgq_rsp == NULL) {
> rte_ring_free(msgq_req); @@ -111,7 +111,7 @@
> pipeline_create(const char *name, struct pipeline_params *params)
> }
>
> pp.name = name;
> - pp.socket_id = (int) params->cpu_id;
> + pp.socket_id = (int) rte_lcore_to_socket_id(params->cpu_id);
> pp.offset_port_id = params->offset_port_id;
>
> p = rte_pipeline_create(&pp);
> @@ -332,7 +332,7 @@ pipeline_port_in_create(const char *pipeline_name,
>
> if (ap) {
> action = rte_port_in_action_create(ap->ap,
> - pipeline->cpu_id);
> + rte_lcore_to_socket_id(pipeline->cpu_id));
> if (action == NULL)
> return -1;
>
> @@ -1002,7 +1002,7 @@ pipeline_table_create(const char *pipeline_name,
>
> if (ap) {
> action = rte_table_action_create(ap->ap,
> - pipeline->cpu_id);
> + rte_lcore_to_socket_id(pipeline->cpu_id));
> if (action == NULL)
> return -1;
>
> --
> 2.17.1
NACK.
This is incorrect, probably a misunderstanding: the params->cpu_id is already the CPU socket ID (passed as parameter), and not the core ID. For core ID, we typically use variable names as core_id or lcore_id, and never cpu_id.
> -----Original Message-----
> From: Jun Yang <jun.yang@nxp.com>
> Sent: Friday, February 14, 2020 3:19 PM
> To: Dumitrescu, Cristian <cristian.dumitrescu@intel.com>; Hemant Agrawal
> <hemant.agrawal@nxp.com>; dev@dpdk.org
> Cc: Stable@dpdk.org
> Subject: RE: [EXT] RE: [dpdk-dev] [PATCH 2/2] examples/ip_pipeline: fix to
> use sock id instead of cpuid
>
> Hi Cristian,
> Per my debug log, the CPU ID is actually DPDK current core ID on NXP ARM64
> platform whose socket ID is always 0.
>
Hi Jun,
The params->cpu_id is vendor independent, it is always the CPU socket ID and is consistently used as the NUMA node to allocate memory on. If your system has a single CPU socket, then this parameter should be equal to 0. As clearly documented and stated before, this parameter is never the CPU core ID, which is typically called core_id or lcore_id consistently in the code. Again, not sure where this confusion is coming from.
Regards,
Cristian
Hi Cristian,
If my recall is correct, the issue comes from following commands:
ip_pipleline running on DPAA1:
#NOTE: rss ip_pipeline is not supported due to the limitation of DPAA1 driver.
1) mkdir -p /mnt/hugepages
2) mount -t hugetlbfs none /mnt/hugepages
3) export DPAA_FMCLESS_MODE=1
4) #firewall ip_pipeline demo:
./ip_pipeline -c 0x3 -n 4 -- -s ./dpaa2_examples/firewall.cli
5) #flow ip_pipeline demo:
./ip_pipeline -c 0xf -n 4 -- -s ./dpaa2_examples/flow.cli
6) #flow crypto ip_pipeline demo:
./ip_pipeline -c 0x7 -n 4 -- -s ./dpaa2_examples/flow_crypto.cli
7) #l2fwd ip_pipeline demo:
./ip_pipeline -c 0x3 -n 4 -- -s ./dpaa2_examples/l2fwd.cli
8) #route ip_pipeline demo:
./ip_pipeline -c 0x3 -n 4 -- -s ./dpaa2_examples/route.cli
9) #route ecmp ip_pipeline demo:
./ip_pipeline -c 0x3 -n 4 -- -s ./dpaa2_examples/route_ecmp.cli
-----Original Message-----
From: Dumitrescu, Cristian [mailto:cristian.dumitrescu@intel.com]
Sent: Tuesday, February 18, 2020 6:48 PM
To: Jun Yang <jun.yang@nxp.com>; Hemant Agrawal <hemant.agrawal@nxp.com>; dev@dpdk.org
Cc: Stable@dpdk.org
Subject: RE: [EXT] RE: [dpdk-dev] [PATCH 2/2] examples/ip_pipeline: fix to use sock id instead of cpuid
Caution: EXT Email
> -----Original Message-----
> From: Jun Yang <jun.yang@nxp.com>
> Sent: Friday, February 14, 2020 3:19 PM
> To: Dumitrescu, Cristian <cristian.dumitrescu@intel.com>; Hemant
> Agrawal <hemant.agrawal@nxp.com>; dev@dpdk.org
> Cc: Stable@dpdk.org
> Subject: RE: [EXT] RE: [dpdk-dev] [PATCH 2/2] examples/ip_pipeline:
> fix to use sock id instead of cpuid
>
> Hi Cristian,
> Per my debug log, the CPU ID is actually DPDK current core ID on NXP
> ARM64 platform whose socket ID is always 0.
>
Hi Jun,
The params->cpu_id is vendor independent, it is always the CPU socket ID and is consistently used as the NUMA node to allocate memory on. If your system has a single CPU socket, then this parameter should be equal to 0. As clearly documented and stated before, this parameter is never the CPU core ID, which is typically called core_id or lcore_id consistently in the code. Again, not sure where this confusion is coming from.
Regards,
Cristian
@@ -58,7 +58,7 @@ mempool_create(const char *name, struct mempool_params *params)
params->cache_size,
0,
params->buffer_size - sizeof(struct rte_mbuf),
- params->cpu_id);
+ rte_lcore_to_socket_id(params->cpu_id));
if (m == NULL)
return NULL;
@@ -94,7 +94,7 @@ pipeline_create(const char *name, struct pipeline_params *params)
msgq_req = rte_ring_create(msgq_name,
PIPELINE_MSGQ_SIZE,
- params->cpu_id,
+ rte_lcore_to_socket_id(params->cpu_id),
RING_F_SP_ENQ | RING_F_SC_DEQ);
if (msgq_req == NULL)
return NULL;
@@ -103,7 +103,7 @@ pipeline_create(const char *name, struct pipeline_params *params)
msgq_rsp = rte_ring_create(msgq_name,
PIPELINE_MSGQ_SIZE,
- params->cpu_id,
+ rte_lcore_to_socket_id(params->cpu_id),
RING_F_SP_ENQ | RING_F_SC_DEQ);
if (msgq_rsp == NULL) {
rte_ring_free(msgq_req);
@@ -111,7 +111,7 @@ pipeline_create(const char *name, struct pipeline_params *params)
}
pp.name = name;
- pp.socket_id = (int) params->cpu_id;
+ pp.socket_id = (int) rte_lcore_to_socket_id(params->cpu_id);
pp.offset_port_id = params->offset_port_id;
p = rte_pipeline_create(&pp);
@@ -332,7 +332,7 @@ pipeline_port_in_create(const char *pipeline_name,
if (ap) {
action = rte_port_in_action_create(ap->ap,
- pipeline->cpu_id);
+ rte_lcore_to_socket_id(pipeline->cpu_id));
if (action == NULL)
return -1;
@@ -1002,7 +1002,7 @@ pipeline_table_create(const char *pipeline_name,
if (ap) {
action = rte_table_action_create(ap->ap,
- pipeline->cpu_id);
+ rte_lcore_to_socket_id(pipeline->cpu_id));
if (action == NULL)
return -1;