Uploaded image for project: 'RHEL Testing'
  1. RHEL Testing
  2. RHELTEST-2389

[RHEL] packages/perf/internal-testsuite: 103: perf stat JSON output linter

XMLWordPrintable

    • False
    • Hide

      None

      Show
      None
    • False
    • None
    • rhel-se-kernel

      Beaker jobs:

      https://beaker.engineering.redhat.com/jobs/12057950

      https://beaker.engineering.redhat.com/jobs/12058144

      https://beaker.engineering.redhat.com/jobs/12044588

       

      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
      ::   TEST #103 : perf stat JSON output linter
      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
      
      :: [ 07:27:47 ] :: [   LOG    ] :: --- start ---
      Checking json output: no args event syntax error: 'topdown-retiring/metric-id=topdown!1retiring/,TOPDOWN.SL..'
                           \___ Bad event or PMU
      
      Unable to find PMU or event on a PMU of 'topdown-retiring'
      [Success]
      Checking json output: system wide event syntax error: 'topdown-retiring/metric-id=topdown!1retiring/,TOPDOWN.SL..'
                           \___ Bad event or PMU
      
      Unable to find PMU or event on a PMU of 'topdown-retiring'
      [Success]
      Checking json output: interval event syntax error: 'topdown-retiring/metric-id=topdown!1retiring/,TOPDOWN.SL..'
                           \___ Bad event or PMU
      
      Unable to find PMU or event on a PMU of 'topdown-retiring'
      [Success]
      Checking json output: event [Success]
      Checking json output: per thread event syntax error: 'topdown-retiring/metric-id=topdown!1retiring/,TOPDOWN.SL..'
                           \___ Bad event or PMU
      
      Unable to find PMU or event on a PMU of 'topdown-retiring'
      [Success]
      Checking json output: per node event syntax error: 'topdown-retiring/metric-id=topdown!1retiring/,TOPDOWN.SL..'
                           \___ Bad event or PMU
      
      Unable to find PMU or event on a PMU of 'topdown-retiring'
      [Success]
      Checking json output: system wide no aggregation event syntax error: 'topdown-retiring/metric-id=topdown!1retiring/,TOPDOWN.SL..'
                           \___ Bad event or PMU
      
      Unable to find PMU or event on a PMU of 'topdown-retiring'
      [Success]
      Checking json output: per core event syntax error: 'topdown-retiring/metric-id=topdown!1retiring/,TOPDOWN.SL..'
                           \___ Bad event or PMU
      
      Unable to find PMU or event on a PMU of 'topdown-retiring'
      [Success]
      Checking json output: per cache_instance Test failed for input:
      event syntax error: 'topdown-retiring/metric-id=topdown!1retiring/,TOPDOWN.SL..'
      
                           \___ Bad event or PMU
      
      
      
      Unable to find PMU or event on a PMU of 'topdown-retiring'
      
      {"cache" : "S0-D0-L3-ID0", "aggregate-number" : 1, "counter-value" : "0.975548", "unit" : "msec", "event" : "cpu-clock", "event-runtime" : 976397, "pcnt-running" : 100.00, "metric-value" : "1.114879", "metric-unit" : "CPUs utilized"}
      
      {"cache" : "S0-D0-L3-ID0", "aggregate-number" : 1, "counter-value" : "5.000000", "unit" : "", "event" : "context-switches", "event-runtime" : 975542, "pcnt-running" : 100.00, "metric-value" : "5.125324", "metric-unit" : "K/sec"}
      
      {"cache" : "S0-D0-L3-ID0", "aggregate-number" : 1, "counter-value" : "1.000000", "unit" : "", "event" : "cpu-migrations", "event-runtime" : 975248, "pcnt-running" : 100.00, "metric-value" : "1.025065", "metric-unit" : "K/sec"}
      
      {"cache" : "S0-D0-L3-ID0", "aggregate-number" : 1, "counter-value" : "58.000000", "unit" : "", "event" : "page-faults", "event-runtime" : 974991, "pcnt-running" : 100.00, "metric-value" : "59.453763", "metric-unit" : "K/sec"}
      
      {"cache" : "S0-D0-L3-ID0", "aggregate-number" : 1, "counter-value" : "2412440.000000", "unit" : "", "event" : "cycles", "event-runtime" : 978324, "pcnt-running" : 100.00, "metric-value" : "2.472908", "metric-unit" : "GHz"}
      
      {"cache" : "S0-D0-L3-ID0", "aggregate-number" : 1, "counter-value" : "2281460.000000", "unit" : "", "event" : "instructions", "event-runtime" : 962142, "pcnt-running" : 100.00, "metric-value" : "0.945706", "metric-unit" : "insn per cycle"}
      
      {"cache" : "S0-D0-L3-ID0", "aggregate-number" : 1, "counter-value" : "497582.000000", "unit" : "", "event" : "branches", "event-runtime" : 953219, "pcnt-running" : 100.00, "metric-value" : "510.053836", "metric-unit" : "M/sec"}
      
      {"cache" : "S0-D0-L3-ID0", "aggregate-number" : 1, "counter-value" : "10177.000000", "unit" : "", "event" : "branch-misses", "event-runtime" : 942231, "pcnt-running" : 100.00, "metric-value" : "2.045291", "metric-unit" : "of all branches"}
      
      {"cache" : "S1-D1-L3-ID1", "aggregate-number" : 1, "counter-value" : "0.931600", "unit" : "msec", "event" : "cpu-clock", "event-runtime" : 932389, "pcnt-running" : 100.00, "metric-value" : "1.064654", "metric-unit" : "CPUs utilized"}
      
      {"cache" : "S1-D1-L3-ID1", "aggregate-number" : 1, "counter-value" : "5.000000", "unit" : "", "event" : "context-switches", "event-runtime" : 931360, "pcnt-running" : 100.00, "metric-value" : "5.367110", "metric-unit" : "K/sec"}
      
      {"cache" : "S1-D1-L3-ID1", "aggregate-number" : 1, "counter-value" : "1.000000", "unit" : "", "event" : "cpu-migrations", "event-runtime" : 930815, "pcnt-running" : 100.00, "metric-value" : "1.073422", "metric-unit" : "K/sec"}
      
      {"cache" : "S1-D1-L3-ID1", "aggregate-number" : 1, "counter-value" : "2.000000", "unit" : "", "event" : "page-faults", "event-runtime" : 930363, "pcnt-running" : 100.00, "metric-value" : "2.146844", "metric-unit" : "K/sec"}
      
      {"cache" : "S1-D1-L3-ID1", "aggregate-number" : 1, "counter-value" : "182008.000000", "unit" : "", "event" : "cycles", "event-runtime" : 933168, "pcnt-running" : 100.00, "metric-value" : "0.195371", "metric-unit" : "GHz"}
      
      {"cache" : "S1-D1-L3-ID1", "aggregate-number" : 1, "counter-value" : "77900.000000", "unit" : "", "event" : "instructions", "event-runtime" : 921422, "pcnt-running" : 100.00, "metric-value" : "0.428003", "metric-unit" : "insn per cycle"}
      
      {"cache" : "S1-D1-L3-ID1", "aggregate-number" : 1, "counter-value" : "17883.000000", "unit" : "", "event" : "branches", "event-runtime" : 912898, "pcnt-running" : 100.00, "metric-value" : "19.196007", "metric-unit" : "M/sec"}
      
      {"cache" : "S1-D1-L3-ID1", "aggregate-number" : 1, "counter-value" : "806.000000", "unit" : "", "event" : "branch-misses", "event-runtime" : 900471, "pcnt-running" : 100.00, "metric-value" : "4.507074", "metric-unit" : "of all branches"}
      
      Traceback (most recent call last):
        File "/usr/libexec/perf-core/tests/shell/lib/perf_json_output_lint.py", line 98, in <module>
          check_json_output(expected_items)
        File "/usr/libexec/perf-core/tests/shell/lib/perf_json_output_lint.py", line 68, in check_json_output
          for item in json.loads(input):
        File "/usr/lib64/python3.9/json/__init__.py", line 346, in loads
          return _default_decoder.decode(s)
        File "/usr/lib64/python3.9/json/decoder.py", line 337, in decode
          obj, end = self.raw_decode(s, idx=_w(s, 0).end())
        File "/usr/lib64/python3.9/json/decoder.py", line 355, in raw_decode
          raise JSONDecodeError("Expecting value", s, err.value) from None
      json.decoder.JSONDecodeError: Expecting value: line 2 column 1 (char 2)
      ---- end ----
      103: perf stat JSON output linter                                    : FAILED!
      :: [ 07:27:47 ] :: [   FAIL   ] :: 103: perf stat JSON output linter 
      :: [ 07:27:47 ] :: [   INFO   ] :: Sending 103.log as 103.log
      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
      ::   Duration: 0s
      ::   Assertions: 0 good, 1 bad
      ::   RESULT: FAIL (TEST #103 : perf stat JSON output linter) 

       

       

        Root Cause Analysis

        The Issue:
        The failing test #103 "perf stat JSON output linter" is trying to use Intel-specific PMU events:
        'topdown-retiring/metric-id=topdown!1retiring/,TOPDOWN.SL..'

        Why It's Failing:
        1. Intel-specific metrics on AMD hardware: The topdown-retiring PMU events are part of Intel's Top-Down Microarchitecture Analysis Method, which is not available on AMD processors
        2. JSON parsing error: The test script expects valid JSON output, but receives error messages instead due to the missing PMU events

        This is NOT a bug because:

        ❌ Not a Kernel Bug:
        - The kernel correctly reports that the PMU events are unavailable
        - AMD Ryzen processors legitimately don't support Intel's topdown metrics
        - The error message is accurate: "Unable to find PMU or event on a PMU of 'topdown-retiring'"

        ❌ Not a Test Case Bug:
        - The test logic itself appears sound (other JSON checks pass with [Success])
        - The test properly handles missing events in most cases

        This IS an architecture compatibility issue:

        ✅ Missing Architecture Handling:
        The test should either:
        1. Skip on AMD systems (add to packages/perf/internal-testsuite/allow.list)
        2. Use AMD-equivalent metrics when available
        3. Have conditional logic for different CPU vendors

        Recommended Solution

        Add an entry to packages/perf/internal-testsuite/allow.list:

       

       

              xiubli@redhat.com Xiubo Li
              xiubli@redhat.com Xiubo Li
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: