[dpdk-dev] [PATCH v5 5/5] test/hash: read-write lock-free concurrency test

Bruce Richardson bruce.richardson at intel.com
Tue Oct 23 13:56:37 CEST 2018


On Mon, Oct 22, 2018 at 11:22:04PM -0500, Honnappa Nagarahalli wrote:
> From: Dharmik Thakkar <dharmik.thakkar at arm.com>
> 
> Unit tests to check for hash lookup and bulk-lookup perf
> with lock-free enabled and with lock-free disabled.
> Unit tests performed with readers running in parallel with writers.
> 
> Tests include:
> 
> - hash lookup on existing keys with:
>   - hash add causing NO key-shifts of existing keys in the table
> 
> - hash lookup on existing keys likely to be on shift-path with:
>   - hash add causing key-shifts of existing keys in the table
> 
> - hash lookup on existing keys NOT likely to be on shift-path with:
>   - hash add causing key-shifts of existing keys in the table
> 
> - hash lookup on non-existing keys with:
>   - hash add causing NO key-shifts of existing keys in the table
>   - hash add causing key-shifts of existing keys in the table
> 
> - hash lookup on keys likely to be on shift-path with:
>   - multiple writers causing key-shifts of existing keys in the table
> 
> Signed-off-by: Dharmik Thakkar <dharmik.thakkar at arm.com>
> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli at arm.com>
> Reviewed-by: Gavin Hu <gavin.hu at arm.com>
> Reviewed-by: Yipeng Wang <yipeng1.wang at intel.com>
> ---
>  test/test/Makefile                 |    1 +
>  test/test/meson.build              |    1 +
>  test/test/test_hash_readwrite_lf.c | 1220 ++++++++++++++++++++++++++++++++++++
>  3 files changed, 1222 insertions(+)
>  create mode 100644 test/test/test_hash_readwrite_lf.c
> 
> diff --git a/test/test/Makefile b/test/test/Makefile
> index 8c347e4..1b5c070 100644
> --- a/test/test/Makefile
> +++ b/test/test/Makefile
> @@ -116,6 +116,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_HASH) += test_hash_functions.c
>  SRCS-$(CONFIG_RTE_LIBRTE_HASH) += test_hash_scaling.c
>  SRCS-$(CONFIG_RTE_LIBRTE_HASH) += test_hash_multiwriter.c
>  SRCS-$(CONFIG_RTE_LIBRTE_HASH) += test_hash_readwrite.c
> +SRCS-$(CONFIG_RTE_LIBRTE_HASH) += test_hash_readwrite_lf.c
>  
>  SRCS-$(CONFIG_RTE_LIBRTE_LPM) += test_lpm.c
>  SRCS-$(CONFIG_RTE_LIBRTE_LPM) += test_lpm_perf.c
> diff --git a/test/test/meson.build b/test/test/meson.build
> index 90d6607..d352b94 100644
> --- a/test/test/meson.build
> +++ b/test/test/meson.build
> @@ -46,6 +46,7 @@ test_sources = files('commands.c',
>  	'test_hash_multiwriter.c',
>  	'test_hash_readwrite.c',
>  	'test_hash_perf.c',
> +	'test_hash_readwrite_lf.c',
>  	'test_hash_scaling.c',
>  	'test_interrupts.c',
>  	'test_kni.c',

Two minor issues I spot, both related:

* You also need to add the test to the list of test names, so that it can be
called using "meson test".

* For running the autotests built using make, a new entry should be added to
autotest_data.py to run this new test case.

/Bruce


More information about the dev mailing list