From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: linux-kselftest@vger.kernel.org,
"Reinette Chatre" <reinette.chatre@intel.com>,
"Shuah Khan" <shuah@kernel.org>,
"Shaopeng Tan" <tan.shaopeng@jp.fujitsu.com>,
"Maciej Wieczór-Retman" <maciej.wieczor-retman@intel.com>,
"Fenghua Yu" <fenghua.yu@intel.com>
Cc: linux-kernel@vger.kernel.org,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
Subject: [PATCH v4 00/29] selftests/resctrl: CAT test improvements & generalized test framework
Date: Fri, 15 Dec 2023 17:04:46 +0200 [thread overview]
Message-ID: <20231215150515.36983-1-ilpo.jarvinen@linux.intel.com> (raw)
Hi all,
Here's v4 series to improve resctrl selftests with generalized test
framework and rewritten CAT test.
The series contains following improvements:
- Excludes shareable bits from CAT test allocation to avoid interference
- Replaces file "sink" with a volatile variable
- Alters read pattern to defeat HW prefetcher optimizations
- Rewrites CAT test to make the CAT test reliable and truly measure
if CAT is working or not
- Introduces generalized test framework making easier to add new tests
- Lots of other cleanups & refactoring
This series has been tested across a large number of systems from
different generations.
v4:
- Reworded a few error prints
- Changelog improvements
- fprintf()'s error handling changed ksft_perror() -> ksft_print_msg()
- Keep using ksft_*() instead of fprintf() in get_bit_mask()
- Check against div-by-zero
- Adjust one return type
v3:
- New patches to handle return errno, perror() and return value comments
- Tweak changelogs
- Moved error printout removal to other patch
- Zero bit CBM returns error
- Tweak comments
- Make get_shareable_mask() static
- Return directly without storing result into ret variable first
- llc -> LLC
- Altered changelog and removed "the whole time" wording because
llc occu results are still unsigned long
- Altered changelog's wording to not say "a volatile pointer"
- Make min_diff_percent and MIN_DIFF_PERCENT_PER_BIT unsigned long
- Add patch to restore CPU affinity after CAT test
- Move uparams clear into init function
- Add CPU vendor ID bitmask comment
- Use test_resource_feature_check(test) in CMT
- "feature" -> "resource" in function comment
v2:
- Postpone adding L2 CAT test as more investigations are necessary
- Add patch to remove ctrlc_handler() from wrong place
- Improvements to changelogs
- Function comments improvements & comment cleanups
- Move some parts of the changes into more logical patch
- If checks: buf == NULL -> !buf
- Variable naming:
- p -> buf
- cbm_mask_path -> cbm_path
- Function naming:
- get_cbm_mask() -> get_full_cbm()
- cache_size() -> cache_portion_size()
- Use PATH_MAX
- Improved cache_portion_size() parameter names
- int count -> unsigned int
- Pass filename to measurement taking functions instead of
resctrl_val_param
- !lines ? : reversal
- Removed bogus static from function local variable
- Open perf fd only once, reset & enable in the innermost test loop
- Add perf fd ioctl() error handling
- Add patch to change compiler optimization prevention "sink" from file
to volatile variable
- Remove cpu_no and resource (the latter was added in v1) members from
resctrl_val_param (pass uparams and test where those are needed)
- Removed ARRAY_SIZE() macro
- Add patch to rename "resource_id" to "domain_id"
Ilpo Järvinen (29):
selftests/resctrl: Convert perror() to ksft_perror() or
ksft_print_msg()
selftests/resctrl: Return -1 instead of errno on error
selftests/resctrl: Don't use ctrlc_handler() outside signal handling
selftests/resctrl: Change function comments to say < 0 on error
selftests/resctrl: Split fill_buf to allow tests finer-grained control
selftests/resctrl: Refactor fill_buf functions
selftests/resctrl: Refactor get_cbm_mask() and rename to
get_full_cbm()
selftests/resctrl: Mark get_cache_size() cache_type const
selftests/resctrl: Create cache_portion_size() helper
selftests/resctrl: Exclude shareable bits from schemata in CAT test
selftests/resctrl: Split measure_cache_vals()
selftests/resctrl: Split show_cache_info() to test specific and
generic parts
selftests/resctrl: Remove unnecessary __u64 -> unsigned long
conversion
selftests/resctrl: Remove nested calls in perf event handling
selftests/resctrl: Consolidate naming of perf event related things
selftests/resctrl: Improve perf init
selftests/resctrl: Convert perf related globals to locals
selftests/resctrl: Move cat_val() to cat_test.c and rename to
cat_test()
selftests/resctrl: Open perf fd before start & add error handling
selftests/resctrl: Replace file write with volatile variable
selftests/resctrl: Read in less obvious order to defeat prefetch
optimizations
selftests/resctrl: Rewrite Cache Allocation Technology (CAT) test
selftests/resctrl: Restore the CPU affinity after CAT test
selftests/resctrl: Create struct for input parameters
selftests/resctrl: Introduce generalized test framework
selftests/resctrl: Pass write_schemata() resource instead of test name
selftests/resctrl: Add helper to convert L2/3 to integer
selftests/resctrl: Rename resource ID to domain ID
selftests/resctrl: Get domain id from cache id
tools/testing/selftests/resctrl/cache.c | 287 +++++----------
tools/testing/selftests/resctrl/cat_test.c | 337 +++++++++++-------
tools/testing/selftests/resctrl/cmt_test.c | 80 +++--
tools/testing/selftests/resctrl/fill_buf.c | 132 ++++---
tools/testing/selftests/resctrl/mba_test.c | 30 +-
tools/testing/selftests/resctrl/mbm_test.c | 32 +-
tools/testing/selftests/resctrl/resctrl.h | 135 +++++--
.../testing/selftests/resctrl/resctrl_tests.c | 197 ++++------
tools/testing/selftests/resctrl/resctrl_val.c | 138 +++----
tools/testing/selftests/resctrl/resctrlfs.c | 321 +++++++++++------
10 files changed, 945 insertions(+), 744 deletions(-)
--
2.30.2
next reply other threads:[~2023-12-15 15:05 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-15 15:04 Ilpo Järvinen [this message]
2023-12-15 15:04 ` [PATCH v4 01/29] selftests/resctrl: Convert perror() to ksft_perror() or ksft_print_msg() Ilpo Järvinen
2023-12-15 17:39 ` Reinette Chatre
2023-12-15 15:04 ` [PATCH v4 02/29] selftests/resctrl: Return -1 instead of errno on error Ilpo Järvinen
2023-12-15 15:04 ` [PATCH v4 03/29] selftests/resctrl: Don't use ctrlc_handler() outside signal handling Ilpo Järvinen
2023-12-15 15:04 ` [PATCH v4 04/29] selftests/resctrl: Change function comments to say < 0 on error Ilpo Järvinen
2023-12-15 15:04 ` [PATCH v4 05/29] selftests/resctrl: Split fill_buf to allow tests finer-grained control Ilpo Järvinen
2023-12-15 15:04 ` [PATCH v4 06/29] selftests/resctrl: Refactor fill_buf functions Ilpo Järvinen
2023-12-15 15:04 ` [PATCH v4 07/29] selftests/resctrl: Refactor get_cbm_mask() and rename to get_full_cbm() Ilpo Järvinen
2023-12-15 17:40 ` Reinette Chatre
2023-12-15 15:04 ` [PATCH v4 08/29] selftests/resctrl: Mark get_cache_size() cache_type const Ilpo Järvinen
2023-12-15 15:04 ` [PATCH v4 09/29] selftests/resctrl: Create cache_portion_size() helper Ilpo Järvinen
2023-12-15 15:04 ` [PATCH v4 10/29] selftests/resctrl: Exclude shareable bits from schemata in CAT test Ilpo Järvinen
2023-12-15 15:04 ` [PATCH v4 11/29] selftests/resctrl: Split measure_cache_vals() Ilpo Järvinen
2023-12-15 15:04 ` [PATCH v4 12/29] selftests/resctrl: Split show_cache_info() to test specific and generic parts Ilpo Järvinen
2023-12-15 15:04 ` [PATCH v4 13/29] selftests/resctrl: Remove unnecessary __u64 -> unsigned long conversion Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 14/29] selftests/resctrl: Remove nested calls in perf event handling Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 15/29] selftests/resctrl: Consolidate naming of perf event related things Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 16/29] selftests/resctrl: Improve perf init Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 17/29] selftests/resctrl: Convert perf related globals to locals Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 18/29] selftests/resctrl: Move cat_val() to cat_test.c and rename to cat_test() Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 19/29] selftests/resctrl: Open perf fd before start & add error handling Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 20/29] selftests/resctrl: Replace file write with volatile variable Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 21/29] selftests/resctrl: Read in less obvious order to defeat prefetch optimizations Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 22/29] selftests/resctrl: Rewrite Cache Allocation Technology (CAT) test Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 23/29] selftests/resctrl: Restore the CPU affinity after CAT test Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 24/29] selftests/resctrl: Create struct for input parameters Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 25/29] selftests/resctrl: Introduce generalized test framework Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 26/29] selftests/resctrl: Pass write_schemata() resource instead of test name Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 27/29] selftests/resctrl: Add helper to convert L2/3 to integer Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 28/29] selftests/resctrl: Rename resource ID to domain ID Ilpo Järvinen
2023-12-15 15:05 ` [PATCH v4 29/29] selftests/resctrl: Get domain id from cache id Ilpo Järvinen
2023-12-15 17:45 ` [PATCH v4 00/29] selftests/resctrl: CAT test improvements & generalized test framework Reinette Chatre
2023-12-15 23:45 ` Reinette Chatre
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231215150515.36983-1-ilpo.jarvinen@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=fenghua.yu@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=maciej.wieczor-retman@intel.com \
--cc=reinette.chatre@intel.com \
--cc=shuah@kernel.org \
--cc=tan.shaopeng@jp.fujitsu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®