perf trace: Allow configuring default for perf_event_attr.inherit

I.f. if children should inherit the parent perf_event configuration,
i.e. if we should trace children as well or just the parent.

The default is to follow children, to disable this and have a behaviour
similar to strace, set this config option or use the --no_inherit 'perf
trace' option.

E.g.:

Default:

  # perf config trace.no_inherit
  # trace -e clone,*sleep time sleep 1
     0.000 time/21107 clone(clone_flags: CHILD_CLEARTID|CHILD_SETTID|0x11, newsp: 0, child_tidptr: 0x7f7b8f9ae810) = 21108 (time)
         ? time/21108  ... [continued]: clone()
     0.691 sleep/21108 nanosleep(rqtp: 0x7ffed01d0540, rmtp: 0                               ) = 0
  0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 1988maxresident)k
  0inputs+0outputs (0major+76minor)pagefaults 0swaps
  #

Disable it:

  # trace -e clone,*sleep time sleep 1
     0.000 clone(clone_flags: CHILD_CLEARTID|CHILD_SETTID|0x11, newsp: 0, child_tidptr: 0x7ff41e100810) = 21414 (time)
  0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 1964maxresident)k
  0inputs+0outputs (0major+76minor)pagefaults 0swaps
  #

Notice that since there is just one thread, the "comm/TID" column is
suppressed.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: https://lkml.kernel.org/n/tip-thd8s16pagyza71ufi5vjlan@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 41e0d040
...@@ -529,6 +529,9 @@ trace.*:: ...@@ -529,6 +529,9 @@ trace.*::
activate the 'perf trace' logic that looks for syscall activate the 'perf trace' logic that looks for syscall
pointer contents after the normal tracepoint payload. pointer contents after the normal tracepoint payload.
trace.no_inherit::
Do not follow children threads.
trace.show_duration:: trace.show_duration::
Show syscall duration. Show syscall duration.
......
...@@ -3542,6 +3542,8 @@ static int trace__config(const char *var, const char *value, void *arg) ...@@ -3542,6 +3542,8 @@ static int trace__config(const char *var, const char *value, void *arg)
trace->show_duration = perf_config_bool(var, value); trace->show_duration = perf_config_bool(var, value);
} else if (!strcmp(var, "trace.show_zeros")) { } else if (!strcmp(var, "trace.show_zeros")) {
trace->show_zeros = perf_config_bool(var, value); trace->show_zeros = perf_config_bool(var, value);
} else if (!strcmp(var, "trace.no_inherit")) {
trace->opts.no_inherit = perf_config_bool(var, value);
} }
return err; return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment