• Kan Liang's avatar
    perf vendor events intel: Add NO_NMI_WATCHDOG metric constraint · b95fcd2c
    Kan Liang authored
    Add NO_NMI_WATCHDOG metric constraint to Page_Walks_Utilization for Sky Lake
    and Cascade Lake.
    
    Committer testing:
    
    On a Lenovo T480S, Intel(R) Core(TM) i7-8650U Kaby Lake, that looking at x86's
    mapfile.csv file is a:
    
      $ grep -w skylake tools/perf/pmu-events/arch/x86/mapfile.csv
      GenuineIntel-6-[4589]E,v24,skylake,core
      $
    
    So uses the constraint added in this patch in this file:
    
      tools/perf/pmu-events/arch/x86/skylake/skl-metrics.json
    
    Before:
    
      # perf stat -a -M Page_Walks_Utilization sleep 2
    
       Performance counter stats for 'system wide':
    
           <not counted>      itlb_misses.walk_pending                                      (0.00%)
           <not counted>      dtlb_load_misses.walk_pending                                     (0.00%)
           <not counted>      dtlb_store_misses.walk_pending                                     (0.00%)
           <not counted>      ept.walk_pending                                              (0.00%)
           <not counted>      cycles                                                        (0.00%)
    
             2.001750514 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
      The events in group usually have to be from the same PMU. Try reorganizing the group.
      #
    
    After:
    
      # perf stat -a -M Page_Walks_Utilization sleep 2
      Splitting metric group Page_Walks_Utilization into standalone metrics.
      Try disabling the NMI watchdog to comply NO_NMI_WATCHDOG metric constraint:
          echo 0 > /proc/sys/kernel/nmi_watchdog
          perf stat ...
          echo 1 > /proc/sys/kernel/nmi_watchdog
      ,
       Performance counter stats for 'system wide':
    
              36,883,102      itlb_misses.walk_pending  #      0.1 Page_Walks_Utilization   (79.99%)
             123,104,146      dtlb_load_misses.walk_pending                                     (80.02%)
              13,720,795      dtlb_store_misses.walk_pending                                     (79.99%)
                       0      ept.walk_pending                                              (79.99%)
           1,519,948,400      cycles                                                        (80.01%)
    
             2.002170780 seconds time elapsed
    
      #
    
    Before and after, if we disable the nmi_watchdog we get:
    
      # echo 0 > /proc/sys/kernel/nmi_watchdog
      # perf stat -a -M Page_Walks_Utilization sleep 2
    
       Performance counter stats for 'system wide':
    
              33,721,658      itlb_misses.walk_pending  #      0.1 Page_Walks_Utilization
              84,070,996      dtlb_load_misses.walk_pending
               9,816,071      dtlb_store_misses.walk_pending
                       0      ept.walk_pending
             704,920,899      cycles
    
             2.002331670 seconds time elapsed
    
      #
    
      More information about the metric expressions:
    
      # perf stat -v -a -M Page_Walks_Utilization sleep 2
      Using CPUID GenuineIntel-6-8E-A
      metric expr ( itlb_misses.walk_pending + dtlb_load_misses.walk_pending + dtlb_store_misses.walk_pending + ept.walk_pending ) / ( 2 * cycles ) for Page_Walks_Utilization
      found event itlb_misses.walk_pending
      found event dtlb_load_misses.walk_pending
      found event dtlb_store_misses.walk_pending
      found event ept.walk_pending
      found event cycles
      adding {itlb_misses.walk_pending,dtlb_load_misses.walk_pending,dtlb_store_misses.walk_pending,ept.walk_pending,cycles}:W
       -> cpu/umask=0x10,(null)=0x186a3,event=0x85/
       -> cpu/umask=0x10,(null)=0x1e8483,event=0x8/
       -> cpu/umask=0x10,(null)=0x1e8483,event=0x49/
       -> cpu/umask=0x10,(null)=0x1e8483,event=0x4f/
      itlb_misses.walk_pending: 8085772 16010162799 16010162799
      dtlb_load_misses.walk_pending: 28134579 16010162799 16010162799
      dtlb_store_misses.walk_pending: 7276535 16010162799 16010162799
      ept.walk_pending: 2 16010162799 16010162799
      cycles: 315140605 16010162799 16010162799
    
       Performance counter stats for 'system wide':
    
               8,085,772      itlb_misses.walk_pending  #      0.1 Page_Walks_Utilization
              28,134,579      dtlb_load_misses.walk_pending
               7,276,535      dtlb_store_misses.walk_pending
                       2      ept.walk_pending
             315,140,605      cycles
    
             2.002333181 seconds time elapsed
    
      #
    Signed-off-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Link: http://lore.kernel.org/lkml/1582581564-184429-6-git-send-email-kan.liang@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    b95fcd2c
skx-metrics.json 25.9 KB