diff options
| author | Ian Rogers <irogers@google.com> | 2026-08-05 21:14:14 -0700 |
|---|---|---|
| committer | Namhyung Kim <namhyung@kernel.org> | 2026-08-17 16:04:06 -0700 |
| commit | 78148c85297024ffe7a709acb7cc4fc907271176 (patch) | |
| tree | 72c0df5108a2a3efc3ec9e1b6ba0b90f6e59fbfa /tools/perf | |
| parent | 16e113d46d29eb8bf13a5a58de6fb38f24f1aec2 (diff) | |
| download | linux-next-78148c85297024ffe7a709acb7cc4fc907271176.tar.gz linux-next-78148c85297024ffe7a709acb7cc4fc907271176.zip | |
perf evlist: Warn when 'sleep' workload is used without system-wide (-a) option
A common mistake when trying to record system-wide profiles for a given
duration is running commands like 'perf record sleep 1' or 'perf stat
sleep 1' without passing '-a' / '--all-cpus'. When '-a' is omitted, perf
defaults to per-process monitoring of the sleep process itself, which
does not collect system-wide activity and records very few events.
Add a warning in evlist__prepare_workload() when the workload executable
is 'sleep' and system-wide mode is not enabled.
Assisted-by: Antigravity:gemini-3.6-flash
Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Diffstat (limited to 'tools/perf')
| -rw-r--r-- | tools/perf/util/evlist.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index eb7c0d7be064..c3d784727810 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -11,6 +11,7 @@ #include <inttypes.h> #include <signal.h> #include <stdlib.h> +#include <string.h> #include <fcntl.h> #include <linux/bitops.h> @@ -1562,6 +1563,20 @@ int evlist__prepare_workload(struct evlist *evlist, struct target *target, const int child_ready_pipe[2], go_pipe[2]; char bf; + if (target__none(target)) { + const char *cmd = strrchr(argv[0], '/'); + + if (cmd) + cmd++; + else + cmd = argv[0]; + + if (!strcmp(cmd, "sleep")) { + ui__warning("workload '%s' specified without the system-wide (-a) option\n", + cmd); + } + } + evlist__set_workload_cork_fd(evlist, -1); if (pipe(child_ready_pipe) < 0) { |
