summaryrefslogtreecommitdiff
path: root/tools/perf
diff options
context:
space:
mode:
authorIan Rogers <irogers@google.com>2026-08-05 21:14:14 -0700
committerNamhyung Kim <namhyung@kernel.org>2026-08-17 16:04:06 -0700
commit78148c85297024ffe7a709acb7cc4fc907271176 (patch)
tree72c0df5108a2a3efc3ec9e1b6ba0b90f6e59fbfa /tools/perf
parent16e113d46d29eb8bf13a5a58de6fb38f24f1aec2 (diff)
downloadlinux-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.c15
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) {