Re: [PATCH v2] perf evlist: Warn when 'sleep' workload is used without system-wide (-a) option
Namhyung Kim <[email protected]>
| Newsgroups | org.kernel.vger.linux-perf-users,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Wed, Aug 05, 2026 at 09:14:14PM -0700, Ian Rogers wrote: > 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 <[email protected]> > --- > tools/perf/util/evlist.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c > index eb7c0d7be064..b3dd097fbb2c 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 (argv && argv[0] && target && target__none(target)) { As I read the code, argv and target should be provided. So the condition simply can be target__none(). I'll make the change. > + 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); Now it's not just the system-wide option, but I guess it's most likey what users want. I hope this would improve UX of the tool a bit. :) Thanks, Namhyung > + } > + } > + > evlist__set_workload_cork_fd(evlist, -1); > > if (pipe(child_ready_pipe) < 0) { > -- > 2.55.0.629.g250fe7f194-goog >