app/flow-perf: add multi-core rule insertion and deletion
authorWisam Jaddo <wisamm@nvidia.com>
Thu, 26 Nov 2020 11:15:41 +0000 (13:15 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 7 Jan 2021 14:14:02 +0000 (15:14 +0100)
commit070316d01d3e354154abec9b0eb4b8d2990c872b
tree6491e2ea7e503703e1325ae17733bf5047b37966
parent8ccb4e3ef15e1e786ecb96e84b21128a0fad518b
app/flow-perf: add multi-core rule insertion and deletion

One of the ways to increase the insertion/deletion rate is to use
multi-threaded insertion/deletion. Thus it's needed to have support
for testing and measure those rates using flow-perf application.

Now we generate cores and distribute all flows to those cores,
and start inserting/deleting in parallel.

The app now receive the cores count to use from command line option,
then it distribute the rte_flow rules evenly between the cores, and
start inserting/deleting. Each worker will report it's own results,
and in the end the MAIN worker will report the total results for all
cores.

The total results are calculated using RULES_COUNT divided over
max time used between all cores.

Also this touches the memory area, since inserting using multiple cores
in same time the pre solution for memory is not valid, thus now we save
memory before and after each allocation for all cores. In the end we
pick the min pre memory and the max post memory from all cores.

The difference between those values represent the total memory consumed
by the total rte_flow rules from all cores, and then report the total
size of single rte_flow in byte for each port.

How to use this feature:
--cores=N

Where 1 =< N <= RTE_MAX_LCORE

Signed-off-by: Wisam Jaddo <wisamm@nvidia.com>
Reviewed-by: Alexander Kozyrev <akozyrev@nvidia.com>
Reviewed-by: Suanming Mou <suanmingm@nvidia.com>
app/test-flow-perf/actions_gen.c
app/test-flow-perf/actions_gen.h
app/test-flow-perf/config.h
app/test-flow-perf/flow_gen.c
app/test-flow-perf/flow_gen.h
app/test-flow-perf/items_gen.c
app/test-flow-perf/items_gen.h
app/test-flow-perf/main.c
doc/guides/tools/flow-perf.rst