• Ian Rogers's avatar
    perf bench: Add a multi-threaded synthesize benchmark · 13edc237
    Ian Rogers authored
    By default this isn't run as it reads /proc and may not have access.
    For consistency, modify the single threaded benchmark to compute an
    average time per event.
    
    Committer testing:
    
      $ grep -m1 "model name" /proc/cpuinfo
      model name	: Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz
      $ grep "model name" /proc/cpuinfo  | wc -l
      8
      $
      $ perf bench internals synthesize -h
      # Running 'internals/synthesize' benchmark:
    
       Usage: perf bench internals synthesize <options>
    
          -I, --multi-iterations <n>
                                Number of iterations used to compute multi-threaded average
          -i, --single-iterations <n>
                                Number of iterations used to compute single-threaded average
          -M, --max-threads <n>
                                Maximum number of threads in multithreaded bench
          -m, --min-threads <n>
                                Minimum number of threads in multithreaded bench
          -s, --st              Run single threaded benchmark
          -t, --mt              Run multi-threaded benchmark
    
      $
      $ perf bench internals synthesize -t
      # Running 'internals/synthesize' benchmark:
      Computing performance of multi threaded perf event synthesis by
      synthesizing events on CPU 0:
        Number of synthesis threads: 1
          Average synthesis took: 65449.000 usec (+- 586.442 usec)
          Average num. events: 9405.400 (+- 0.306)
          Average time per event 6.959 usec
        Number of synthesis threads: 2
          Average synthesis took: 37838.300 usec (+- 130.259 usec)
          Average num. events: 9501.800 (+- 20.469)
          Average time per event 3.982 usec
        Number of synthesis threads: 3
          Average synthesis took: 48551.400 usec (+- 225.686 usec)
          Average num. events: 9544.000 (+- 0.000)
          Average time per event 5.087 usec
        Number of synthesis threads: 4
          Average synthesis took: 29632.500 usec (+- 50.808 usec)
          Average num. events: 9544.000 (+- 0.000)
          Average time per event 3.105 usec
        Number of synthesis threads: 5
          Average synthesis took: 33920.400 usec (+- 284.509 usec)
          Average num. events: 9544.000 (+- 0.000)
          Average time per event 3.554 usec
        Number of synthesis threads: 6
          Average synthesis took: 27604.100 usec (+- 72.344 usec)
          Average num. events: 9548.000 (+- 0.000)
          Average time per event 2.891 usec
        Number of synthesis threads: 7
          Average synthesis took: 25406.300 usec (+- 933.371 usec)
          Average num. events: 9545.500 (+- 0.167)
          Average time per event 2.662 usec
        Number of synthesis threads: 8
          Average synthesis took: 24110.400 usec (+- 73.229 usec)
          Average num. events: 9551.000 (+- 0.000)
          Average time per event 2.524 usec
      $
    Signed-off-by: default avatarIan Rogers <irogers@google.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
    Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andrey Zhizhikin <andrey.z@gmail.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lore.kernel.org/lkml/20200415054050.31645-2-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    13edc237
synthesize.c 6.79 KB