selftests/resctrl: Split show_cache_info() to test specific and generic parts
show_cache_info() calculates results and provides generic cache information. This makes it hard to alter pass/fail conditions. Separate the test specific checks into CAT and CMT test files and leave only the generic information part into show_cache_info(). Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
This commit is contained in:
parent
a575c9734f
commit
5caf1b6400
@ -279,43 +279,17 @@ pe_close:
|
||||
}
|
||||
|
||||
/*
|
||||
* show_cache_info: show cache test result information
|
||||
* @sum_llc_val: sum of LLC cache result data
|
||||
* @no_of_bits: number of bits
|
||||
* @cache_span: cache span in bytes for CMT or in lines for CAT
|
||||
* @max_diff: max difference
|
||||
* @max_diff_percent: max difference percentage
|
||||
* @num_of_runs: number of runs
|
||||
* @platform: show test information on this platform
|
||||
* @cmt: CMT test or CAT test
|
||||
*
|
||||
* Return: 0 on success. non-zero on failure.
|
||||
* show_cache_info - Show generic cache test information
|
||||
* @no_of_bits: Number of bits
|
||||
* @avg_llc_val: Average of LLC cache result data
|
||||
* @cache_span: Cache span
|
||||
* @lines: @cache_span in lines or bytes
|
||||
*/
|
||||
int show_cache_info(unsigned long sum_llc_val, int no_of_bits,
|
||||
size_t cache_span, unsigned long max_diff,
|
||||
unsigned long max_diff_percent, unsigned long num_of_runs,
|
||||
bool platform, bool cmt)
|
||||
void show_cache_info(int no_of_bits, unsigned long avg_llc_val,
|
||||
size_t cache_span, bool lines)
|
||||
{
|
||||
unsigned long avg_llc_val = 0;
|
||||
float diff_percent;
|
||||
long avg_diff = 0;
|
||||
int ret;
|
||||
|
||||
avg_llc_val = sum_llc_val / num_of_runs;
|
||||
avg_diff = (long)abs(cache_span - avg_llc_val);
|
||||
diff_percent = ((float)cache_span - avg_llc_val) / cache_span * 100;
|
||||
|
||||
ret = platform && abs((int)diff_percent) > max_diff_percent &&
|
||||
(cmt ? (abs(avg_diff) > max_diff) : true);
|
||||
|
||||
ksft_print_msg("%s Check cache miss rate within %lu%%\n",
|
||||
ret ? "Fail:" : "Pass:", max_diff_percent);
|
||||
|
||||
ksft_print_msg("Percent diff=%d\n", abs((int)diff_percent));
|
||||
ksft_print_msg("Number of bits: %d\n", no_of_bits);
|
||||
ksft_print_msg("Average LLC val: %lu\n", avg_llc_val);
|
||||
ksft_print_msg("Cache span (%s): %zu\n", cmt ? "bytes" : "lines",
|
||||
ksft_print_msg("Cache span (%s): %zu\n", lines ? "lines" : "bytes",
|
||||
cache_span);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -41,6 +41,30 @@ static int cat_setup(struct resctrl_val_param *p)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int show_results_info(unsigned long sum_llc_val, int no_of_bits,
|
||||
unsigned long cache_span, unsigned long max_diff,
|
||||
unsigned long max_diff_percent, unsigned long num_of_runs,
|
||||
bool platform)
|
||||
{
|
||||
unsigned long avg_llc_val = 0;
|
||||
float diff_percent;
|
||||
int ret;
|
||||
|
||||
avg_llc_val = sum_llc_val / num_of_runs;
|
||||
diff_percent = ((float)cache_span - avg_llc_val) / cache_span * 100;
|
||||
|
||||
ret = platform && abs((int)diff_percent) > max_diff_percent;
|
||||
|
||||
ksft_print_msg("%s Check cache miss rate within %lu%%\n",
|
||||
ret ? "Fail:" : "Pass:", max_diff_percent);
|
||||
|
||||
ksft_print_msg("Percent diff=%d\n", abs((int)diff_percent));
|
||||
|
||||
show_cache_info(no_of_bits, avg_llc_val, cache_span, true);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int check_results(struct resctrl_val_param *param, size_t span)
|
||||
{
|
||||
char *token_array[8], temp[512];
|
||||
@ -76,9 +100,9 @@ static int check_results(struct resctrl_val_param *param, size_t span)
|
||||
fclose(fp);
|
||||
no_of_bits = count_bits(param->mask);
|
||||
|
||||
return show_cache_info(sum_llc_perf_miss, no_of_bits, span / 64,
|
||||
MAX_DIFF, MAX_DIFF_PERCENT, runs - 1,
|
||||
get_vendor() == ARCH_INTEL, false);
|
||||
return show_results_info(sum_llc_perf_miss, no_of_bits, span / 64,
|
||||
MAX_DIFF, MAX_DIFF_PERCENT, runs - 1,
|
||||
get_vendor() == ARCH_INTEL);
|
||||
}
|
||||
|
||||
void cat_test_cleanup(void)
|
||||
|
@ -27,6 +27,33 @@ static int cmt_setup(struct resctrl_val_param *p)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int show_results_info(unsigned long sum_llc_val, int no_of_bits,
|
||||
unsigned long cache_span, unsigned long max_diff,
|
||||
unsigned long max_diff_percent, unsigned long num_of_runs,
|
||||
bool platform)
|
||||
{
|
||||
unsigned long avg_llc_val = 0;
|
||||
float diff_percent;
|
||||
long avg_diff = 0;
|
||||
int ret;
|
||||
|
||||
avg_llc_val = sum_llc_val / num_of_runs;
|
||||
avg_diff = (long)abs(cache_span - avg_llc_val);
|
||||
diff_percent = ((float)cache_span - avg_llc_val) / cache_span * 100;
|
||||
|
||||
ret = platform && abs((int)diff_percent) > max_diff_percent &&
|
||||
abs(avg_diff) > max_diff;
|
||||
|
||||
ksft_print_msg("%s Check cache miss rate within %lu%%\n",
|
||||
ret ? "Fail:" : "Pass:", max_diff_percent);
|
||||
|
||||
ksft_print_msg("Percent diff=%d\n", abs((int)diff_percent));
|
||||
|
||||
show_cache_info(no_of_bits, avg_llc_val, cache_span, false);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int check_results(struct resctrl_val_param *param, size_t span, int no_of_bits)
|
||||
{
|
||||
char *token_array[8], temp[512];
|
||||
@ -58,9 +85,8 @@ static int check_results(struct resctrl_val_param *param, size_t span, int no_of
|
||||
}
|
||||
fclose(fp);
|
||||
|
||||
return show_cache_info(sum_llc_occu_resc, no_of_bits, span,
|
||||
MAX_DIFF, MAX_DIFF_PERCENT, runs - 1,
|
||||
true, true);
|
||||
return show_results_info(sum_llc_occu_resc, no_of_bits, span,
|
||||
MAX_DIFF, MAX_DIFF_PERCENT, runs - 1, true);
|
||||
}
|
||||
|
||||
void cmt_test_cleanup(void)
|
||||
|
@ -113,10 +113,8 @@ unsigned int count_bits(unsigned long n);
|
||||
void cmt_test_cleanup(void);
|
||||
int get_core_sibling(int cpu_no);
|
||||
int measure_llc_resctrl(const char *filename, int bm_pid);
|
||||
int show_cache_info(unsigned long sum_llc_val, int no_of_bits,
|
||||
size_t cache_span, unsigned long max_diff,
|
||||
unsigned long max_diff_percent, unsigned long num_of_runs,
|
||||
bool platform, bool cmt);
|
||||
void show_cache_info(int no_of_bits, unsigned long avg_llc_val,
|
||||
size_t cache_span, bool lines);
|
||||
|
||||
/*
|
||||
* cache_portion_size - Calculate the size of a cache portion
|
||||
|
Loading…
x
Reference in New Issue
Block a user