Skip to content

[wperf, wperf-lib, wperf-scripts] WPERF-1038: Direct event-to-core assignment, part 2

Introduction

This MR is the biggest part of the core_N/.../ selector work. ioctl_events is poorly encapsulated, which led to a cascade of changes that must be done together.

There are a few issues that are NOT addressed by this MR, to reduce its already-enormous size.

  • cores_idx is redundant, the same information appears in ioctl_events.
  • Some checks are done against cores_idx, which will not catch issues arising from invalid core_N selectors.
  • multiplexing is still a global flag per class. The last core's multiplexing status will incorrectly apply to all other cores if the core selector syntax is used and only some cores need multiplexing.

In this patch:

  • wperf-scripts: Test cases for the core_N/.../ selector syntax
  • wperf: Update test output
  • wperf-lib: Mirror the updates in wperf
  • wperf: Only collect the event classes once
  • wperf: Update the test functions with the new ioctl_events type
  • wperf: Multicore events_assign
  • wperf: Multicore print_core_metrics
  • wperf: Adjust print_dmc_stat
  • wperf: Adjust print_dsu_stat, fix a crash when used on hardware without DSU
  • wperf: Limited multicore print_core_stat (existing TODO kept in place)
  • wperf: Adjust spe_print_core_stats and get_core_stat_by_name
  • wperf: Multicore timeline_header
  • wperf: Use ioctl_events
  • wperf: Produce individual ioctl_events for each core

Testing

These tests are new:

wperf_cli_stat_multicore_test.py::test_wperf_stat_multicore[0-ld_spec-expected0] PASSED                          [ 25%]
wperf_cli_stat_multicore_test.py::test_wperf_stat_multicore[0-ld_spec,core_1/st_spec/-expected1] PASSED          [ 50%]
wperf_cli_stat_multicore_test.py::test_wperf_stat_multicore[0,1-ld_spec,core_1/st_spec/-expected2] PASSED        [ 75%]
wperf_cli_stat_multicore_test.py::test_wperf_stat_multicore[0-2-{ld_spec,inst_spec},core_1/st_spec/,core_2/l1d_cache,{exc_taken}/,core_4/{ld_retired,st_retired}/-expected3] PASSED [100%]

The rest:

wperf-test
  Tests in group: 293
   Total Duration: 1.4 sec

Outcomes
   293 Passed
wperf_cli_common_test.py ....                                                                                    [  0%]
wperf_cli_config_test.py .....                                                                                   [  0%]
wperf_cli_cpython_bench_test.py .s                                                                               [  1%]
wperf_cli_cpython_dep_record_test.py ................                                                            [  2%]
wperf_cli_cpython_dep_sample_test.py .                                                                           [  2%]
wperf_cli_dmc_test.py s                                                                                          [  2%]
wperf_cli_dmc_value_test.py s                                                                                    [  2%]
wperf_cli_extra_events_test.py ....                                                                              [  3%]
wperf_cli_hammer_core_test.py ..................                                                                 [  5%]
wperf_cli_help_test.py .s                                                                                        [  5%]
wperf_cli_info_str_test.py .                                                                                     [  5%]
wperf_cli_json_validator_test.py ................s                                                               [  7%]
wperf_cli_list_test.py .....s                                                                                    [  7%]
wperf_cli_lock_test.py .....                                                                                     [  8%]
wperf_cli_man_test.py .....................................................................                      [ 14%]
wperf_cli_man_ts_test.py ....................................................................................... [ 23%]
.......................................................................                                          [ 30%]
wperf_cli_metrics_test.py ..s....s                                                                               [ 31%]
wperf_cli_padding_test.py ...................................................................................... [ 39%]
................................................................................................................ [ 50%]
................................................................................................................ [ 61%]
..................................                                                                               [ 65%]
wperf_cli_prettytable_test.py .....                                                                              [ 65%]
wperf_cli_record_test.py ................s                                                                       [ 67%]
wperf_cli_sample_test.py ..........                                                                              [ 68%]
wperf_cli_stat_multicore_test.py ....                                                                            [ 68%]
wperf_cli_stat_test.py ......................................................................                    [ 75%]
wperf_cli_stat_value_test.py ................................................................................... [ 83%]
.................................................................................................                [ 93%]
wperf_cli_test_test.py ...........                                                                               [ 94%]
wperf_cli_timeline_test.py .....................................................                                 [ 99%]
wperf_cli_xperf_test.py s                                                                                        [ 99%]
wperf_lib_app_test.py .                                                                                          [ 99%]
wperf_lib_c_compat_test.py .                                                                                     [100%]
Edited by lcsondes

Merge request reports

Loading