[PATCH v7 00/13] selftests/resctrl: Add resctrl selftest

From: Fenghua Yu
Date: Sat Feb 09 2019 - 21:57:47 EST

With more and more resctrl features are being added by Intel, AMD
and ARM, a test tool is becoming more and more useful to validate
that both hardware and software functionalities work as expected.

We introduce resctrl selftest to cover resctrl features on both
X86 and ARM architectures. It first implements MBM (Memory Bandwidth
Monitoring), MBA (Memory Bandwidth Allocation), L3 CAT (Cache Allocation
Technology), and CQM (Cache QoS Monitoring) tests. We can enhance
the selftest tool to include more functionality tests in future.

The tool has been tested on both Intel RDT and AMD QoS.

There is an existing resctrl test suite 'intel_cmt_cat'. But the major
purpose of the tool is to test Intel(R) RDT hardware via writing and
reading MSR registers. It does access resctrl file system; but the
functionalities are very limited. And it doesn't support automatic test
and a lot of manual verifications are involved.

So the selftest tool we are introducing here provides a convenient
tool which does automatic resctrl testing, is easily available in kernel
tree, and will be extended to AMD QoS and ARM MPAM.

The selftest tool is in tools/testing/selftests/resctrl in order to have
generic test code for all architectures.

- Fix a few warnings when compiling patches separately, pointed by Babu

- Fix a benchmark reading optimized out issue in newer GCC.
- Fix a few coding style issues.
- Re-arrange code among patches to make cleaner code. No change in patches

- Based the v4 patches submitted by Fenghua Yu and added changes to support
- Changed the function name get_sock_num to get_resource_id. Intel uses
socket number for schemata and AMD uses l3 index id. To generalize,
changed the function name to get_resource_id.
- Added the code to detect vendor.
- Disabled the few tests for AMD where the test results are not clear.
Also AMD does not have IMC.
- Fixed few compile issues.
- Some cleanup to make each patch independent.
- Tested the patches on AMD system. Fenghua, Need your help to test on
Intel box. Please feel free to change and resubmit if something
- Here is the link for previous version.

- address comments from Balu and Randy
- Add CAT and CQM tests

- Change code based on comments from Babu Moger
- Remove some unnessary code and use pipe to communicate b/w processes

- Change code based on comments from Babu Moger
- Clean up other places.

Arshiya Hayatkhan Pathan (4):
selftests/resctrl: Add MBM test
selftests/resctrl: Add MBA test
selftests/resctrl: Add Cache QoS Monitoring (CQM) selftest
selftests/resctrl: Add Cache Allocation Technology (CAT) selftest

Babu Moger (3):
selftests/resctrl: Add vendor detection mechanism
selftests/resctrl: Use cache index3 id for AMD schemata masks
selftests/resctrl: Disable MBA and MBM tests for AMD

Fenghua Yu (2):
selftests/resctrl: Add README for resctrl tests
selftests/resctrl: Add the test in MAINTAINERS

Sai Praneeth Prakhya (4):
selftests/resctrl: Add basic resctrl file system operations and data
selftests/resctrl: Read memory bandwidth from perf IMC counter and
from resctrl file system
selftests/resctrl: Add callback to start a benchmark
selftests/resctrl: Add built in benchmark

tools/testing/selftests/resctrl/Makefile | 16 +
tools/testing/selftests/resctrl/README | 54 ++
tools/testing/selftests/resctrl/cache.c | 274 +++++++++
tools/testing/selftests/resctrl/cat_test.c | 242 ++++++++
tools/testing/selftests/resctrl/cqm_test.c | 173 ++++++
tools/testing/selftests/resctrl/fill_buf.c | 210 +++++++
tools/testing/selftests/resctrl/mba_test.c | 178 ++++++
tools/testing/selftests/resctrl/mbm_test.c | 150 +++++
tools/testing/selftests/resctrl/resctrl.h | 117 ++++
tools/testing/selftests/resctrl/resctrl_tests.c | 238 ++++++++
tools/testing/selftests/resctrl/resctrl_val.c | 723 ++++++++++++++++++++++++
tools/testing/selftests/resctrl/resctrlfs.c | 668 ++++++++++++++++++++++
13 files changed, 3044 insertions(+)
create mode 100644 tools/testing/selftests/resctrl/Makefile
create mode 100644 tools/testing/selftests/resctrl/README
create mode 100644 tools/testing/selftests/resctrl/cache.c
create mode 100644 tools/testing/selftests/resctrl/cat_test.c
create mode 100644 tools/testing/selftests/resctrl/cqm_test.c
create mode 100644 tools/testing/selftests/resctrl/fill_buf.c
create mode 100644 tools/testing/selftests/resctrl/mba_test.c
create mode 100644 tools/testing/selftests/resctrl/mbm_test.c
create mode 100644 tools/testing/selftests/resctrl/resctrl.h
create mode 100644 tools/testing/selftests/resctrl/resctrl_tests.c
create mode 100644 tools/testing/selftests/resctrl/resctrl_val.c
create mode 100644 tools/testing/selftests/resctrl/resctrlfs.c