DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] examples/ip_pipeline: avoid the failure of creating hash table
@ 2017-10-27  2:55 Jianbo Liu
  2017-10-27 10:01 ` Dumitrescu, Cristian
  0 siblings, 1 reply; 5+ messages in thread
From: Jianbo Liu @ 2017-10-27  2:55 UTC (permalink / raw)
  To: dev, cristian.dumitrescu; +Cc: Jianbo Liu

Hash table function will check if the input bucket size is power of 2,
so the parameter should be rounded up before sending to the creating function.

Signed-off-by: Jianbo Liu <jianbo.liu@arm.com>
---
 examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c | 2 +-
 examples/ip_pipeline/pipeline/pipeline_routing_be.c             | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c b/examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c
index 9846777..929d81c 100644
--- a/examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c
+++ b/examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c
@@ -499,7 +499,7 @@ static void *pipeline_fc_init(struct pipeline_params *params,
 			.key_mask = (p_fc->key_mask_present) ?
 				p_fc->key_mask : NULL,
 			.n_keys = p_fc->n_flows,
-			.n_buckets = p_fc->n_flows / 4,
+			.n_buckets = rte_align32pow2(p_fc->n_flows / 4),
 			.f_hash = hash_func[(p_fc->key_size / 8) - 1],
 			.seed = 0,
 		};
diff --git a/examples/ip_pipeline/pipeline/pipeline_routing_be.c b/examples/ip_pipeline/pipeline/pipeline_routing_be.c
index 7aaf467..0414f24 100644
--- a/examples/ip_pipeline/pipeline/pipeline_routing_be.c
+++ b/examples/ip_pipeline/pipeline/pipeline_routing_be.c
@@ -1355,7 +1355,8 @@ struct arp_table_entry {
 			.key_offset = p_rt->params.arp_key_offset,
 			.key_mask = NULL,
 			.n_keys = p_rt->params.n_arp_entries,
-			.n_buckets = p_rt->params.n_arp_entries / 4,
+			.n_buckets =
+				rte_align32pow2(p_rt->params.n_arp_entries / 4),
 			.f_hash = hash_default_key8,
 			.seed = 0,
 		};
-- 
1.9.1

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [dpdk-dev] [PATCH] examples/ip_pipeline: avoid the failure of creating hash table
  2017-10-27  2:55 [dpdk-dev] [PATCH] examples/ip_pipeline: avoid the failure of creating hash table Jianbo Liu
@ 2017-10-27 10:01 ` Dumitrescu, Cristian
  2017-10-30  3:33   ` Jianbo Liu
  2017-11-07  7:47   ` Ferruh Yigit
  0 siblings, 2 replies; 5+ messages in thread
From: Dumitrescu, Cristian @ 2017-10-27 10:01 UTC (permalink / raw)
  To: Jianbo Liu, dev



> -----Original Message-----
> From: Jianbo Liu [mailto:jianbo.liu@arm.com]
> Sent: Friday, October 27, 2017 3:55 AM
> To: dev@dpdk.org; Dumitrescu, Cristian <cristian.dumitrescu@intel.com>
> Cc: Jianbo Liu <jianbo.liu@arm.com>
> Subject: [PATCH] examples/ip_pipeline: avoid the failure of creating hash
> table
> 
> Hash table function will check if the input bucket size is power of 2,
> so the parameter should be rounded up before sending to the creating
> function.
> 
> Signed-off-by: Jianbo Liu <jianbo.liu@arm.com>
> ---
>  examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c | 2 +-
>  examples/ip_pipeline/pipeline/pipeline_routing_be.c             | 3 ++-
>  2 files changed, 3 insertions(+), 2 deletions(-)
> 

Existing code is simply letting the library detect the misconfiguration and gracefully fail. It avoids duplicating library checks in the app.

Your proposal tries to prevent library from failing by silently tweaking some user configuration params. Easier to debug in some cases.

For this case, I am OK with your proposal, although not really required, so:

Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [dpdk-dev] [PATCH] examples/ip_pipeline: avoid the failure of creating hash table
  2017-10-27 10:01 ` Dumitrescu, Cristian
@ 2017-10-30  3:33   ` Jianbo Liu
  2017-11-01 13:39     ` Dumitrescu, Cristian
  2017-11-07  7:47   ` Ferruh Yigit
  1 sibling, 1 reply; 5+ messages in thread
From: Jianbo Liu @ 2017-10-30  3:33 UTC (permalink / raw)
  To: Dumitrescu, Cristian; +Cc: dev

The 10/27/2017 10:01, Dumitrescu, Cristian wrote:
>
>
> > -----Original Message-----
> > From: Jianbo Liu [mailto:jianbo.liu@arm.com]
> > Sent: Friday, October 27, 2017 3:55 AM
> > To: dev@dpdk.org; Dumitrescu, Cristian <cristian.dumitrescu@intel.com>
> > Cc: Jianbo Liu <jianbo.liu@arm.com>
> > Subject: [PATCH] examples/ip_pipeline: avoid the failure of creating hash
> > table
> >
> > Hash table function will check if the input bucket size is power of 2,
> > so the parameter should be rounded up before sending to the creating
> > function.
> >
> > Signed-off-by: Jianbo Liu <jianbo.liu@arm.com>
> > ---
> >  examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c | 2 +-
> >  examples/ip_pipeline/pipeline/pipeline_routing_be.c             | 3 ++-
> >  2 files changed, 3 insertions(+), 2 deletions(-)
> >
>
> Existing code is simply letting the library detect the misconfiguration and gracefully fail. It avoids duplicating library checks in the app.
>
> Your proposal tries to prevent library from failing by silently tweaking some user configuration params. Easier to debug in some cases.

Yes. but is it must for the parameters to be power of 2? I saw the
config exmple in examples/ip_pipeline/config/network_layers.cfg:

....
178 port_local_dest = 4 ; SINK2 (Drop)
179 n_arp_entries = 1000
180 ip_hdr_offset = 270

If not, it's the programmer to correct it before sending to the library.

Thanks!
Jianbo

>
> For this case, I am OK with your proposal, although not really required, so:
>
> Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
>
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [dpdk-dev] [PATCH] examples/ip_pipeline: avoid the failure of creating hash table
  2017-10-30  3:33   ` Jianbo Liu
@ 2017-11-01 13:39     ` Dumitrescu, Cristian
  0 siblings, 0 replies; 5+ messages in thread
From: Dumitrescu, Cristian @ 2017-11-01 13:39 UTC (permalink / raw)
  To: Jianbo Liu; +Cc: dev



> -----Original Message-----
> From: Jianbo Liu [mailto:jianbo.liu@arm.com]
> Sent: Monday, October 30, 2017 3:33 AM
> To: Dumitrescu, Cristian <cristian.dumitrescu@intel.com>
> Cc: dev@dpdk.org
> Subject: Re: [PATCH] examples/ip_pipeline: avoid the failure of creating hash
> table
> 
> The 10/27/2017 10:01, Dumitrescu, Cristian wrote:
> >
> >
> > > -----Original Message-----
> > > From: Jianbo Liu [mailto:jianbo.liu@arm.com]
> > > Sent: Friday, October 27, 2017 3:55 AM
> > > To: dev@dpdk.org; Dumitrescu, Cristian <cristian.dumitrescu@intel.com>
> > > Cc: Jianbo Liu <jianbo.liu@arm.com>
> > > Subject: [PATCH] examples/ip_pipeline: avoid the failure of creating hash
> > > table
> > >
> > > Hash table function will check if the input bucket size is power of 2,
> > > so the parameter should be rounded up before sending to the creating
> > > function.
> > >
> > > Signed-off-by: Jianbo Liu <jianbo.liu@arm.com>
> > > ---
> > >  examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c | 2 +-
> > >  examples/ip_pipeline/pipeline/pipeline_routing_be.c             | 3 ++-
> > >  2 files changed, 3 insertions(+), 2 deletions(-)
> > >
> >
> > Existing code is simply letting the library detect the misconfiguration and
> gracefully fail. It avoids duplicating library checks in the app.
> >
> > Your proposal tries to prevent library from failing by silently tweaking some
> user configuration params. Easier to debug in some cases.
> 
> Yes. but is it must for the parameters to be power of 2? I saw the
> config exmple in examples/ip_pipeline/config/network_layers.cfg:
> 
> ....
> 178 port_local_dest = 4 ; SINK2 (Drop)
> 179 n_arp_entries = 1000
> 180 ip_hdr_offset = 270
> 
> If not, it's the programmer to correct it before sending to the library.
> 
> Thanks!
> Jianbo
> 

In the latest code, the number of keys does not have to be a power of 2, while the number of buckets does.

I am considering changing the implementation to quietly upgrade number of buckets to the next power of 2 to eliminate some of these error cases.
+: less things for the (unengaged) user to worry about
-: number of buckets needs to be a power of two internally, so a non-power of 2 is likely a misconfiguration; the memory footprint can get much higher when quiet upgrade takes place

> >
> > For this case, I am OK with your proposal, although not really required, so:
> >
> > Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
> >
> IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended recipient,
> please notify the sender immediately and do not disclose the contents to any
> other person, use it for any purpose, or store or copy the information in any
> medium. Thank you.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [dpdk-dev] [PATCH] examples/ip_pipeline: avoid the failure of creating hash table
  2017-10-27 10:01 ` Dumitrescu, Cristian
  2017-10-30  3:33   ` Jianbo Liu
@ 2017-11-07  7:47   ` Ferruh Yigit
  1 sibling, 0 replies; 5+ messages in thread
From: Ferruh Yigit @ 2017-11-07  7:47 UTC (permalink / raw)
  To: Dumitrescu, Cristian, Jianbo Liu, dev

On 10/27/2017 3:01 AM, Dumitrescu, Cristian wrote:
> 
> 
>> -----Original Message-----
>> From: Jianbo Liu [mailto:jianbo.liu@arm.com]
>> Sent: Friday, October 27, 2017 3:55 AM
>> To: dev@dpdk.org; Dumitrescu, Cristian <cristian.dumitrescu@intel.com>
>> Cc: Jianbo Liu <jianbo.liu@arm.com>
>> Subject: [PATCH] examples/ip_pipeline: avoid the failure of creating hash
>> table
>>
>> Hash table function will check if the input bucket size is power of 2,
>> so the parameter should be rounded up before sending to the creating
>> function.
>>
>> Signed-off-by: Jianbo Liu <jianbo.liu@arm.com>

> Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>

Applied to dpdk/master, thanks.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2017-11-07  7:47 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-27  2:55 [dpdk-dev] [PATCH] examples/ip_pipeline: avoid the failure of creating hash table Jianbo Liu
2017-10-27 10:01 ` Dumitrescu, Cristian
2017-10-30  3:33   ` Jianbo Liu
2017-11-01 13:39     ` Dumitrescu, Cristian
2017-11-07  7:47   ` Ferruh Yigit

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).