selftests/resctrl: Print accurate buffer size as part of MBM results
[ Upstream commit 1b4840395f08e9723a15fea42c2d31090e8375f3 ]
By default the MBM test uses the "fill_buf" benchmark to keep reading
from a buffer with size DEFAULT_SPAN while measuring memory bandwidth.
User space can provide an alternate benchmark or amend the size of
the buffer "fill_buf" should use.
Analysis of the MBM measurements do not require that a buffer be used
and thus do not require knowing the size of the buffer if it was used
during testing. Even so, the buffer size is printed as informational
as part of the MBM test results. What is printed as buffer size is
hardcoded as DEFAULT_SPAN, even if the test relied on another benchmark
(that may or may not use a buffer) or if user space amended the buffer
size.
Ensure that accurate buffer size is printed when using "fill_buf"
benchmark and omit the buffer size information if another benchmark
is used.
Fixes: ecdbb911f2 ("selftests/resctrl: Add MBM test")
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
3231a7667f
commit
ba66932b5f
@@ -40,7 +40,8 @@ show_bw_info(unsigned long *bw_imc, unsigned long *bw_resc, size_t span)
|
||||
ksft_print_msg("%s Check MBM diff within %d%%\n",
|
||||
ret ? "Fail:" : "Pass:", MAX_DIFF_PERCENT);
|
||||
ksft_print_msg("avg_diff_per: %d%%\n", avg_diff_per);
|
||||
ksft_print_msg("Span (MB): %zu\n", span / MB);
|
||||
if (span)
|
||||
ksft_print_msg("Span (MB): %zu\n", span / MB);
|
||||
ksft_print_msg("avg_bw_imc: %lu\n", avg_bw_imc);
|
||||
ksft_print_msg("avg_bw_resc: %lu\n", avg_bw_resc);
|
||||
|
||||
@@ -138,15 +139,26 @@ static int mbm_run_test(const struct resctrl_test *test, const struct user_param
|
||||
.setup = mbm_setup,
|
||||
.measure = mbm_measure,
|
||||
};
|
||||
char *endptr = NULL;
|
||||
size_t span = 0;
|
||||
int ret;
|
||||
|
||||
remove(RESULT_FILE_NAME);
|
||||
|
||||
if (uparams->benchmark_cmd[0] && strcmp(uparams->benchmark_cmd[0], "fill_buf") == 0) {
|
||||
if (uparams->benchmark_cmd[1] && *uparams->benchmark_cmd[1] != '\0') {
|
||||
errno = 0;
|
||||
span = strtoul(uparams->benchmark_cmd[1], &endptr, 10);
|
||||
if (errno || *endptr != '\0')
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
ret = resctrl_val(test, uparams, uparams->benchmark_cmd, ¶m);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = check_results(DEFAULT_SPAN);
|
||||
ret = check_results(span);
|
||||
if (ret && (get_vendor() == ARCH_INTEL))
|
||||
ksft_print_msg("Intel MBM may be inaccurate when Sub-NUMA Clustering is enabled. Check BIOS configuration.\n");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user