• A
    net/mlx5: Dynamically resize flow counters query buffer · b247f32a
    Avihai Horon 提交于
    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: NAvihai Horon <avihaih@nvidia.com>
    Reviewed-by: NMark Bloch <mbloch@nvidia.com>
    Signed-off-by: NSaeed Mahameed <saeedm@nvidia.com>
    b247f32a
driver.h 32.5 KB