mbox series

[bpf-next,0/3] selftests/bpf: Fixes for map_percpu_stats test

Message ID 20231101032455.3808547-1-houtao@huaweicloud.com (mailing list archive)
Headers show
Series selftests/bpf: Fixes for map_percpu_stats test | expand

Message

Hou Tao Nov. 1, 2023, 3:24 a.m. UTC
From: Hou Tao <houtao1@huawei.com>

Hi,

BPF CI failed due to map_percpu_stats_percpu_hash from time to time [1].
It seems that the failure reason is per-cpu bpf memory allocator may not
be able to allocate per-cpu pointer successfully and it can not refill
free llist timely, and bpf_map_update_elem() will return -ENOMEM.

Patch #1 fixes the size of value passed to per-cpu map update API. The
problem was found when fixing the ENOMEM problem, so also post it in
this patchset. Patch #2 & #3 mitigates the ENOMEM problem by retrying
the update operation for non-preallocated per-cpu map.

Please see individual patches for more details. And comments are always
welcome.

Regards,
Tao

[1]: https://github.com/kernel-patches/bpf/actions/runs/6713177520/job/18244865326?pr=5909

Hou Tao (3):
  selftests/bpf: Use value with enough-size when updating per-cpu map
  selftests/bpf: Export map_update_retriable()
  selftsets/bpf: Retry map update for non-preallocated per-cpu map

 .../bpf/map_tests/map_percpu_stats.c          | 39 +++++++++++++++++--
 tools/testing/selftests/bpf/test_maps.c       | 17 +++++---
 tools/testing/selftests/bpf/test_maps.h       |  5 +++
 3 files changed, 53 insertions(+), 8 deletions(-)

Comments

patchwork-bot+netdevbpf@kernel.org Nov. 2, 2023, 4:50 p.m. UTC | #1
Hello:

This series was applied to bpf/bpf-next.git (master)
by Andrii Nakryiko <andrii@kernel.org>:

On Wed,  1 Nov 2023 11:24:52 +0800 you wrote:
> From: Hou Tao <houtao1@huawei.com>
> 
> Hi,
> 
> BPF CI failed due to map_percpu_stats_percpu_hash from time to time [1].
> It seems that the failure reason is per-cpu bpf memory allocator may not
> be able to allocate per-cpu pointer successfully and it can not refill
> free llist timely, and bpf_map_update_elem() will return -ENOMEM.
> 
> [...]

Here is the summary with links:
  - [bpf-next,1/3] selftests/bpf: Use value with enough-size when updating per-cpu map
    https://git.kernel.org/bpf/bpf-next/c/3f1f234e677b
  - [bpf-next,2/3] selftests/bpf: Export map_update_retriable()
    https://git.kernel.org/bpf/bpf-next/c/ff38534e8251
  - [bpf-next,3/3] selftsets/bpf: Retry map update for non-preallocated per-cpu map
    https://git.kernel.org/bpf/bpf-next/c/57688b2a543b

You are awesome, thank you!