linux/tools/perf/bench
Davidlohr Bueso c2a0820305 perf bench: Add basic syscall benchmark
The usefulness of having a standard way of testing syscall performance
has come up from time to time[0]. Furthermore, some of our testing
machinery (such as 'mmtests') already makes use of a simplified version
of the microbenchmark. This patch mainly takes the same idea to measure
syscall throughput compatible with 'perf-bench' via getppid(2), yet
without any of the additional template stuff from Ingo's version (based
on numa.c). The code is identical to what mmtests uses.

[0] https://lore.kernel.org/lkml/20160201074156.GA27156@gmail.com/

Committer notes:

Add mising stdlib.h and unistd.h to get the prototypes for exit() and
getppid().

Committer testing:

  $ perf bench
  Usage:
  	perf bench [<common options>] <collection> <benchmark> [<options>]

          # List of all available benchmark collections:

           sched: Scheduler and IPC benchmarks
         syscall: System call benchmarks
             mem: Memory access benchmarks
            numa: NUMA scheduling and MM benchmarks
           futex: Futex stressing benchmarks
           epoll: Epoll stressing benchmarks
       internals: Perf-internals benchmarks
             all: All benchmarks

  $
  $ perf bench syscall

          # List of available benchmarks for collection 'syscall':

           basic: Benchmark for basic getppid(2) calls
             all: Run all syscall benchmarks

  $ perf bench syscall basic
  # Running 'syscall/basic' benchmark:
  # Executed 10000000 getppid() calls
       Total time: 3.679 [sec]

         0.367957 usecs/op
          2717708 ops/sec
  $ perf bench syscall all
  # Running syscall/basic benchmark...
  # Executed 10000000 getppid() calls
       Total time: 3.644 [sec]

         0.364456 usecs/op
          2743815 ops/sec

  $

Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
Acked-by: Mel Gorman <mgorman@techsingularity.net>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lore.kernel.org/lkml/20190308181747.l36zqz2avtivrr3c@linux-r8p5
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2020-07-28 08:50:48 -03:00
..
bench.h perf bench: Add basic syscall benchmark 2020-07-28 08:50:48 -03:00
Build perf bench: Add basic syscall benchmark 2020-07-28 08:50:48 -03:00
epoll-ctl.c tools feature: Rename HAVE_EVENTFD to HAVE_EVENTFD_SUPPORT 2020-05-28 10:03:26 -03:00
epoll-wait.c tools feature: Rename HAVE_EVENTFD to HAVE_EVENTFD_SUPPORT 2020-05-28 10:03:26 -03:00
futex-hash.c perf bench: Fix div-by-zero if runtime is zero 2020-04-22 10:01:33 -03:00
futex-lock-pi.c perf bench: Fix div-by-zero if runtime is zero 2020-04-22 10:01:33 -03:00
futex-requeue.c perf bench: Clear struct sigaction before sigaction() syscall 2020-03-06 08:30:47 -03:00
futex-wake-parallel.c perf bench: Clear struct sigaction before sigaction() syscall 2020-03-06 08:30:47 -03:00
futex-wake.c perf bench: Clear struct sigaction before sigaction() syscall 2020-03-06 08:30:47 -03:00
futex.h perf bench: Move HAVE_PTHREAD_ATTR_SETAFFINITY_NP into bench.h 2018-11-21 12:00:32 -03:00
kallsyms-parse.c perf bench: Add kallsyms parsing 2020-05-05 16:35:32 -03:00
mem-functions.c perf tools: Move everything related to sys_perf_event_open() to perf-sys.h 2019-08-29 17:38:32 -03:00
mem-memcpy-arch.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mem-memcpy-x86-64-asm-def.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mem-memcpy-x86-64-asm.S tools arch: Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy' 2018-07-30 12:36:51 -03:00
mem-memcpy-x86-64-lib.c tools arch: Update arch/x86/lib/memcpy_64.S copy used in 'perf bench mem memcpy' 2018-07-30 12:36:51 -03:00
mem-memset-arch.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mem-memset-x86-64-asm-def.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mem-memset-x86-64-asm.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
numa.c perf tools: Remove needless builtin.h include directives 2019-09-20 09:19:20 -03:00
sched-messaging.c perf tools: Replace zero-length array with flexible-array 2020-05-28 10:03:27 -03:00
sched-pipe.c perf tools: Remove util.h from where it is not needed 2019-09-20 09:19:20 -03:00
synthesize.c perf bench: Add a multi-threaded synthesize benchmark 2020-04-30 10:48:25 -03:00
syscall.c perf bench: Add basic syscall benchmark 2020-07-28 08:50:48 -03:00