070316d01d
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>
39 lines
983 B
C
39 lines
983 B
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright 2020 Mellanox Technologies, Ltd
|
|
*/
|
|
|
|
#define FLOW_ITEM_MASK(_x) (UINT64_C(1) << _x)
|
|
#define FLOW_ACTION_MASK(_x) (UINT64_C(1) << _x)
|
|
#define FLOW_ATTR_MASK(_x) (UINT64_C(1) << _x)
|
|
#define GET_RSS_HF() (ETH_RSS_IP | ETH_RSS_TCP)
|
|
|
|
/* Configuration */
|
|
#define RXQ_NUM 4
|
|
#define TXQ_NUM 4
|
|
#define TOTAL_MBUF_NUM 32000
|
|
#define MBUF_SIZE 2048
|
|
#define MBUF_CACHE_SIZE 512
|
|
#define NR_RXD 256
|
|
#define NR_TXD 256
|
|
#define MAX_PORTS 64
|
|
|
|
/* This is used for encap/decap & header modify actions.
|
|
* When it's 1: it means all actions have fixed values.
|
|
* When it's 0: it means all actions will have different values.
|
|
*/
|
|
#define FIXED_VALUES 1
|
|
|
|
/* Items/Actions parameters */
|
|
#define JUMP_ACTION_TABLE 2
|
|
#define VLAN_VALUE 1
|
|
#define VNI_VALUE 1
|
|
#define META_DATA 1
|
|
#define TAG_INDEX 0
|
|
#define PORT_ID_DST 1
|
|
#define TEID_VALUE 1
|
|
|
|
/* Flow items/acctions max size */
|
|
#define MAX_ITEMS_NUM 32
|
|
#define MAX_ACTIONS_NUM 32
|
|
#define MAX_ATTRS_NUM 16
|