]> git.baikalelectronics.ru Git - kernel.git/commit
net/mlx5: Dynamically resize flow counters query buffer
authorAvihai Horon <avihaih@nvidia.com>
Thu, 28 Oct 2021 13:03:06 +0000 (16:03 +0300)
committerSaeed Mahameed <saeedm@nvidia.com>
Fri, 3 Dec 2021 00:53:16 +0000 (16:53 -0800)
commit43955229e5bc55c1f08bbc2fbab778a88b799658
tree00f71290ace350221bf521ab32c88eb06cdbab0c
parent401b890989ed751d4182b697e6a92aabac658c61
net/mlx5: Dynamically resize flow counters query buffer

The flow counters bulk query buffer is allocated once during
mlx5_fc_init_stats(). For PFs and VFs this buffer usually takes a little
more than 512KB of memory, which is aligned to the next power of 2, to
1MB. For SFs, this buffer is reduced and takes around 128 Bytes.

The buffer size determines the maximum number of flow counters that
can be queried at a time. Thus, having a bigger buffer can improve
performance for users that need to query many flow counters.

There are cases that don't use many flow counters and don't need a big
buffer (e.g. SFs, VFs). Since this size is critical with large scale,
in these cases the buffer size should be reduced.

In order to reduce memory consumption while maintaining query
performance, change the query buffer's allocation scheme to the
following:
- First allocate the buffer with small initial size.
- If the number of counters surpasses the initial size, resize the
  buffer to the maximum size.

The buffer only grows and isn't shrank, because users with many flow
counters don't care about the buffer size and we don't want to add
resize overhead if the current number of counters drops.

This solution is preferable to the current one, which is less accurate
and only addresses SFs.

Signed-off-by: Avihai Horon <avihaih@nvidia.com>
Reviewed-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/fs_counters.c
include/linux/mlx5/driver.h