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
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.