• Jin Yao's avatar
    perf parse-events: Create two hybrid cache events · 30def61f
    Jin Yao authored
    For cache events, they have pre-defined configs. The kernel needs
    to know where the cache event comes from (e.g. from cpu_core pmu
    or from cpu_atom pmu). But the perf type PERF_TYPE_HW_CACHE
    can't carry pmu information.
    
    Now the type PERF_TYPE_HW_CACHE is extended to be PMU aware type.
    The PMU type ID is stored at attr.config[63:32].
    
    When enabling a hybrid cache event without specified pmu, such as,
    'perf stat -e LLC-loads -a', two events are created
    automatically. One is for atom, the other is for core.
    
      # perf stat -e LLC-loads -a -vv -- sleep 1
      Control descriptor is not initialized
      ------------------------------------------------------------
      perf_event_attr:
        type                             3
        size                             120
        config                           0x400000002
        sample_type                      IDENTIFIER
        read_format                      TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING
        disabled                         1
        inherit                          1
        exclude_guest                    1
      ------------------------------------------------------------
      sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 3
      ------------------------------------------------------------
      ...
      ------------------------------------------------------------
      perf_event_attr:
        type                             3
        size                             120
        config                           0x400000002
        sample_type                      IDENTIFIER
        read_format                      TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING
        disabled                         1
        inherit                          1
        exclude_guest                    1
      ------------------------------------------------------------
      sys_perf_event_open: pid -1  cpu 15  group_fd -1  flags 0x8 = 19
      ------------------------------------------------------------
      perf_event_attr:
        type                             3
        size                             120
        config                           0x800000002
        sample_type                      IDENTIFIER
        read_format                      TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING
        disabled                         1
        inherit                          1
        exclude_guest                    1
      ------------------------------------------------------------
      sys_perf_event_open: pid -1  cpu 16  group_fd -1  flags 0x8 = 20
      ------------------------------------------------------------
      ...
      ------------------------------------------------------------
      perf_event_attr:
        type                             3
        size                             120
        config                           0x800000002
        sample_type                      IDENTIFIER
        read_format                      TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING
        disabled                         1
        inherit                          1
        exclude_guest                    1
      ------------------------------------------------------------
      sys_perf_event_open: pid -1  cpu 23  group_fd -1  flags 0x8 = 27
      LLC-loads: 0: 1507 1001800280 1001800280
      LLC-loads: 1: 666 1001812250 1001812250
      LLC-loads: 2: 3353 1001813453 1001813453
      LLC-loads: 3: 514 1001848795 1001848795
      LLC-loads: 4: 627 1001952832 1001952832
      LLC-loads: 5: 4399 1001451154 1001451154
      LLC-loads: 6: 1240 1001481052 1001481052
      LLC-loads: 7: 478 1001520348 1001520348
      LLC-loads: 8: 691 1001551236 1001551236
      LLC-loads: 9: 310 1001578945 1001578945
      LLC-loads: 10: 1018 1001594354 1001594354
      LLC-loads: 11: 3656 1001622355 1001622355
      LLC-loads: 12: 882 1001661416 1001661416
      LLC-loads: 13: 506 1001693963 1001693963
      LLC-loads: 14: 3547 1001721013 1001721013
      LLC-loads: 15: 1399 1001734818 1001734818
      LLC-loads: 0: 1314 1001793826 1001793826
      LLC-loads: 1: 2857 1001752764 1001752764
      LLC-loads: 2: 646 1001830694 1001830694
      LLC-loads: 3: 1612 1001864861 1001864861
      LLC-loads: 4: 2244 1001912381 1001912381
      LLC-loads: 5: 1255 1001943889 1001943889
      LLC-loads: 6: 4624 1002021109 1002021109
      LLC-loads: 7: 2703 1001959302 1001959302
      LLC-loads: 24793 16026838264 16026838264
      LLC-loads: 17255 8015078826 8015078826
    
       Performance counter stats for 'system wide':
    
                  24,793      cpu_core/LLC-loads/
                  17,255      cpu_atom/LLC-loads/
    
             1.001970988 seconds time elapsed
    
    0x4 in 0x400000002 indicates the cpu_core pmu.
    0x8 in 0x800000002 indicates the cpu_atom pmu.
    Signed-off-by: default avatarJin Yao <yao.jin@linux.intel.com>
    Reviewed-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Kan Liang <kan.liang@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20210427070139.25256-10-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    30def61f
parse-events-hybrid.h 684 Bytes