From: Jiri Olsa <jolsa@kernel.org>
To: Oleg Nesterov <oleg@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>
Cc: bpf@vger.kernel.org, Martin KaFai Lau <kafai@fb.com>,
Song Liu <songliubraving@fb.com>, Yonghong Song <yhs@fb.com>,
John Fastabend <john.fastabend@gmail.com>,
KP Singh <kpsingh@chromium.org>,
Stanislav Fomichev <sdf@fomichev.me>, Hao Luo <haoluo@google.com>,
Steven Rostedt <rostedt@goodmis.org>,
Masami Hiramatsu <mhiramat@kernel.org>,
linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org
Subject: [PATCHv6 bpf-next 14/16] selftests/bpf: Scale down uprobe multi consumer test
Date: Thu, 10 Oct 2024 22:09:55 +0200 [thread overview]
Message-ID: <20241010200957.2750179-15-jolsa@kernel.org> (raw)
In-Reply-To: <20241010200957.2750179-1-jolsa@kernel.org>
We have currently 2 uprobes and 2 uretprobes and we are about
to add sessions uprobes in following change, which makes the
test time unsuitable for CI even with threads.
It's enough for the test to have just 1 uprobe and 1 uretprobe.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
.../bpf/prog_tests/uprobe_multi_test.c | 57 ++++++++-----------
.../bpf/progs/uprobe_multi_consumers.c | 16 +-----
2 files changed, 25 insertions(+), 48 deletions(-)
diff --git a/tools/testing/selftests/bpf/prog_tests/uprobe_multi_test.c b/tools/testing/selftests/bpf/prog_tests/uprobe_multi_test.c
index 7e0228f8fcfc..2effe4d693b4 100644
--- a/tools/testing/selftests/bpf/prog_tests/uprobe_multi_test.c
+++ b/tools/testing/selftests/bpf/prog_tests/uprobe_multi_test.c
@@ -761,10 +761,6 @@ get_program(struct uprobe_multi_consumers *skel, int prog)
return skel->progs.uprobe_0;
case 1:
return skel->progs.uprobe_1;
- case 2:
- return skel->progs.uprobe_2;
- case 3:
- return skel->progs.uprobe_3;
default:
ASSERT_FAIL("get_program");
return NULL;
@@ -779,10 +775,6 @@ get_link(struct uprobe_multi_consumers *skel, int link)
return &skel->links.uprobe_0;
case 1:
return &skel->links.uprobe_1;
- case 2:
- return &skel->links.uprobe_2;
- case 3:
- return &skel->links.uprobe_3;
default:
ASSERT_FAIL("get_link");
return NULL;
@@ -799,10 +791,10 @@ static int uprobe_attach(struct uprobe_multi_consumers *skel, int idx)
return -1;
/*
- * bit/prog: 0,1 uprobe entry
- * bit/prog: 2,3 uprobe return
+ * bit/prog: 0 uprobe entry
+ * bit/prog: 1 uprobe return
*/
- opts.retprobe = idx == 2 || idx == 3;
+ opts.retprobe = idx == 1;
*link = bpf_program__attach_uprobe_multi(prog, 0, "/proc/self/exe",
"uprobe_consumer_test",
@@ -832,7 +824,7 @@ uprobe_consumer_test(struct uprobe_multi_consumers *skel,
int idx;
/* detach uprobe for each unset programs in 'before' state ... */
- for (idx = 0; idx < 4; idx++) {
+ for (idx = 0; idx < 1; idx++) {
if (test_bit(idx, before) && !test_bit(idx, after))
uprobe_detach(skel, idx);
}
@@ -855,7 +847,7 @@ static int consumer_test(struct uprobe_multi_consumers *skel,
printf("consumer_test before %lu after %lu\n", before, after);
/* 'before' is each, we attach uprobe for every set idx */
- for (idx = 0; idx < 4; idx++) {
+ for (idx = 0; idx < 1; idx++) {
if (test_bit(idx, before)) {
if (!ASSERT_OK(uprobe_attach(skel, idx), "uprobe_attach_before"))
goto cleanup;
@@ -866,18 +858,18 @@ static int consumer_test(struct uprobe_multi_consumers *skel,
if (!ASSERT_EQ(err, 0, "uprobe_consumer_test"))
goto cleanup;
- for (idx = 0; idx < 4; idx++) {
+ for (idx = 0; idx < 1; idx++) {
const char *fmt = "BUG";
__u64 val = 0;
- if (idx < 2) {
+ if (idx == 0) {
/*
* uprobe entry
* +1 if define in 'before'
*/
if (test_bit(idx, before))
val++;
- fmt = "prog 0/1: uprobe";
+ fmt = "prog 0: uprobe";
} else {
/*
* to trigger uretprobe consumer, the uretprobe needs to be installed,
@@ -885,11 +877,11 @@ static int consumer_test(struct uprobe_multi_consumers *skel,
*
* idxs: 2/3 uprobe return in 'installed' mask
*/
- unsigned long had_uretprobes = before & 0b1100; /* is uretprobe installed */
+ unsigned long had_uretprobes = before & 0b10; /* is uretprobe installed */
if (had_uretprobes && test_bit(idx, after))
val++;
- fmt = "idx 2/3: uretprobe";
+ fmt = "prog 1: uretprobe";
}
if (!ASSERT_EQ(skel->bss->uprobe_result[idx], val, fmt))
@@ -900,7 +892,7 @@ static int consumer_test(struct uprobe_multi_consumers *skel,
ret = 0;
cleanup:
- for (idx = 0; idx < 4; idx++)
+ for (idx = 0; idx < 1; idx++)
uprobe_detach(skel, idx);
return ret;
}
@@ -918,42 +910,41 @@ static void test_consumers(void)
* The idea of this test is to try all possible combinations of
* uprobes consumers attached on single function.
*
- * - 2 uprobe entry consumer
- * - 2 uprobe exit consumers
+ * - 1 uprobe entry consumer
+ * - 1 uprobe exit consumer
*
- * The test uses 4 uprobes attached on single function, but that
- * translates into single uprobe with 4 consumers in kernel.
+ * The test uses 2 uprobes attached on single function, but that
+ * translates into single uprobe with 2 consumers in kernel.
*
* The before/after values present the state of attached consumers
* before and after the probed function:
*
- * bit/prog 0,1 : uprobe entry
- * bit/prog 2,3 : uprobe return
+ * bit/prog 0 : uprobe entry
+ * bit/prog 1 : uprobe return
*
* For example for:
*
- * before = 0b0101
- * after = 0b0110
+ * before = 0b01
+ * after = 0b10
*
* it means that before we call 'uprobe_consumer_test' we attach
* uprobes defined in 'before' value:
*
- * - bit/prog 0: uprobe entry
- * - bit/prog 2: uprobe return
+ * - bit/prog 1: uprobe entry
*
* uprobe_consumer_test is called and inside it we attach and detach
* uprobes based on 'after' value:
*
- * - bit/prog 0: stays untouched
- * - bit/prog 2: uprobe return is detached
+ * - bit/prog 0: is detached
+ * - bit/prog 1: is attached
*
* uprobe_consumer_test returns and we check counters values increased
* by bpf programs on each uprobe to match the expected count based on
* before/after bits.
*/
- for (before = 0; before < 16; before++) {
- for (after = 0; after < 16; after++)
+ for (before = 0; before < 4; before++) {
+ for (after = 0; after < 4; after++)
if (consumer_test(skel, before, after))
goto out;
}
diff --git a/tools/testing/selftests/bpf/progs/uprobe_multi_consumers.c b/tools/testing/selftests/bpf/progs/uprobe_multi_consumers.c
index 7e0fdcbbd242..1c64d7263911 100644
--- a/tools/testing/selftests/bpf/progs/uprobe_multi_consumers.c
+++ b/tools/testing/selftests/bpf/progs/uprobe_multi_consumers.c
@@ -8,7 +8,7 @@
char _license[] SEC("license") = "GPL";
-__u64 uprobe_result[4];
+__u64 uprobe_result[2];
SEC("uprobe.multi")
int uprobe_0(struct pt_regs *ctx)
@@ -23,17 +23,3 @@ int uprobe_1(struct pt_regs *ctx)
uprobe_result[1]++;
return 0;
}
-
-SEC("uprobe.multi")
-int uprobe_2(struct pt_regs *ctx)
-{
- uprobe_result[2]++;
- return 0;
-}
-
-SEC("uprobe.multi")
-int uprobe_3(struct pt_regs *ctx)
-{
- uprobe_result[3]++;
- return 0;
-}
--
2.46.2
next prev parent reply other threads:[~2024-10-10 20:12 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-10 20:09 [PATCHv6 bpf-next,perf/core 00/16] uprobe, bpf: Add session support Jiri Olsa
2024-10-10 20:09 ` [PATCHv6 perf/core 01/16] uprobe: Add data pointer to consumer handlers Jiri Olsa
2024-10-15 22:24 ` Masami Hiramatsu
2024-10-16 6:41 ` Jiri Olsa
2024-10-10 20:09 ` [PATCHv6 perf/core 02/16] uprobe: Add support for session consumer Jiri Olsa
2024-10-11 11:27 ` Oleg Nesterov
2024-10-16 0:07 ` Masami Hiramatsu
2024-10-10 20:09 ` [PATCHv6 bpf-next 03/16] bpf: Allow return values 0 and 1 for kprobe session Jiri Olsa
2024-10-11 2:19 ` Andrii Nakryiko
2024-10-10 20:09 ` [PATCHv6 bpf-next 04/16] bpf: Force uprobe bpf program to always return 0 Jiri Olsa
2024-10-11 2:20 ` Andrii Nakryiko
2024-10-10 20:09 ` [PATCHv6 bpf-next 05/16] bpf: Add support for uprobe multi session attach Jiri Olsa
2024-10-10 20:09 ` [PATCHv6 bpf-next 06/16] bpf: Add support for uprobe multi session context Jiri Olsa
2024-10-10 20:09 ` [PATCHv6 bpf-next 07/16] libbpf: Add support for uprobe multi session attach Jiri Olsa
2024-10-11 2:21 ` Andrii Nakryiko
2024-10-10 20:09 ` [PATCHv6 bpf-next 08/16] selftests/bpf: Add uprobe session test Jiri Olsa
2024-10-11 2:22 ` Andrii Nakryiko
2024-10-10 20:09 ` [PATCHv6 bpf-next 09/16] selftests/bpf: Add uprobe session cookie test Jiri Olsa
2024-10-10 20:09 ` [PATCHv6 bpf-next 10/16] selftests/bpf: Add uprobe session recursive test Jiri Olsa
2024-10-10 20:09 ` [PATCHv6 bpf-next 11/16] selftests/bpf: Add uprobe session verifier test for return value Jiri Olsa
2024-10-11 2:23 ` Andrii Nakryiko
2024-10-10 20:09 ` [PATCHv6 bpf-next 12/16] selftests/bpf: Add kprobe " Jiri Olsa
2024-10-11 2:24 ` Andrii Nakryiko
2024-10-10 20:09 ` [PATCHv6 bpf-next 13/16] selftests/bpf: Add uprobe session single consumer test Jiri Olsa
2024-10-11 2:25 ` Andrii Nakryiko
2024-10-11 11:33 ` Jiri Olsa
2024-10-10 20:09 ` Jiri Olsa [this message]
2024-10-11 2:27 ` [PATCHv6 bpf-next 14/16] selftests/bpf: Scale down uprobe multi " Andrii Nakryiko
2024-10-11 11:36 ` Jiri Olsa
2024-10-10 20:09 ` [PATCHv6 bpf-next 15/16] selftests/bpf: Add uprobe sessions to " Jiri Olsa
2024-10-11 2:30 ` Andrii Nakryiko
2024-10-11 11:36 ` Jiri Olsa
2024-10-10 20:09 ` [PATCHv6 bpf-next 16/16] selftests/bpf: Add threads " Jiri Olsa
2024-10-11 2:35 ` Andrii Nakryiko
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=20241010200957.2750179-15-jolsa@kernel.org \
--to=jolsa@kernel.org \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=kafai@fb.com \
--cc=kpsingh@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=sdf@fomichev.me \
--cc=songliubraving@fb.com \
--cc=yhs@fb.com \
/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;
as well as URLs for NNTP newsgroup(s).