Hi, > -----Original Message----- > From: Suanming Mou <suanmi...@nvidia.com> > Sent: Tuesday, July 13, 2021 11:45 AM > To: Slava Ovsiienko <viachesl...@nvidia.com>; Matan Azrad > <ma...@nvidia.com> > Cc: Raslan Darawsheh <rasl...@nvidia.com>; Ori Kam <or...@nvidia.com>; > dev@dpdk.org > Subject: [PATCH v6 00/26] net/mlx5: insertion rate optimization > > This patch series optimize the flow insertion rate with adding local cache to > index pool and list. > > For object which wants efficient index allocate and free, local cache will be > very helpful. > > For index pool, two level cache is added, one as local and another as global. > The global cache is able to save all the allocated index. That means all the > allocated index will not be freed. Once the local cache is full, the extra > index > will be flushed to the global cache. Once local cache is empty, first try to > fetch > more index from global, if global is still empty, allocate new trunk and more > index. > > For list, sub local core list is introduced. The allocated objects will be > added > and released only from local list without any locks. > Only the objects need to be shared will be synced from global list. > > --- > > v6: fix compilation issue in "common/mlx5: add list lcore share" patch. > > v5: code rebase to the latest version. > > v4: > - split the list utility to commom patch > - fix one ipool crash issue in mlx5_ipool_get_cache() function. > - reorganize the common and mlx5 patches. > - split the doc update to an individual patch. > - update and rebase to the latest version. > > v3: fix Windows compilation issue > > v2: add the list per-lcore cache optimization > > --- > > Matan Azrad (9): > net/mlx5: optimize modify header action memory > net/mlx5: remove cache term from the list utility > net/mlx5: add per lcore cache to the list utility > net/mlx5: minimize list critical sections > net/mlx5: manage list cache entries release > net/mlx5: relax the list utility atomic operations > net/mlx5: allocate list memory by the create API > common/mlx5: add per-lcore cache to hash list utility > net/mlx5: move modify header allocator to ipool > > Suanming Mou (17): > net/mlx5: allow limiting the index pool maximum index > net/mlx5: add indexed pool local cache > net/mlx5: add index pool foreach define > net/mlx5: support index pool non-lcore operations > net/mlx5: replace flow list with index pool > common/mlx5: move list utility to common > common/mlx5: add list lcore share > common/mlx5: call list callbacks with context > common/mlx5: allocate cache list memory individually > common/mlx5: optimize cache list object memory > common/mlx5: support list non-lcore operations > net/mlx5: adjust the hash bucket size > net/mlx5: enable index pool per-core cache > net/mlx5: optimize hash list table allocate on demand > net/mlx5: change memory release configuration > net/mlx5: optimize Rx queue match > doc: add mlx5 multiple-thread flow insertion optimization > > doc/guides/nics/mlx5.rst | 5 + > doc/guides/rel_notes/release_21_08.rst | 1 + > drivers/common/mlx5/linux/mlx5_glue.h | 1 + > drivers/common/mlx5/mlx5_common.h | 2 + > drivers/common/mlx5/mlx5_common_utils.c | 569 ++++++++--- > drivers/common/mlx5/mlx5_common_utils.h | 294 ++++-- > drivers/common/mlx5/version.map | 7 + > drivers/net/mlx5/linux/mlx5_flow_os.h | 3 +- > drivers/net/mlx5/linux/mlx5_os.c | 209 ++-- > drivers/net/mlx5/mlx5.c | 34 +- > drivers/net/mlx5/mlx5.h | 46 +- > drivers/net/mlx5/mlx5_defs.h | 12 +- > drivers/net/mlx5/mlx5_flow.c | 308 +++--- > drivers/net/mlx5/mlx5_flow.h | 209 ++-- > drivers/net/mlx5/mlx5_flow_dv.c | 1206 +++++++++++++++-------- > drivers/net/mlx5/mlx5_rx.h | 14 +- > drivers/net/mlx5/mlx5_rxq.c | 136 ++- > drivers/net/mlx5/mlx5_trigger.c | 8 +- > drivers/net/mlx5/mlx5_utils.c | 627 ++++++++---- > drivers/net/mlx5/mlx5_utils.h | 255 ++--- > drivers/net/mlx5/windows/mlx5_os.c | 11 +- > 21 files changed, 2543 insertions(+), 1414 deletions(-) > > -- > 2.25.1
Series applied to next-net-mlx, Kindest regards, Raslan Darawsheh