• Arnaldo Carvalho de Melo's avatar
    perf sched: Use perf_evsel__{int,str}val · 2b7fcbc5
    Arnaldo Carvalho de Melo authored
    This patch also stops reading the common fields, as they were not being used except
    for one ->common_pid case that was replaced by sample->tid, i.e. the info is already
    in the perf_sample struct.
    
    Also it only fills the _event structures when there is a handler.
    
      [root@sandy ~]# perf sched record sleep 30s
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 8.585 MB perf.data (~375063 samples) ]
    
    Before:
    
      [root@sandy ~]# perf stat -r 10 perf sched lat > /dev/null
    
       Performance counter stats for 'perf sched lat' (10 runs):
    
              129.117838 task-clock                #    0.994 CPUs utilized            ( +-  0.28% )
                      14 context-switches          #    0.111 K/sec                    ( +-  2.10% )
                       0 cpu-migrations            #    0.002 K/sec                    ( +- 66.67% )
                   7,654 page-faults               #    0.059 M/sec                    ( +-  0.67% )
             438,121,661 cycles                    #    3.393 GHz                      ( +-  0.06% ) [83.06%]
             150,808,605 stalled-cycles-frontend   #   34.42% frontend cycles idle     ( +-  0.14% ) [83.10%]
              80,748,941 stalled-cycles-backend    #   18.43% backend  cycles idle     ( +-  0.64% ) [66.73%]
             758,605,879 instructions              #    1.73  insns per cycle
                                                   #    0.20  stalled cycles per insn  ( +-  0.08% ) [83.54%]
             162,164,321 branches                  # 1255.940 M/sec                    ( +-  0.10% ) [83.70%]
               1,609,903 branch-misses             #    0.99% of all branches          ( +-  0.08% ) [83.62%]
    
             0.129949153 seconds time elapsed                                          ( +-  0.28% )
    
    After:
    
      [root@sandy ~]# perf stat -r 10 perf sched lat > /dev/null
    
       Performance counter stats for 'perf sched lat' (10 runs):
    
              103.592215 task-clock                #    0.993 CPUs utilized            ( +-  0.33% )
                      12 context-switches          #    0.114 K/sec                    ( +-  3.29% )
                       0 cpu-migrations            #    0.000 K/sec
                   7,605 page-faults               #    0.073 M/sec                    ( +-  0.00% )
             345,796,112 cycles                    #    3.338 GHz                      ( +-  0.07% ) [82.90%]
             106,876,796 stalled-cycles-frontend   #   30.91% frontend cycles idle     ( +-  0.38% ) [83.23%]
              62,060,877 stalled-cycles-backend    #   17.95% backend  cycles idle     ( +-  0.80% ) [67.14%]
             628,246,586 instructions              #    1.82  insns per cycle
                                                   #    0.17  stalled cycles per insn  ( +-  0.04% ) [83.64%]
             134,962,057 branches                  # 1302.820 M/sec                    ( +-  0.10% ) [83.64%]
               1,233,037 branch-misses             #    0.91% of all branches          ( +-  0.29% ) [83.41%]
    
             0.104333272 seconds time elapsed                                          ( +-  0.33% )
    
      [root@sandy ~]#
    
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Namhyung Kim <namhyung@gmail.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lkml.kernel.org/n/tip-weu9t63zkrfrazkn0gxj48xy@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    2b7fcbc5
builtin-sched.c 46.1 KB