* [PATCH 1/2] perf record: Fix sample cgroup & namespace tracking
@ 2024-08-18 21:29 Namhyung Kim
2024-08-18 21:29 ` [PATCH 2/2] perf test: Add cgroup sampling test Namhyung Kim
2024-08-19 15:20 ` [PATCH 1/2] perf record: Fix sample cgroup & namespace tracking Ian Rogers
0 siblings, 2 replies; 5+ messages in thread
From: Namhyung Kim @ 2024-08-18 21:29 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Ian Rogers, Kan Liang
Cc: Jiri Olsa, Adrian Hunter, Peter Zijlstra, Ingo Molnar, LKML,
linux-perf-users
The recent change in perf_tool constification broke the cgroup and/or
namespace tracking by resetting tool fields. It should set the values
after perf_tool__init().
Fixes: cecb1cf154b30 ("perf record: Use perf_tool__init()")
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/builtin-record.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 39367709fd99..adbaf80b398c 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -2374,13 +2374,8 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
signal(SIGTERM, sig_handler);
signal(SIGSEGV, sigsegv_handler);
- if (rec->opts.record_namespaces)
- tool->namespace_events = true;
-
if (rec->opts.record_cgroup) {
-#ifdef HAVE_FILE_HANDLE
- tool->cgroup_events = true;
-#else
+#ifndef HAVE_FILE_HANDLE
pr_err("cgroup tracking is not supported\n");
return -1;
#endif
@@ -2406,6 +2401,8 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
tool->mmap2 = build_id__process_mmap2;
tool->itrace_start = process_timestamp_boundary;
tool->aux = process_timestamp_boundary;
+ tool->namespace_events = rec->opts.record_namespaces;
+ tool->cgroup_events = rec->opts.record_cgroup;
session = perf_session__new(data, tool);
if (IS_ERR(session)) {
pr_err("Perf session creation failed.\n");
--
2.46.0.184.g6999bdac58-goog
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] perf test: Add cgroup sampling test
2024-08-18 21:29 [PATCH 1/2] perf record: Fix sample cgroup & namespace tracking Namhyung Kim
@ 2024-08-18 21:29 ` Namhyung Kim
2024-08-19 15:20 ` Ian Rogers
2024-08-19 15:20 ` [PATCH 1/2] perf record: Fix sample cgroup & namespace tracking Ian Rogers
1 sibling, 1 reply; 5+ messages in thread
From: Namhyung Kim @ 2024-08-18 21:29 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Ian Rogers, Kan Liang
Cc: Jiri Olsa, Adrian Hunter, Peter Zijlstra, Ingo Molnar, LKML,
linux-perf-users
Add it to the record.sh shell test to verify if it tracks cgroup
information correctly. It records with --all-cgroups option can check
if it has PERF_RECORD_CGROUP and the names are not "unknown".
$ sudo ./perf test -vv 95
95: perf record tests:
--- start ---
test child forked, pid 2871922
169c90-169cd0 g test_loop
perf does have symbol 'test_loop'
Basic --per-thread mode test
Basic --per-thread mode test [Success]
Register capture test
Register capture test [Success]
Basic --system-wide mode test
Basic --system-wide mode test [Success]
Basic target workload test
Basic target workload test [Success]
Branch counter test
branch counter feature not supported on all core PMUs (/sys/bus/event_source/devices/cpu) [Skipped]
Cgroup sampling test
Cgroup sampling test [Success]
---- end(0) ----
95: perf record tests : Ok
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/tests/shell/record.sh | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
index 36883b03169f..048078ee2eca 100755
--- a/tools/perf/tests/shell/record.sh
+++ b/tools/perf/tests/shell/record.sh
@@ -206,6 +206,28 @@ test_branch_counter() {
echo "Branch counter test [Success]"
}
+test_cgroup() {
+ echo "Cgroup sampling test"
+ if ! perf record -aB --synth=cgroup --all-cgroups -o "${perfdata}" ${testprog} 2> /dev/null
+ then
+ echo "Cgroup sampling [Skipped not supported]"
+ return
+ fi
+ if ! perf report -i "${perfdata}" -D | grep -q "CGROUP"
+ then
+ echo "Cgroup sampling [Failed missing output]"
+ err=1
+ return
+ fi
+ if ! perf script -i "${perfdata}" -F cgroup | grep -q -v "unknown"
+ then
+ echo "Cgroup sampling [Failed cannot resolve cgroup names]"
+ err=1
+ return
+ fi
+ echo "Cgroup sampling test [Success]"
+}
+
# raise the limit of file descriptors to minimum
if [[ $default_fd_limit -lt $min_fd_limit ]]; then
ulimit -Sn $min_fd_limit
@@ -216,6 +238,7 @@ test_register_capture
test_system_wide
test_workload
test_branch_counter
+test_cgroup
# restore the default value
ulimit -Sn $default_fd_limit
--
2.46.0.184.g6999bdac58-goog
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] perf record: Fix sample cgroup & namespace tracking
2024-08-18 21:29 [PATCH 1/2] perf record: Fix sample cgroup & namespace tracking Namhyung Kim
2024-08-18 21:29 ` [PATCH 2/2] perf test: Add cgroup sampling test Namhyung Kim
@ 2024-08-19 15:20 ` Ian Rogers
2024-08-19 19:32 ` Arnaldo Carvalho de Melo
1 sibling, 1 reply; 5+ messages in thread
From: Ian Rogers @ 2024-08-19 15:20 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Kan Liang, Jiri Olsa, Adrian Hunter,
Peter Zijlstra, Ingo Molnar, LKML, linux-perf-users
On Sun, Aug 18, 2024 at 2:29 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> The recent change in perf_tool constification broke the cgroup and/or
> namespace tracking by resetting tool fields. It should set the values
> after perf_tool__init().
>
> Fixes: cecb1cf154b30 ("perf record: Use perf_tool__init()")
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Reviewed-by: Ian Rogers <irogers@google.com>
Thanks,
Ian
> ---
> tools/perf/builtin-record.c | 9 +++------
> 1 file changed, 3 insertions(+), 6 deletions(-)
>
> diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
> index 39367709fd99..adbaf80b398c 100644
> --- a/tools/perf/builtin-record.c
> +++ b/tools/perf/builtin-record.c
> @@ -2374,13 +2374,8 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
> signal(SIGTERM, sig_handler);
> signal(SIGSEGV, sigsegv_handler);
>
> - if (rec->opts.record_namespaces)
> - tool->namespace_events = true;
> -
> if (rec->opts.record_cgroup) {
> -#ifdef HAVE_FILE_HANDLE
> - tool->cgroup_events = true;
> -#else
> +#ifndef HAVE_FILE_HANDLE
> pr_err("cgroup tracking is not supported\n");
> return -1;
> #endif
> @@ -2406,6 +2401,8 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
> tool->mmap2 = build_id__process_mmap2;
> tool->itrace_start = process_timestamp_boundary;
> tool->aux = process_timestamp_boundary;
> + tool->namespace_events = rec->opts.record_namespaces;
> + tool->cgroup_events = rec->opts.record_cgroup;
> session = perf_session__new(data, tool);
> if (IS_ERR(session)) {
> pr_err("Perf session creation failed.\n");
> --
> 2.46.0.184.g6999bdac58-goog
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] perf test: Add cgroup sampling test
2024-08-18 21:29 ` [PATCH 2/2] perf test: Add cgroup sampling test Namhyung Kim
@ 2024-08-19 15:20 ` Ian Rogers
0 siblings, 0 replies; 5+ messages in thread
From: Ian Rogers @ 2024-08-19 15:20 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Kan Liang, Jiri Olsa, Adrian Hunter,
Peter Zijlstra, Ingo Molnar, LKML, linux-perf-users
On Sun, Aug 18, 2024 at 2:29 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> Add it to the record.sh shell test to verify if it tracks cgroup
> information correctly. It records with --all-cgroups option can check
> if it has PERF_RECORD_CGROUP and the names are not "unknown".
>
> $ sudo ./perf test -vv 95
> 95: perf record tests:
> --- start ---
> test child forked, pid 2871922
> 169c90-169cd0 g test_loop
> perf does have symbol 'test_loop'
> Basic --per-thread mode test
> Basic --per-thread mode test [Success]
> Register capture test
> Register capture test [Success]
> Basic --system-wide mode test
> Basic --system-wide mode test [Success]
> Basic target workload test
> Basic target workload test [Success]
> Branch counter test
> branch counter feature not supported on all core PMUs (/sys/bus/event_source/devices/cpu) [Skipped]
> Cgroup sampling test
> Cgroup sampling test [Success]
> ---- end(0) ----
> 95: perf record tests : Ok
>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Reviewed-by: Ian Rogers <irogers@google.com>
Thanks,
Ian
> ---
> tools/perf/tests/shell/record.sh | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
> index 36883b03169f..048078ee2eca 100755
> --- a/tools/perf/tests/shell/record.sh
> +++ b/tools/perf/tests/shell/record.sh
> @@ -206,6 +206,28 @@ test_branch_counter() {
> echo "Branch counter test [Success]"
> }
>
> +test_cgroup() {
> + echo "Cgroup sampling test"
> + if ! perf record -aB --synth=cgroup --all-cgroups -o "${perfdata}" ${testprog} 2> /dev/null
> + then
> + echo "Cgroup sampling [Skipped not supported]"
> + return
> + fi
> + if ! perf report -i "${perfdata}" -D | grep -q "CGROUP"
> + then
> + echo "Cgroup sampling [Failed missing output]"
> + err=1
> + return
> + fi
> + if ! perf script -i "${perfdata}" -F cgroup | grep -q -v "unknown"
> + then
> + echo "Cgroup sampling [Failed cannot resolve cgroup names]"
> + err=1
> + return
> + fi
> + echo "Cgroup sampling test [Success]"
> +}
> +
> # raise the limit of file descriptors to minimum
> if [[ $default_fd_limit -lt $min_fd_limit ]]; then
> ulimit -Sn $min_fd_limit
> @@ -216,6 +238,7 @@ test_register_capture
> test_system_wide
> test_workload
> test_branch_counter
> +test_cgroup
>
> # restore the default value
> ulimit -Sn $default_fd_limit
> --
> 2.46.0.184.g6999bdac58-goog
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] perf record: Fix sample cgroup & namespace tracking
2024-08-19 15:20 ` [PATCH 1/2] perf record: Fix sample cgroup & namespace tracking Ian Rogers
@ 2024-08-19 19:32 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 5+ messages in thread
From: Arnaldo Carvalho de Melo @ 2024-08-19 19:32 UTC (permalink / raw)
To: Ian Rogers
Cc: Namhyung Kim, Kan Liang, Jiri Olsa, Adrian Hunter, Peter Zijlstra,
Ingo Molnar, LKML, linux-perf-users
On Mon, Aug 19, 2024 at 08:20:26AM -0700, Ian Rogers wrote:
> On Sun, Aug 18, 2024 at 2:29 PM Namhyung Kim <namhyung@kernel.org> wrote:
> >
> > The recent change in perf_tool constification broke the cgroup and/or
> > namespace tracking by resetting tool fields. It should set the values
> > after perf_tool__init().
> >
> > Fixes: cecb1cf154b30 ("perf record: Use perf_tool__init()")
> > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
>
> Reviewed-by: Ian Rogers <irogers@google.com>
Thanks, applied to perf-tools-next,
- Arnaldo
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-08-19 19:32 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-18 21:29 [PATCH 1/2] perf record: Fix sample cgroup & namespace tracking Namhyung Kim
2024-08-18 21:29 ` [PATCH 2/2] perf test: Add cgroup sampling test Namhyung Kim
2024-08-19 15:20 ` Ian Rogers
2024-08-19 15:20 ` [PATCH 1/2] perf record: Fix sample cgroup & namespace tracking Ian Rogers
2024-08-19 19:32 ` Arnaldo Carvalho de Melo
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.