From: Chaitanya S Prakash <ChaitanyaS.Prakash@arm.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>,
Masami Hiramatsu <mhiramat@kernel.org>
Cc: linux-perf-users@vger.kernel.org, anshuman.khandual@arm.com,
james.clark@arm.com
Subject: Re: [PATCH V2 8/8] perf test: Check output of the probe ... --funcs command
Date: Tue, 23 Apr 2024 17:23:55 +0530 [thread overview]
Message-ID: <7d6330bd-5b0a-49d2-83bf-ac1ca11996d0@arm.com> (raw)
In-Reply-To: <ZiAUSxRYTty5uh6m@x1>
On 4/17/24 23:56, Arnaldo Carvalho de Melo wrote:
> On Tue, Apr 09, 2024 at 08:09:02AM +0900, Masami Hiramatsu wrote:
>> On Mon, 8 Apr 2024 11:52:30 +0530
>> Chaitanya S Prakash <ChaitanyaS.Prakash@arm.com> wrote:
>>
>>> From: Chaitanya S Prakash <chaitanyas.prakash@arm.com>
>>>
>>> Test "perf probe of function from different CU" only checks if the perf
>>> command has failed and doesn't test the --funcs output. In the issue
>>> reported in the previous commit, the garbage output of the --funcs
>>> command was being ignored by the test when it could have been caught.
>>>
>>> An additional check to grep for "foo" has been added to test the --funcs
>>> output.
>> Looks good to me.
>>
>> Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
>>> +++ b/tools/perf/tests/shell/test_uprobe_from_different_cu.sh
>>> @@ -77,7 +77,7 @@ gcc -g -Og -flto -c ${temp_dir}/testfile-foo.c -o ${temp_dir}/testfile-foo.o
>>> gcc -g -Og -c ${temp_dir}/testfile-main.c -o ${temp_dir}/testfile-main.o
>>> gcc -g -Og -o ${temp_dir}/testfile ${temp_dir}/testfile-foo.o ${temp_dir}/testfile-main.o
>>>
>>> -perf probe -x ${temp_dir}/testfile --funcs foo
>>> +perf probe -x ${temp_dir}/testfile --funcs foo | grep "foo"
>>> perf probe -x ${temp_dir}/testfile foo
> Have you tested this?
>
> Because:
>
> root@x1:~# perf probe -x /lib64/libc.so.6 malloc | grep malloc || echo failure
> Added new event:
> probe_libc:malloc (on malloc in /usr/lib64/libc.so.6)
>
> You can now use it in all perf tools, such as:
>
> perf record -e probe_libc:malloc -aR sleep 1
>
> failure
> root@x1:~# perf probe -d *:*
> Removed event: probe_libc:malloc
> root@x1:~# perf probe -x /lib64/libc.so.6 malloc |& grep malloc || echo failure
> probe_libc:malloc (on malloc in /usr/lib64/libc.so.6)
> perf record -e probe_libc:malloc -aR sleep 1
> root@x1:~#
>
>
> that plain '| grep "foo"' isn't enough, will always fail, as the output
> isn't sent to stdout, but to stderr, so, with your patch:
>
> root@x1:~# perf test different
> 121: test perf probe of function from different CU : FAILED!
> root@x1:~# set -o vi
> root@x1:~# perf test -v different
> 121: test perf probe of function from different CU:
> --- start ---
> test child forked, pid 938178
> --- Cleaning up ---
> "foo" does not hit any event.
> Error: Failed to delete events.
> ---- end(-1) ----
> 121: test perf probe of function from different CU : FAILED!
> root@x1:~#
>
>
> We need to use '|&' to grep in both stdout and stderr, see how 'perf
> probe' uses stderr:
>
> root@x1:~# perf probe -d *:*
> Removed event: probe_libc:malloc
> root@x1:~# perf probe -x /lib64/libc.so.6 malloc > /dev/null
> Added new event:
> probe_libc:malloc (on malloc in /usr/lib64/libc.so.6)
>
> You can now use it in all perf tools, such as:
>
> perf record -e probe_libc:malloc -aR sleep 1
>
> root@x1:~
>
>
> Using '|&' to grep:
>
> diff --git a/tools/perf/tests/shell/test_uprobe_from_different_cu.sh b/tools/perf/tests/shell/test_uprobe_from_different_cu.sh
> index 82bc774a078a15d5..af8b1fa639f3daa4 100755
> --- a/tools/perf/tests/shell/test_uprobe_from_different_cu.sh
> +++ b/tools/perf/tests/shell/test_uprobe_from_different_cu.sh
> @@ -77,7 +77,7 @@ gcc -g -Og -flto -c ${temp_dir}/testfile-foo.c -o ${temp_dir}/testfile-foo.o
> gcc -g -Og -c ${temp_dir}/testfile-main.c -o ${temp_dir}/testfile-main.o
> gcc -g -Og -o ${temp_dir}/testfile ${temp_dir}/testfile-foo.o ${temp_dir}/testfile-main.o
>
> -perf probe -x ${temp_dir}/testfile --funcs foo | grep "foo"
> +perf probe -x ${temp_dir}/testfile --funcs foo |& grep "foo"
> perf probe -x ${temp_dir}/testfile foo
>
> cleanup
> ⬢[acme@toolbox perf-tools-next]$
>
> root@x1:~# perf test different
> 121: test perf probe of function from different CU : Ok
> root@x1:~# set -o vi
> root@x1:~# perf test -v different
> 121: test perf probe of function from different CU : Ok
> root@x1:~# perf test -vv different
> 121: test perf probe of function from different CU:
> --- start ---
> test child forked, pid 1048947
> Added new event:
> probe_testfile:foo (on foo in /tmp/perf-uprobe-different-cu-sh.5qg9UX2dUJ/testfile)
>
> You can now use it in all perf tools, such as:
>
> perf record -e probe_testfile:foo -aR sleep 1
>
> --- Cleaning up ---
> Removed event: probe_testfile:foo
> ---- end(0) ----
> 121: test perf probe of function from different CU : Ok
> root@x1:~#
>
> I'm amending the patch with this fix.
>
>
> Thanks,
>
> - Arnaldo
Hi Arnaldo, line 80 of the test makes use of the --funcs option with
perf probe, which redirects the output to stdout itself. So this change
might not be required.
[~/workspace/linux/tools/perf]$ sudo ./perf probe -x
/lib/x86_64-linux-gnu/libc.so.6 --funcs malloc | grep malloc || echo failure
malloc
Thanks,
- Chaitanya
>
next prev parent reply other threads:[~2024-04-23 11:54 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-08 6:22 [PATCH V2 0/8] perf tools: Fix test "perf probe of function from different CU" Chaitanya S Prakash
2024-04-08 6:22 ` [PATCH V2 1/8] tools lib: adopt str_has_suffix() from bpftool/gen.c Chaitanya S Prakash
2024-04-08 23:32 ` Masami Hiramatsu
2024-04-11 12:15 ` Chaitanya S Prakash
2024-04-11 15:41 ` Arnaldo Carvalho de Melo
2024-04-08 6:22 ` [PATCH V2 2/8] perf util: Delete ends_with() and replace its use with str_has_suffix() Chaitanya S Prakash
2024-04-08 6:22 ` [PATCH V2 3/8] perf util: Replace an instance of strtailcmp() by str_has_suffix() Chaitanya S Prakash
2024-04-08 23:20 ` Masami Hiramatsu
2024-04-08 6:22 ` [PATCH V2 4/8] tools lib: Adopt str_has_prefix() from kernel Chaitanya S Prakash
2024-04-08 23:33 ` Masami Hiramatsu
2024-04-08 6:22 ` [PATCH V2 5/8] tools: Delete strstarts() and replace its usage with str_has_prefix() Chaitanya S Prakash
2024-04-18 7:32 ` kernel test robot
2024-04-08 6:22 ` [PATCH V2 6/8] perf tools: Enable configs required for test_uprobe_from_different_cu.sh Chaitanya S Prakash
2024-04-08 23:11 ` Masami Hiramatsu
2024-04-16 21:19 ` Arnaldo Carvalho de Melo
2024-04-08 6:22 ` [PATCH V2 7/8] perf tools: Only treat files as map files when they have the extension .map Chaitanya S Prakash
2024-04-09 10:21 ` James Clark
2024-04-08 6:22 ` [PATCH V2 8/8] perf test: Check output of the probe ... --funcs command Chaitanya S Prakash
2024-04-08 23:09 ` Masami Hiramatsu
2024-04-16 21:22 ` Arnaldo Carvalho de Melo
2024-04-17 18:26 ` Arnaldo Carvalho de Melo
2024-04-23 11:53 ` Chaitanya S Prakash [this message]
2024-04-09 5:32 ` [PATCH V2 0/8] perf tools: Fix test "perf probe of function from different CU" Alexey Dobriyan
2024-04-11 12:10 ` Chaitanya S Prakash
2024-04-14 11:41 ` Alexey Dobriyan
2024-04-17 13:24 ` James Clark
2024-04-17 13:39 ` Arnaldo Carvalho de Melo
2024-04-10 3:34 ` Chaitanya S Prakash
2024-04-11 18:49 ` Arnaldo Carvalho de Melo
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=7d6330bd-5b0a-49d2-83bf-ac1ca11996d0@arm.com \
--to=chaitanyas.prakash@arm.com \
--cc=acme@kernel.org \
--cc=anshuman.khandual@arm.com \
--cc=james.clark@arm.com \
--cc=linux-perf-users@vger.kernel.org \
--cc=mhiramat@kernel.org \
/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 read-only IMAP folder(s) and NNTP newsgroup(s).