• Davidlohr Bueso's avatar
    perf bench: Add basic syscall benchmark · c2a08203
    Davidlohr Bueso authored
    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: default avatarDavidlohr Bueso <dbueso@suse.de>
    Acked-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
    Acked-by: default avatarMel Gorman <mgorman@techsingularity.net>
    Tested-by: default avatarArnaldo 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-r8p5Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    c2a08203
bench.h 2.01 KB