Commit Graph

210 Commits

Author SHA1 Message Date
Jiri Olsa
3f8d657716 Revert "perf bench: Fix two memory leaks detected with ASan"
This: This reverts commit 92723ea0f1.

  # perf test 91
  91: perf stat --bpf-counters test           :RRRRRRRRRRRRR FAILED!
  # perf test 91
  91: perf stat --bpf-counters test           :RRRRRRRRRRRRR FAILED!
  # perf test 91
  91: perf stat --bpf-counters test           :RRRRRRRRRRRR FAILED!
  # perf test 91
  91: perf stat --bpf-counters test           :RRRRRRRRRRRRRRRRRR Ok
  # perf test 91
  91: perf stat --bpf-counters test           :RRRRRRRRR FAILED!
  # perf test 91
  91: perf stat --bpf-counters test           :RRRRRRRRRRR Ok
  # perf test 91
  91: perf stat --bpf-counters test           :RRRRRRRRRRRRRRR Ok

yep, it seems the perf bench is broken so the counts won't correlated if
I revert this one:

  92723ea0f1 perf bench: Fix two memory leaks detected with ASan

it works for me again.. it seems to break -t option

   [root@dell-r440-01 perf]# ./perf bench sched messaging -g 1 -l 100 -t
   # Running 'sched/messaging' benchmark:
   RRRperf: CLIENT: ready write: Bad file descriptor
   Rperf: SENDER: write: Bad file descriptor

Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Sohaib Mohamed <sohaib.amhmd@gmail.com>
Cc: Song Liu <songliubraving@fb.com>
Link: https://lore.kernel.org/lkml/YZev7KClb%2Fud43Lc@krava/
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-12-06 21:57:52 -03:00
Sohaib Mohamed
92723ea0f1 perf bench: Fix two memory leaks detected with ASan
ASan reports memory leaks while running:

  $ perf bench sched all

Fixes: e27454cc63 ("perf bench: Add sched-messaging.c: Benchmark for scheduler and IPC mechanisms based on hackbench")
Signed-off-by: Sohaib Mohamed <sohaib.amhmd@gmail.com>
Acked-by: Ian Rogers <irogers@google.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Hitoshi Mitake <h.mitake@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Russel <rusty@rustcorp.com.au>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Pierre Gondois <pierre.gondois@arm.com>
Link: http://lore.kernel.org/lkml/20211110022012.16620-1-sohaib.amhmd@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-11-18 10:08:07 -03:00
Sohaib Mohamed
88e48238d5 perf bench futex: Fix memory leak of perf_cpu_map__new()
ASan reports memory leaks while running:

  $ sudo ./perf bench futex all

The leaks are caused by perf_cpu_map__new not being freed.
This patch adds the missing perf_cpu_map__put since it calls
cpu_map_delete implicitly.

Fixes: 9c3516d1b8 ("libperf: Add perf_cpu_map__new()/perf_cpu_map__read() functions")
Signed-off-by: Sohaib Mohamed <sohaib.amhmd@gmail.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: André Almeida <andrealmeid@collabora.com>
Cc: Darren Hart <dvhart@infradead.org>
Cc: Davidlohr Bueso <dave@stgolabs.net>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sohaib Mohamed <sohaib.amhmd@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lore.kernel.org/lkml/20211112201134.77892-1-sohaib.amhmd@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-11-13 18:11:51 -03:00
Ian Rogers
07eafd4e05 perf parse-event: Add init and exit to parse_event_error
parse_events() may succeed but leave string memory allocations reachable
in the error.

Add an init/exit that must be called to initialize and clean up the
error. This fixes a leak in metricgroup parse_ids.

Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: John Garry <john.garry@huawei.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lore.kernel.org/lkml/20211107090002.3784612-2-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-11-07 15:39:25 -03:00
Ian Rogers
6c1912898e perf parse-events: Rename parse_events_error functions
Group error functions and name after the data type they manipulate.

Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: John Garry <john.garry@huawei.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lore.kernel.org/lkml/20211107090002.3784612-1-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-11-07 15:38:54 -03:00
Arnaldo Carvalho de Melo
ba4026b09d Revert "perf bench futex: Add support for 32-bit systems with 64-bit time_t"
This reverts commit c1ff12dac4.

This commit makes the build break on ubuntu 20.04 and other older
systems and it as well has identation problems, lets revert it till we
get these problems fixed.

Test results:

   1    78.36 almalinux:8                   : Ok   gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1) , clang version 11.0.0 (Red Hat 11.0.0-1.module_el8.4.0+2107+39fed697)
   2     8.40 alpine:3.4                    : FAIL gcc version 5.3.0 (Alpine 5.3.0)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
   3     8.89 alpine:3.5                    : FAIL gcc version 6.2.1 20160822 (Alpine 6.2.1)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
                                  ^
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
                                  ^
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
   4     8.59 alpine:3.6                    : FAIL gcc version 6.3.0 (Alpine 6.3.0)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
                                  ^
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
                                  ^
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
   5     9.01 alpine:3.7                    : FAIL gcc version 6.4.0 (Alpine 6.4.0)
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
                                  ^
    compilation terminated.
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
                                  ^
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
   6     8.70 alpine:3.8                    : FAIL gcc version 6.4.0 (Alpine 6.4.0)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
                                  ^
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
                                  ^
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
   7     9.70 alpine:3.9                    : FAIL gcc version 8.3.0 (Alpine 8.3.0)
    In file included from bench/futex-wake.c:25:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake-parallel.c:31:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-hash.c:29:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
   8     9.40 alpine:3.10                   : FAIL gcc version 8.3.0 (Alpine 8.3.0)
    In file included from bench/futex-hash.c:29:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake.c:25:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
   9     9.81 alpine:3.11                   : FAIL gcc version 9.3.0 (Alpine 9.3.0)
    In file included from bench/futex-hash.c:29:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
       16 | #include <linux/time_types.h>
          |          ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake.c:25:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
       16 | #include <linux/time_types.h>
          |          ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  10    10.32 alpine:3.12                   : FAIL gcc version 9.3.0 (Alpine 9.3.0)
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
       64 |  if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
          |                                 ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       68 |   struct __kernel_old_timespec ts32;
          |                                ^~~~
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    cc1: all warnings being treated as errors
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  11    99.82 alpine:3.13                   : Ok   gcc (Alpine 10.2.1_pre1) 10.2.1 20201203 , Alpine clang version 10.0.1
  12    87.39 alpine:3.14                   : Ok   gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424 , Alpine clang version 11.1.0
  13    86.89 alpine:edge                   : Ok   gcc (Alpine 10.3.1_git20210921) 10.3.1 20210921 , Alpine clang version 12.0.1
  14     7.30 alt:p8                        : FAIL gcc version 5.3.1 20151207 (ALT p8 5.3.1-alt3.M80P.1) (GCC)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    make[3]: *** [bench] Error 2
  15    63.92 alt:p9                        : Ok   x86_64-alt-linux-gcc (GCC) 8.4.1 20200305 (ALT p9 8.4.1-alt0.p9.1) , clang version 10.0.0
  16    61.42 alt:sisyphus                  : Ok   x86_64-alt-linux-gcc (GCC) 11.2.1 20210911 (ALT Sisyphus 11.2.1-alt1) , ALT Linux Team clang version 12.0.1
  17     8.30 amazonlinux:1                 : FAIL gcc version 7.2.1 20170915 (Red Hat 7.2.1-2) (GCC)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make[3]: *** [bench] Error 2
  18     8.71 amazonlinux:2                 : FAIL gcc version 7.3.1 20180712 (Red Hat 7.3.1-13) (GCC)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make[3]: *** [bench] Error 2
  19    79.56 centos:8                      : Ok   gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1) , clang version 11.0.0 (Red Hat 11.0.0-1.module_el8.4.0+587+5187cac0)
  20    82.28 centos:stream                 : Ok   gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-3) , clang version 12.0.1 (Red Hat 12.0.1-2.module_el8.6.0+937+1cafe22c)
  21    55.24 clearlinux:latest             : Ok   gcc (Clear Linux OS for Intel Architecture) 11.2.1 20211020 releases/gcc-11.2.0-375-g40b209e340 , clang version 11.1.0
  22     7.41 debian:9                      : FAIL gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
                                  ^
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  23     7.90 debian:10                     : FAIL gcc version 8.3.0 (Debian 8.3.0-6)
    In file included from bench/futex-hash.c:29:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake.c:25:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  24    60.32 debian:11                     : Ok   gcc (Debian 10.2.1-6) 10.2.1 20210110 , Debian clang version 11.0.1-2
  25    59.42 debian:experimental           : Ok   gcc (Debian 11.2.0-10) 11.2.0 , Debian clang version 11.1.0-4
  26    23.76 debian:experimental-x-arm64   : Ok   aarch64-linux-gnu-gcc (Debian 11.2.0-9) 11.2.0
  27    19.25 debian:experimental-x-mips    : Ok   mips-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110
  28    21.25 debian:experimental-x-mips64  : Ok   mips64-linux-gnuabi64-gcc (Debian 10.2.1-6) 10.2.1 20210110
  29    21.88 debian:experimental-x-mipsel  : Ok   mipsel-linux-gnu-gcc (Debian 11.2.0-9) 11.2.0
  30     8.20 fedora:22                     : FAIL gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  31     8.20 fedora:23                     : FAIL gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  32     8.59 fedora:24                     : FAIL gcc version 6.3.1 20161221 (Red Hat 6.3.1-1) (GCC)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
                                  ^
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  33     6.60 fedora:24-x-ARC-uClibc        : FAIL gcc version 7.1.1 20170710 (ARCompact ISA Linux uClibc toolchain 2017.09-rc2)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  34     8.59 fedora:25                     : FAIL gcc version 6.4.1 20170727 (Red Hat 6.4.1-1) (GCC)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
                                  ^
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  35    14.61 fedora:26                     : FAIL gcc version 7.3.1 20180130 (Red Hat 7.3.1-2) (GCC)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  36     8.79 fedora:27                     : FAIL gcc version 7.3.1 20180712 (Red Hat 7.3.1-6) (GCC)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  37    15.12 fedora:28                     : FAIL gcc version 8.3.1 20190223 (Red Hat 8.3.1-2) (GCC)
    In file included from bench/futex-wake.c:25:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-hash.c:29:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake-parallel.c:31:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  38     9.60 fedora:29                     : FAIL gcc version 8.3.1 20190223 (Red Hat 8.3.1-2) (GCC)
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
      if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
                                     ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       struct __kernel_old_timespec ts32;
                                    ^~~~
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    cc1: all warnings being treated as errors
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  39   101.90 fedora:30                     : Ok   gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2) , clang version 8.0.0 (Fedora 8.0.0-3.fc30)
  40    99.30 fedora:31                     : Ok   gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2) , clang version 9.0.1 (Fedora 9.0.1-4.fc31)
  41    82.46 fedora:32                     : Ok   gcc (GCC) 10.3.1 20210422 (Red Hat 10.3.1-1) , clang version 10.0.1 (Fedora 10.0.1-3.fc32)
  42    81.32 fedora:33                     : Ok   gcc (GCC) 10.3.1 20210422 (Red Hat 10.3.1-1) , clang version 11.0.0 (Fedora 11.0.0-3.fc33)
  43    84.07 fedora:34                     : Ok   gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1) , clang version 12.0.1 (Fedora 12.0.1-1.fc34)
  44     7.09 fedora:34-x-ARC-glibc         : FAIL gcc version 8.3.1 20190225 (ARC HS GNU/Linux glibc toolchain 2019.03-rc1)
    In file included from bench/futex-hash.c:29:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake.c:25:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake-parallel.c:31:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  45     6.29 fedora:34-x-ARC-uClibc        : FAIL gcc version 8.3.1 20190225 (ARCv2 ISA Linux uClibc toolchain 2019.03-rc1)
    In file included from bench/futex-hash.c:29:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  46    74.74 fedora:35                     : Ok   gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1) , clang version 13.0.0 (Fedora 13.0.0~rc1-1.fc35)
  47    73.13 fedora:rawhide                : Ok   gcc (GCC) 11.2.1 20211019 (Red Hat 11.2.1-6) , clang version 13.0.0 (Fedora 13.0.0-4.fc36)
  48    28.17 gentoo-stage3:latest          : Ok   gcc (Gentoo 11.2.0 p1) 11.2.0
  49     9.10 mageia:6                      : FAIL gcc version 5.5.0 (Mageia 5.5.0-1.mga6)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    In file included from bench/futex-wake-parallel.c:31:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  50    38.60 mageia:7                      : FAIL clang version 8.0.0 (Mageia 8.0.0-1.mga7)
          yychar = yylex (&yylval, &yylloc, scanner);
                   ^
    #define yylex           parse_events_lex
                            ^
    1 error generated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: util] Error 2
  51     6.18 openmandriva:cooker           : FAIL gcc version 11.2.0 20210728 (OpenMandriva) (GCC)
    In file included from builtin-bench.c:22:
    bench/bench.h:66:19: error: conflicting types for 'pthread_attr_setaffinity_np'; have 'int(pthread_attr_t *, size_t,  cpu_set_t *)' {aka 'int(pthread_attr_t *, long unsigned int,  cpu_set_t *)'}
       66 | static inline int pthread_attr_setaffinity_np(pthread_attr_t *attr __maybe_unused,
          |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    In file included from bench/bench.h:64,
                     from builtin-bench.c:22:
    /usr/include/pthread.h:394:12: note: previous declaration of 'pthread_attr_setaffinity_np' with type 'int(pthread_attr_t *, size_t,  const cpu_set_t *)' {aka 'int(pthread_attr_t *, long unsigned int,  const cpu_set_t *)'}
      394 | extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
          |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    file: Compiled magic version [540] does not match with shared library magic version [539]

    ld: warning: -r and --gc-sections may not be used together, disabling --gc-sections
    ld: warning: -r and --icf may not be used together, disabling --icf
    ld: warning: -r and --gc-sections may not be used together, disabling --gc-sections
    ld: warning: -r and --icf may not be used together, disabling --icf
    file: Compiled magic version [540] does not match with shared library magic version [539]

    file: Compiled magic version [540] does not match with shared library magic version [539]

    ld: warning: -r and --gc-sections may not be used together, disabling --gc-sections
    ld: warning: -r and --icf may not be used together, disabling --icf
  52    12.51 opensuse:15.0                 : FAIL gcc version 7.4.1 20190905 [gcc-7-branch revision 275407] (SUSE Linux)
    Makefile.config:999: No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev
    update-alternatives: error: no alternatives for java
    update-alternatives: error: no alternatives for java
    Makefile.config:1043: No openjdk development package found, please install JDK package, e.g. openjdk-8-jdk, java-1.8.0-openjdk-devel

    Auto-detecting system features:
    ...                         dwarf: [ on  ]
    ...            dwarf_getlocations: [ on  ]
    ...                         glibc: [ on  ]
    ...                        libbfd: [ OFF ]
    ...                libbfd-buildid: [ OFF ]
    ...                        libcap: [ on  ]
    ...                        libelf: [ on  ]
    ...                       libnuma: [ on  ]
    ...        numa_num_possible_cpus: [ on  ]
    ...                       libperl: [ on  ]
    ...                     libpython: [ on  ]
    ...                     libcrypto: [ on  ]
    ...                     libunwind: [ on  ]
    ...            libdw-dwarf-unwind: [ on  ]
    ...                          zlib: [ on  ]
    ...                          lzma: [ on  ]
    ...                     get_cpuid: [ on  ]
    ...                           bpf: [ on  ]
    ...                        libaio: [ on  ]
    ...                       libzstd: [ on  ]
    ...        disassembler-four-args: [ on  ]

      PERF_VERSION = 5.15.g875eaa399042
      GEN     perf-archive
      GEN     perf-with-kcore
      GEN     perf-iostat
    --
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake-parallel.c:31:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-requeue.c:26:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  53    12.41 opensuse:15.1                 : FAIL gcc version 7.5.0 (SUSE Linux)
    Makefile.config:999: No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev
    update-alternatives: error: no alternatives for java
    update-alternatives: error: no alternatives for java
    Makefile.config:1043: No openjdk development package found, please install JDK package, e.g. openjdk-8-jdk, java-1.8.0-openjdk-devel

    Auto-detecting system features:
    ...                         dwarf: [ on  ]
    ...            dwarf_getlocations: [ on  ]
    ...                         glibc: [ on  ]
    ...                        libbfd: [ OFF ]
    ...                libbfd-buildid: [ OFF ]
    ...                        libcap: [ on  ]
    ...                        libelf: [ on  ]
    ...                       libnuma: [ on  ]
    ...        numa_num_possible_cpus: [ on  ]
    ...                       libperl: [ on  ]
    ...                     libpython: [ on  ]
    ...                     libcrypto: [ on  ]
    ...                     libunwind: [ on  ]
    ...            libdw-dwarf-unwind: [ on  ]
    ...                          zlib: [ on  ]
    ...                          lzma: [ on  ]
    ...                     get_cpuid: [ on  ]
    ...                           bpf: [ on  ]
    ...                        libaio: [ on  ]
    ...                       libzstd: [ on  ]
    ...        disassembler-four-args: [ on  ]

      PERF_VERSION = 5.15.g875eaa399042
      GEN     perf-archive
      GEN     perf-with-kcore
      GEN     perf-iostat
    --
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake-parallel.c:31:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-requeue.c:26:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  54    12.20 opensuse:15.2                 : FAIL gcc version 7.5.0 (SUSE Linux)
    Makefile.config:999: No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev
    update-alternatives: error: no alternatives for java
    update-alternatives: error: no alternatives for java
    Makefile.config:1043: No openjdk development package found, please install JDK package, e.g. openjdk-8-jdk, java-1.8.0-openjdk-devel

    Auto-detecting system features:
    ...                         dwarf: [ on  ]
    ...            dwarf_getlocations: [ on  ]
    ...                         glibc: [ on  ]
    ...                        libbfd: [ OFF ]
    ...                libbfd-buildid: [ OFF ]
    ...                        libcap: [ on  ]
    ...                        libelf: [ on  ]
    ...                       libnuma: [ on  ]
    ...        numa_num_possible_cpus: [ on  ]
    ...                       libperl: [ on  ]
    ...                     libpython: [ on  ]
    ...                     libcrypto: [ on  ]
    ...                     libunwind: [ on  ]
    ...            libdw-dwarf-unwind: [ on  ]
    ...                          zlib: [ on  ]
    ...                          lzma: [ on  ]
    ...                     get_cpuid: [ on  ]
    ...                           bpf: [ on  ]
    ...                        libaio: [ on  ]
    ...                       libzstd: [ on  ]
    ...        disassembler-four-args: [ on  ]

      PERF_VERSION = 5.15.g875eaa399042
      GEN     perf-archive
      GEN     perf-with-kcore
      GEN     perf-iostat
    --
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
      if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
                                     ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       struct __kernel_old_timespec ts32;
                                    ^~~~
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    cc1: all warnings being treated as errors
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
      if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
                                     ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       struct __kernel_old_timespec ts32;
                                    ^~~~
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    cc1: all warnings being treated as errors
    In file included from bench/futex-wake-parallel.c:31:0:
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
      if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
                                     ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       struct __kernel_old_timespec ts32;
                                    ^~~~
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    cc1: all warnings being treated as errors
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  55    12.30 opensuse:15.3                 : FAIL gcc version 7.5.0 (SUSE Linux)
    Makefile.config:999: No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev
    update-alternatives: error: no alternatives for java
    update-alternatives: error: no alternatives for java
    Makefile.config:1043: No openjdk development package found, please install JDK package, e.g. openjdk-8-jdk, java-1.8.0-openjdk-devel

    Auto-detecting system features:
    ...                         dwarf: [ on  ]
    ...            dwarf_getlocations: [ on  ]
    ...                         glibc: [ on  ]
    ...                        libbfd: [ OFF ]
    ...                libbfd-buildid: [ OFF ]
    ...                        libcap: [ on  ]
    ...                        libelf: [ on  ]
    ...                       libnuma: [ on  ]
    ...        numa_num_possible_cpus: [ on  ]
    ...                       libperl: [ on  ]
    ...                     libpython: [ on  ]
    ...                     libcrypto: [ on  ]
    ...                     libunwind: [ on  ]
    ...            libdw-dwarf-unwind: [ on  ]
    ...                          zlib: [ on  ]
    ...                          lzma: [ on  ]
    ...                     get_cpuid: [ on  ]
    ...                           bpf: [ on  ]
    ...                        libaio: [ on  ]
    ...                       libzstd: [ on  ]
    ...        disassembler-four-args: [ on  ]

      PERF_VERSION = 5.15.g875eaa399042
      GEN     perf-archive
      GEN     perf-with-kcore
      GEN     perf-iostat
    --
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
      if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
                                     ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       struct __kernel_old_timespec ts32;
                                    ^~~~
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
      if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
                                     ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       struct __kernel_old_timespec ts32;
                                    ^~~~
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    cc1: all warnings being treated as errors
    cc1: all warnings being treated as errors
    In file included from bench/futex-wake-parallel.c:31:0:
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
      if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
                                     ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       struct __kernel_old_timespec ts32;
                                    ^~~~
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    cc1: all warnings being treated as errors
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  56    92.79 opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 11.2.1 20210816 [revision 056e324ce46a7924b5cf10f61010cf9dd2ca10e9] , clang version 13.0.0
  57    78.85 oraclelinux:8                 : Ok   gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1.0.4) , clang version 11.0.0 (Red Hat 11.0.0-1.0.1.module+el8.4.0+20046+39fed697)
  58    78.47 rockylinux:8                  : Ok   gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1) , clang version 11.0.0 (Red Hat 11.0.0-1.module+el8.4.0+412+05cf643f)
  59     8.32 ubuntu:16.04                  : FAIL gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  60     7.19 ubuntu:16.04-x-arm            : FAIL gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9)
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  61    18.14 ubuntu:16.04-x-arm64          : FAIL gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  62     6.99 ubuntu:16.04-x-powerpc        : FAIL gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  63     7.29 ubuntu:16.04-x-powerpc64      : FAIL gcc version 5.4.0 20160609 (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    In file included from bench/futex-wake-parallel.c:31:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    In file included from bench/futex-requeue.c:26:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    In file included from bench/futex-lock-pi.c:19:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  64     7.29 ubuntu:16.04-x-powerpc64el    : FAIL gcc version 5.4.0 20160609 (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  65     6.59 ubuntu:16.04-x-s390           : FAIL gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    In file included from bench/futex-wake-parallel.c:31:0:
    bench/futex.h:16:30: fatal error: linux/time_types.h: No such file or directory
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  66     9.00 ubuntu:18.04                  : FAIL gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  67     7.49 ubuntu:18.04-x-arm            : FAIL gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  68     7.49 ubuntu:18.04-x-arm64          : FAIL gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  69     6.09 ubuntu:18.04-x-m68k           : FAIL gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake-parallel.c:31:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  70     7.40 ubuntu:18.04-x-powerpc        : FAIL gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  71     8.00 ubuntu:18.04-x-powerpc64      : FAIL gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  72     7.99 ubuntu:18.04-x-powerpc64el    : FAIL gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  73     6.89 ubuntu:18.04-x-riscv64        : FAIL gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  74     6.69 ubuntu:18.04-x-s390           : FAIL gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  75     7.29 ubuntu:18.04-x-sh4            : FAIL gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  76     6.69 ubuntu:18.04-x-sparc64        : FAIL gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
    In file included from bench/futex-hash.c:29:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    In file included from bench/futex-wake.c:25:0:
    bench/futex.h:16:10: fatal error: linux/time_types.h: No such file or directory
     #include <linux/time_types.h>
              ^~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    /git/perf-5.15.0/tools/build/Makefile.build:139: recipe for target 'bench' failed
    make[3]: *** [bench] Error 2
  77     9.59 ubuntu:20.04                  : FAIL gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
       64 |  if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
          |                                 ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       68 |   struct __kernel_old_timespec ts32;
          |                                ^~~~
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    cc1: all warnings being treated as errors
    In file included from bench/futex-wake.c:25:
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
       64 |  if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
          |                                 ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       68 |   struct __kernel_old_timespec ts32;
          |                                ^~~~
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    cc1: all warnings being treated as errors
    In file included from bench/futex-wake-parallel.c:31:
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
       64 |  if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
          |                                 ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       68 |   struct __kernel_old_timespec ts32;
          |                                ^~~~
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    cc1: all warnings being treated as errors
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  78     8.29 ubuntu:20.04-x-powerpc64el    : FAIL gcc version 10.3.0 (Ubuntu 10.3.0-1ubuntu1~20.04)
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
       64 |  if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
          |                                 ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       68 |   struct __kernel_old_timespec ts32;
          |                                ^~~~
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    cc1: all warnings being treated as errors
    In file included from bench/futex-wake.c:25:
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
       64 |  if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
          |                                 ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       68 |   struct __kernel_old_timespec ts32;
          |                                ^~~~
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    In file included from bench/futex-requeue.c:26:
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
       64 |  if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
          |                                 ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       68 |   struct __kernel_old_timespec ts32;
          |                                ^~~~
    In file included from bench/futex-wake-parallel.c:31:
    bench/futex.h: In function 'futex_syscall':
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    bench/futex.h:64:33: error: invalid application of 'sizeof' to incomplete type 'struct __kernel_old_timespec'
       64 |  if (sizeof(*timeout) == sizeof(struct __kernel_old_timespec))
          |                                 ^~~~~~
    bench/futex.h:68:32: error: storage size of 'ts32' isn't known
       68 |   struct __kernel_old_timespec ts32;
          |                                ^~~~
    bench/futex.h:68:32: error: unused variable 'ts32' [-Werror=unused-variable]
    cc1: all warnings being treated as errors
    cc1: all warnings being treated as errors
    cc1: all warnings being treated as errors
    make[3]: *** [/git/perf-5.15.0/tools/build/Makefile.build:139: bench] Error 2
  79    65.92 ubuntu:20.10                  : Ok   gcc (Ubuntu 10.3.0-1ubuntu1~20.10) 10.3.0 , Ubuntu clang version 11.0.0-2
  80    65.91 ubuntu:21.04                  : Ok   gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0 , Ubuntu clang version 12.0.0-3ubuntu1~21.04.2
  81    68.12 ubuntu:21.10                  : Ok   gcc (Ubuntu 11.2.0-7ubuntu2) 11.2.0 , Ubuntu clang version 13.0.0-2

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-11-01 11:42:54 -03:00
Alistair Francis
c1ff12dac4 perf bench futex: Add support for 32-bit systems with 64-bit time_t
Some 32-bit architectures (such are 32-bit RISC-V) only have a 64-bit
time_t and as such don't have the SYS_futex syscall. This patch will
allow us to use the SYS_futex_time64 syscall on those platforms.

This also converts the futex calls to be y2038 safe (when built for a
5.1+ kernel).

Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Davidlohr Bueso <dbueso@suse.de>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alistair Francis <alistair23@gmail.com>
Cc: Atish Patra <atish.patra@wdc.com>
Cc: Darren Hart <dvhart@infradead.org>
Cc: Davidlohr Bueso <dave@stgolabs.net>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-riscv@lists.infradead.org
Link: http://lore.kernel.org/lkml/20211022013343.2262938-2-alistair.francis@opensource.wdc.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-10-27 20:55:17 -03:00
Alistair Francis
fec5c3a515 perf bench futex: Call the futex syscall from a function
In preparation for a more complex futex() function let's convert the
current macro into two functions. We need two functions to avoid
compiler failures as the macro is overloaded.

This will allow us to include pre-processor conditionals in the futex
syscall functions.

Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Acked-by: Davidlohr Bueso <dbueso@suse.de>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alistair Francis <alistair23@gmail.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Atish Patra <atish.patra@wdc.com>
Cc: Darren Hart <dvhart@infradead.org>
Cc: Davidlohr Bueso <dave@stgolabs.net>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-riscv@lists.infradead.org
Link: http://lore.kernel.org/lkml/20211022013343.2262938-1-alistair.francis@opensource.wdc.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-10-27 20:54:00 -03:00
Riccardo Mancini
c2d4fab01f perf test evlist-open-close: Use inline func to convert timeval to usec
This patch introduces a new inline function to convert a timeval to
usec.

This function will be used also in the next patch.

Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/b95035ec4a125355be8ea843f7275c4580da6398.1629490974.git.rickyman7@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-10-08 11:45:38 -03:00
Namhyung Kim
84111b9c95 perf tools: Allow controlling synthesizing PERF_RECORD_ metadata events during record
Depending on the use case, it might require some kind of synthesizing
and some not.  Make it controllable to turn off heavy operations like
MMAP for all tasks.

Currently all users are converted to enable all the synthesis by
default.  It'll be updated in the later patch.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: https //lore.kernel.org/r/20210811044658.1313391-1-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-09-17 08:44:19 -03:00
Linus Torvalds
2d338201d5 Merge branch 'akpm' (patches from Andrew)
Merge more updates from Andrew Morton:
 "147 patches, based on 7d2a07b769.

  Subsystems affected by this patch series: mm (memory-hotplug, rmap,
  ioremap, highmem, cleanups, secretmem, kfence, damon, and vmscan),
  alpha, percpu, procfs, misc, core-kernel, MAINTAINERS, lib,
  checkpatch, epoll, init, nilfs2, coredump, fork, pids, criu, kconfig,
  selftests, ipc, and scripts"

* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (94 commits)
  scripts: check_extable: fix typo in user error message
  mm/workingset: correct kernel-doc notations
  ipc: replace costly bailout check in sysvipc_find_ipc()
  selftests/memfd: remove unused variable
  Kconfig.debug: drop selecting non-existing HARDLOCKUP_DETECTOR_ARCH
  configs: remove the obsolete CONFIG_INPUT_POLLDEV
  prctl: allow to setup brk for et_dyn executables
  pid: cleanup the stale comment mentioning pidmap_init().
  kernel/fork.c: unexport get_{mm,task}_exe_file
  coredump: fix memleak in dump_vma_snapshot()
  fs/coredump.c: log if a core dump is aborted due to changed file permissions
  nilfs2: use refcount_dec_and_lock() to fix potential UAF
  nilfs2: fix memory leak in nilfs_sysfs_delete_snapshot_group
  nilfs2: fix memory leak in nilfs_sysfs_create_snapshot_group
  nilfs2: fix memory leak in nilfs_sysfs_delete_##name##_group
  nilfs2: fix memory leak in nilfs_sysfs_create_##name##_group
  nilfs2: fix NULL pointer in nilfs_##name##_attr_release
  nilfs2: fix memory leak in nilfs_sysfs_create_device_group
  trap: cleanup trap_init()
  init: move usermodehelper_enable() to populate_rootfs()
  ...
2021-09-08 12:55:35 -07:00
Andy Shevchenko
7fc5b57132 tools: rename bitmap_alloc() to bitmap_zalloc()
Rename bitmap_alloc() to bitmap_zalloc() in tools to follow the bitmap API
in the kernel.

No functional changes intended.

Link: https://lkml.kernel.org/r/20210814211713.180533-14-yury.norov@gmail.com
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Yury Norov <yury.norov@gmail.com>
Suggested-by: Yury Norov <yury.norov@gmail.com>
Acked-by: Yury Norov <yury.norov@gmail.com>
Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Alexander Lobakin <alobakin@pm.me>
Cc: Alexey Klimov <aklimov@redhat.com>
Cc: Dennis Zhou <dennis@kernel.org>
Cc: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-09-08 11:50:27 -07:00
Arnaldo Carvalho de Melo
a32762b864 perf bench evlist-open-close: Use PRIu64 with u64 to fix build on 32-bit architectures
73     9.00 ubuntu:18.04-x-powerpc        : FAIL gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
    bench/evlist-open-close.c: In function 'bench_evlist_open_close__run':
    bench/evlist-open-close.c:173:12: error: format '%ld' expects argument of type 'long int', but argument 5 has type 'u64 {aka long long unsigned int}' [-Werror=format=]
       pr_debug("Iteration %d took:\t%ldus\n", i, runtime_us);
                ^
    bench/../util/debug.h:18:21: note: in definition of macro 'pr_fmt'
     #define pr_fmt(fmt) fmt
                         ^~~
    bench/evlist-open-close.c:173:3: note: in expansion of macro 'pr_debug'
       pr_debug("Iteration %d took:\t%ldus\n", i, runtime_us);
       ^~~~~~~~
    cc1: all warnings being treated as errors
    /git/perf-5.14.0/tools/build/Makefile.build:139: recipe for target 'bench' failed

Cc: Riccardo Mancini <rickyman7@gmail.com>
Fixes: 4241eabf59 ("perf bench: Add benchmark for evlist open/close operations")
Link: http://lore.kernel.org/lkml/YS0oTcA9Zuy8Wjm9@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-08-30 18:22:02 -03:00
Arnaldo Carvalho de Melo
edf7b4a2d8 perf bench inject-buildid: Handle writen() errors
The build on fedora:35 and fedora:rawhide with clang is failing with:

  49    41.00 fedora:35                     : FAIL clang version 13.0.0 (Fedora 13.0.0~rc1-1.fc35)
    bench/inject-buildid.c:351:6: error: variable 'len' set but not used [-Werror,-Wunused-but-set-variable]
            u64 len = 0;
                ^
    1 error generated.
    make[3]: *** [/git/perf-5.14.0-rc7/tools/build/Makefile.build:139: bench] Error 2
  50    41.11 fedora:rawhide                : FAIL clang version 13.0.0 (Fedora 13.0.0~rc1-1.fc35)
    bench/inject-buildid.c:351:6: error: variable 'len' set but not used [-Werror,-Wunused-but-set-variable]
            u64 len = 0;
                ^
    1 error generated.
    make[3]: *** [/git/perf-5.14.0-rc7/tools/build/Makefile.build:139: bench] Error 2

That 'len' variable is not used at all, so just make sure all the
synthesize_RECORD() routines return ssize_t to propagate the writen()
return, as it may fail, ditch the 'ret' var and bail out if those
routines fail.

Fixes: 0bf02a0d80 ("perf bench: Add build-id injection benchmark")
Acked-by: Namhyung Kim <namhyung@kernel.org>
Link: http://lore.kernel.org/lkml/CAM9d7cgEZNSor+B+7Y2C+QYGme_v5aH0Zn0RLfxoQ+Fy83EHrg@mail.gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-08-30 10:06:37 -03:00
Riccardo Mancini
4241eabf59 perf bench: Add benchmark for evlist open/close operations
This new benchmark finds the total time that is taken to open, mmap,
enable, disable, munmap, close an evlist (time taken for new,
create_maps, config, delete is not counted in).

The evlist can be configured as in perf-record using the
-a,-C,-e,-u,--per-thread,-t,-p options.

The events can be duplicated in the evlist to quickly test performance
with many events using the -n options.

Furthermore, also the number of iterations used to calculate the
statistics is customizable.

Examples:
- Open one dummy event system-wide:

  $ sudo ./perf bench internals evlist-open-close
    Number of cpus:       4
    Number of threads:    1
    Number of events:     1 (4 fds)
    Number of iterations: 100
    Average open-close took: 613.870 usec (+- 32.852 usec)

- Open the group '{cs,cycles}' on CPU 0

  $ sudo ./perf bench internals evlist-open-close -e '{cs,cycles}' -C 0
    Number of cpus:       1
    Number of threads:    1
    Number of events:     2 (2 fds)
    Number of iterations: 100
    Average open-close took: 8503.220 usec (+- 252.652 usec)

- Open 10 'cycles' events for user 0, calculate average over 100 runs

  $ sudo ./perf bench internals evlist-open-close -e cycles -n 10 -u 0 -i 100
    Number of cpus:       4
    Number of threads:    328
    Number of events:     10 (13120 fds)
    Number of iterations: 100
    Average open-close took: 180043.140 usec (+- 2295.889 usec)

Committer notes:

Replaced a deprecated bzero() call with designated initialized zeroing.

Added some missing evlist allocation checks, one noted by Riccardo on
the mailing list.

Minor cosmetic changes (sent in private).

Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/20210809201101.277594-1-rickyman7@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-08-10 11:32:37 -03:00
Davidlohr Bueso
46f815323b perf bench futex, requeue: Add --pi parameter
This extends the program to measure WAIT_REQUEUE_PI+CMP_REQUEUE_PI
pairs, which are the underlying machinery behind priority-inheritance
aware condition variables. The defaults are the same as with the regular
non-pi version, requeueing one task at a time, with the exception that
PI will always wakeup the first waiter.

Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Cc: Davidlohr Bueso <dbueso@suse.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lore.kernel.org/lkml/20210809043301.66002-8-dave@stgolabs.net
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-08-09 12:00:27 -03:00
Davidlohr Bueso
6f9661b25b perf bench futex, requeue: Robustify futex_wait() handling
Do not assume success and account for EAGAIN or any other return value,
however unlikely.

Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Cc: Davidlohr Bueso <dbueso@suse.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lore.kernel.org/lkml/20210809043301.66002-7-dave@stgolabs.net
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-08-09 12:00:22 -03:00
Davidlohr Bueso
d262e6a93b perf bench futex, requeue: Add --broadcast option
Such that all threads are requeued to uaddr2 in a single
futex_cmp_requeue(), unlike the default, which is 1.

Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Cc: Davidlohr Bueso <dbueso@suse.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lore.kernel.org/lkml/20210809043301.66002-6-dave@stgolabs.net
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-08-09 12:00:10 -03:00
Davidlohr Bueso
9f9a3ffe94 perf bench futex: Add --mlockall parameter
This adds, across all futex benchmarks, the -m/--mlockall option
which is a common operation for realtime workloads by not incurring
in page faults in paths that want determinism. As such, threads
started after a call to mlockall(2) will generate page faults
immediately since the new stack is immediately forced to memory,
due to the MCL_FUTURE flag.

Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Cc: Davidlohr Bueso <dbueso@suse.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lore.kernel.org/lkml/20210809043301.66002-5-dave@stgolabs.net
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-08-09 12:00:04 -03:00
Davidlohr Bueso
b2105a7570 perf bench futex: Remove bogus backslash from comment
It obviously doesn't belong there.

Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Cc: Davidlohr Bueso <dbueso@suse.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lore.kernel.org/lkml/20210809043301.66002-3-dave@stgolabs.net
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-08-09 11:59:49 -03:00
Davidlohr Bueso
0959046303 perf bench futex: Group test parameters cleanup
Do this across all futex-bench tests such that all program parameters
neatly share a common structure, which is nicer than how we have them
now. No changes in program behavior are expected.

Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Cc: Davidlohr Bueso <dbueso@suse.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lore.kernel.org/lkml/20210809043301.66002-2-dave@stgolabs.net
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-08-09 11:59:46 -03:00
Namhyung Kim
2681bd85a4 perf tools: Remove repipe argument from perf_session__new()
The repipe argument is only used by perf inject and the all others
passes 'false'.  Let's remove it from the function signature and add
__perf_session__new() to be called from perf inject directly.

This is a preparation of the change the pipe input/output.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/20210719223153.1618812-2-namhyung@kernel.org
[ Fixed up some trivial conflicts as this patchset fell thru the cracks ;-( ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-08-02 10:06:51 -03:00
Ingo Molnar
4d39c89f0b perf tools: Fix various typos in comments
Fix ~124 single-word typos and a few spelling errors in the perf tooling code,
accumulated over the years.

Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20210321113734.GA248990@gmail.com
Link: http://lore.kernel.org/lkml/20210323160915.GA61903@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-03-23 17:13:43 -03:00
Arnaldo Carvalho de Melo
009ef05f98 Merge remote-tracking branch 'torvalds/master' into perf/core
To pick up the fixes sent for v5.12 and continue development based on
v5.12-rc2, i.e. without the swap on file bug.

This also gets a slightly newer and better tools/perf/arch/arm/util/cs-etm.c
patch version, using the BIT() macro, that had already been slated to
v5.13 but ended up going to v5.12-rc1 on an older version.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-03-08 10:11:33 -03:00
Athira Rajeev
394e4306b0 perf bench numa: Fix the condition checks for max number of NUMA nodes
In systems having higher node numbers available like node
255, perf numa bench will fail with SIGABORT.

  <<>>
  perf: bench/numa.c:1416: init: Assertion `!(g->p.nr_nodes > 64 || g->p.nr_nodes < 0)' failed.
  Aborted (core dumped)
  <<>>

Snippet from 'numactl -H' below on a powerpc system where the highest
node number available is 255:

  available: 6 nodes (0,8,252-255)
  node 0 cpus: <cpu-list>
  node 0 size: 519587 MB
  node 0 free: 516659 MB
  node 8 cpus: <cpu-list>
  node 8 size: 523607 MB
  node 8 free: 486757 MB
  node 252 cpus:
  node 252 size: 0 MB
  node 252 free: 0 MB
  node 253 cpus:
  node 253 size: 0 MB
  node 253 free: 0 MB
  node 254 cpus:
  node 254 size: 0 MB
  node 254 free: 0 MB
  node 255 cpus:
  node 255 size: 0 MB
  node 255 free: 0 MB
  node distances:
  node   0   8  252  253  254  255

Note: <cpu-list> expands to actual cpu list in the original output.
These nodes 252-255 are to represent the memory on GPUs and are valid
nodes.

The perf numa bench init code has a condition check to see if the number
of NUMA nodes (nr_nodes) exceeds MAX_NR_NODES. The value of MAX_NR_NODES
defined in perf code is 64. And the 'nr_nodes' is the value from
numa_max_node() which represents the highest node number available in the
system. In some systems where we could have NUMA node 255, this condition
check fails and results in SIGABORT.

The numa benchmark uses static value of MAX_NR_NODES in the code to
represent size of two NUMA node arrays and node bitmask used for setting
memory policy. Patch adds a fix to dynamically allocate size for the
two arrays and bitmask value based on the node numbers available in the
system. With the fix, perf numa benchmark will work with node configuration
on any system and thus removes the static MAX_NR_NODES value.

Signed-off-by: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
Reviewed-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kajol Jain <kjain@linux.ibm.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org
Link: http://lore.kernel.org/lkml/1614271802-1503-1-git-send-email-atrajeev@linux.vnet.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-03-06 16:54:25 -03:00