mbox series

[v6,00/26] net/mlx5: insertion rate optimization

Message ID 20210713084500.19964-1-suanmingm@nvidia.com (mailing list archive)
Headers
Series net/mlx5: insertion rate optimization |

Message

Suanming Mou July 13, 2021, 8:44 a.m. UTC
  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(-)
  

Comments

Raslan Darawsheh July 13, 2021, 3:18 p.m. UTC | #1
Hi,

> -----Original Message-----
> From: Suanming Mou <suanmingm@nvidia.com>
> Sent: Tuesday, July 13, 2021 11:45 AM
> To: Slava Ovsiienko <viacheslavo@nvidia.com>; Matan Azrad
> <matan@nvidia.com>
> Cc: Raslan Darawsheh <rasland@nvidia.com>; Ori Kam <orika@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