From: Eduard Zingerman <eddyz87@gmail.com>
To: bpf@vger.kernel.org, ast@kernel.org
Cc: andrii@kernel.org, daniel@iogearbox.net, martin.lau@linux.dev,
kernel-team@fb.com, yonghong.song@linux.dev,
Eduard Zingerman <eddyz87@gmail.com>
Subject: [bpf-next 0/4] selftests/bpf: fix for bpf_signal stalls, watchdog for test_progs
Date: Tue, 12 Nov 2024 03:09:02 -0800 [thread overview]
Message-ID: <20241112110906.3045278-1-eddyz87@gmail.com> (raw)
Test case 'bpf_signal' had been recently reported to stall, both on
the mailing list [1] and CI [2]. The stall is caused by CPU cycles
perf event not being delivered within expected time frame, before test
process enters system call and waits indefinitely.
This patch-set addresses the issue in several ways:
- A watchdog timer is added to test_progs.c runner:
- it prints current sub-test name to stderr if sub-test takes longer
than 10 seconds to finish;
- it terminates process executing sub-test if sub-test takes longer
than 120 seconds to finish.
- The test case is updated to await perf event notification with a
timeout and a few retries, this serves two purposes:
- busy loops longer to increase the time frame for CPU cycles event
generation/delivery;
- makes a timeout, not stall, a worst case scenario.
- The test case is updated to lower frequency of perf events, as high
frequency of such events caused events generation throttling,
which in turn delayed events delivery by amount of time sufficient
to cause test case failure.
Note:
librt pthread-based timer API is used to implement watchdog timer.
I chose this API over SIGALRM because signal handler execution
within test process context was sufficient to trigger perf event
delivery for send_signal/send_signal_nmi_thread_remote test case,
w/o any additional changes. Thus I concluded that SIGALRM based
implementation interferes with tests execution.
[1] https://lore.kernel.org/bpf/CAP01T75OUeE8E-Lw9df84dm8ag2YmHW619f1DmPSVZ5_O89+Bg@mail.gmail.com/
[2] https://github.com/kernel-patches/bpf/actions/runs/11791485271/job/32843996871
Eduard Zingerman (4):
selftests/bpf: watchdog timer for test_progs
selftests/bpf: add read_with_timeout() utility function
selftests/bpf: allow send_signal test to timeout
selftests/bpf: update send_signal to lower perf evemts frequency
tools/testing/selftests/bpf/Makefile | 1 +
tools/testing/selftests/bpf/io_helpers.c | 21 ++++
tools/testing/selftests/bpf/io_helpers.h | 7 ++
.../selftests/bpf/prog_tests/bpf_iter.c | 8 +-
.../testing/selftests/bpf/prog_tests/iters.c | 4 +-
.../selftests/bpf/prog_tests/send_signal.c | 35 +++---
tools/testing/selftests/bpf/test_progs.c | 104 ++++++++++++++++++
tools/testing/selftests/bpf/test_progs.h | 6 +
8 files changed, 166 insertions(+), 20 deletions(-)
create mode 100644 tools/testing/selftests/bpf/io_helpers.c
create mode 100644 tools/testing/selftests/bpf/io_helpers.h
--
2.47.0
next reply other threads:[~2024-11-12 11:09 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-12 11:09 Eduard Zingerman [this message]
2024-11-12 11:09 ` [bpf-next 1/4] selftests/bpf: watchdog timer for test_progs Eduard Zingerman
2024-11-12 11:09 ` [bpf-next 2/4] selftests/bpf: add read_with_timeout() utility function Eduard Zingerman
2024-11-12 11:09 ` [bpf-next 3/4] selftests/bpf: allow send_signal test to timeout Eduard Zingerman
2024-11-12 11:09 ` [bpf-next 4/4] selftests/bpf: update send_signal to lower perf evemts frequency Eduard Zingerman
2024-11-12 22:10 ` [bpf-next 0/4] selftests/bpf: fix for bpf_signal stalls, watchdog for test_progs patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241112110906.3045278-1-eddyz87@gmail.com \
--to=eddyz87@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=kernel-team@fb.com \
--cc=martin.lau@linux.dev \
--cc=yonghong.song@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox