perf trace: Mark the rlim arg in the prlimit64 and setrlimit syscalls as coming from...
authorArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 10 Sep 2024 13:52:27 +0000 (10:52 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 10 Sep 2024 20:32:46 +0000 (17:32 -0300)
With that it uses the generic BTF based pretty printer:

  root@number:~# perf trace -e prlimit64
       0.000 ( 0.004 ms): :3417020/3417020 prlimit64(resource: NOFILE, old_rlim: 0x7fb8842fe3b0)      = 0
       0.126 ( 0.003 ms): Chroot Helper/3417022 prlimit64(resource: NOFILE, old_rlim: 0x7fb8842fdfd0) = 0
      12.557 ( 0.005 ms): firefox/3417020 prlimit64(resource: STACK, old_rlim: 0x7ffe9ade1b80)        = 0
      26.640 ( 0.006 ms): MainThread/3417020 prlimit64(resource: STACK, old_rlim: 0x7ffe9ade1780)     = 0
      27.553 ( 0.002 ms): Web Content/3417020 prlimit64(resource: AS, old_rlim: 0x7ffe9ade1660)       = 0
      29.405 ( 0.003 ms): Web Content/3417020 prlimit64(resource: NOFILE, old_rlim: 0x7ffe9ade0c80)   = 0
      30.471 ( 0.002 ms): Web Content/3417020 prlimit64(resource: RTTIME, old_rlim: 0x7ffe9ade1370)   = 0
      30.485 ( 0.001 ms): Web Content/3417020 prlimit64(resource: RTTIME, new_rlim: (struct rlimit64){.rlim_cur = (__u64)50000,.rlim_max = (__u64)200000,}) = 0
      31.779 ( 0.001 ms): Web Content/3417020 prlimit64(resource: STACK, old_rlim: 0x7ffe9ade1670)    = 0
  ^Croot@number:~#

Better than before, still needs improvements in the configurability of
the libbpf BTF dumper to get it to the strace output standard.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alan Maguire <alan.maguire@oracle.com>
Cc: Howard Chu <howardchu95@gmail.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/lkml/ZuBQI-f8CGpuhIdH@x1
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-trace.c

index ed4c5e637e24eed019c8d1d61c61f942b0374ead..838e179a2573d4de04154ab4d9394e013cc9ebe6 100644 (file)
@@ -1309,7 +1309,8 @@ static const struct syscall_fmt syscall_fmts[] = {
        { .name     = "pread", .alias = "pread64", },
        { .name     = "preadv", .alias = "pread", },
        { .name     = "prlimit64",
-         .arg = { [1] = STRARRAY(resource, rlimit_resources), }, },
+         .arg = { [1] = STRARRAY(resource, rlimit_resources),
+                  [2] = { .from_user = true /* new_rlim */, }, }, },
        { .name     = "pwrite", .alias = "pwrite64", },
        { .name     = "readlinkat",
          .arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ }, }, },
@@ -1352,7 +1353,8 @@ static const struct syscall_fmt syscall_fmts[] = {
        { .name     = "setitimer",
          .arg = { [0] = STRARRAY(which, itimers), }, },
        { .name     = "setrlimit",
-         .arg = { [0] = STRARRAY(resource, rlimit_resources), }, },
+         .arg = { [0] = STRARRAY(resource, rlimit_resources),
+                  [1] = { .from_user = true /* rlim */, }, }, },
        { .name     = "setsockopt",
          .arg = { [1] = STRARRAY(level, socket_level), }, },
        { .name     = "socket",