• Borislav Petkov's avatar
    perf stat: Issue a HW watchdog disable hint · 02d492e5
    Borislav Petkov authored
    When using perf stat on an AMD F15h system with the default hw events
    attributes, some of the events don't get counted:
    
     Performance counter stats for 'sleep 1':
    
              0.749208      task-clock (msec)         #    0.001 CPUs utilized
                     1      context-switches          #    0.001 M/sec
                     0      cpu-migrations            #    0.000 K/sec
                    54      page-faults               #    0.072 M/sec
             1,122,815      cycles                    #    1.499 GHz
               286,740      stalled-cycles-frontend   #   25.54% frontend cycles idle
         <not counted>      stalled-cycles-backend                                        (0.00%)
         ^^^^^^^^^^^^
         <not counted>      instructions                                                  (0.00%)
         ^^^^^^^^^^^^
         <not counted>      branches                                                      (0.00%)
         <not counted>      branch-misses                                                 (0.00%)
    
           1.001550070 seconds time elapsed
    
    The reason is that we have the HW watchdog consuming one PMU counter and
    when perf tries to schedule 6 events on 6 counters and some of those
    counters are constrained to only a specific subset of PMCs by the
    hardware, the event scheduling fails.
    
    So issue a hint to disable the HW watchdog around a perf stat session.
    
    Committer note:
    
    Testing it...
    
      # perf stat -d usleep 1
    
       Performance counter stats for 'usleep 1':
    
              1.180203      task-clock (msec)         #    0.490 CPUs utilized
                     1      context-switches          #    0.847 K/sec
                     0      cpu-migrations            #    0.000 K/sec
                    54      page-faults               #    0.046 M/sec
               184,754      cycles                    #    0.157 GHz
               714,553      instructions              #    3.87  insn per cycle
               154,661      branches                  #  131.046 M/sec
                 7,247      branch-misses             #    4.69% of all branches
               219,984      L1-dcache-loads           #  186.395 M/sec
                17,600      L1-dcache-load-misses     #    8.00% of all L1-dcache hits    (90.16%)
         <not counted>      LLC-loads                                                     (0.00%)
         <not counted>      LLC-load-misses                                               (0.00%)
    
           0.002406823 seconds time elapsed
    
      Some events weren't counted. Try disabling the NMI watchdog:
    	echo 0 > /proc/sys/kernel/nmi_watchdog
    	perf stat ...
    	echo 1 > /proc/sys/kernel/nmi_watchdog
      #
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Acked-by: default avatarIngo Molnar <mingo@kernel.org>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Robert Richter <rric@kernel.org>
    Cc: Vince Weaver <vince@deater.net>
    Link: http://lkml.kernel.org/r/20170211183218.ijnvb5f7ciyuunx4@pd.tnicSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    02d492e5
builtin-stat.c 63.8 KB