diff options
| author | Linus Torvalds <[email protected]> | 2021-04-28 01:54:01 +0000 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2021-04-28 01:54:01 +0000 |
| commit | 2a68c268a18317a013961e8faf6eaabc81a94e6b (patch) | |
| tree | 752f13b0106e616d8973ba639c372a4112f499fb /tools/testing/selftests/resctrl/cat_test.c | |
| parent | Merge branch 'for-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/c... (diff) | |
| parent | selftests/resctrl: Change a few printed messages (diff) | |
| download | kernel-2a68c268a18317a013961e8faf6eaabc81a94e6b.tar.gz kernel-2a68c268a18317a013961e8faf6eaabc81a94e6b.zip | |
Merge tag 'linux-kselftest-next-5.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
Pull Kselftest updates from Shuah Khan:
- fixes and updates to resctrl test from Fenghua Yu and Reinette Chatre
- fixes to Kselftest documentation, framework
- minor spelling correction in timers test
* tag 'linux-kselftest-next-5.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest: (25 commits)
selftests/resctrl: Change a few printed messages
Documentation: kselftest: fix path to test module files
selftests/resctrl: Create .gitignore to include resctrl_tests
selftests/resctrl: Fix checking for < 0 for unsigned values
selftests/resctrl: Fix incorrect parsing of iMC counters
selftests/resctrl: Fix unmount resctrl FS
selftests/resctrl: Skip the test if requested resctrl feature is not supported
selftests/resctrl: Modularize resctrl test suite main() function
selftests/resctrl: Don't hard code value of "no_of_bits" variable
selftests/resctrl: Fix MBA/MBM results reporting format
selftests/resctrl: Use resctrl/info for feature detection
selftests/resctrl: Check for resctrl mount point only if resctrl FS is supported
selftests/resctrl: Add config dependencies
selftests/resctrl: Fix a printed message
selftests/resctrl: Share show_cache_info() by CAT and CMT tests
selftests/resctrl: Call kselftest APIs to log test results
selftests/resctrl: Rename CQM test as CMT test
selftests/resctrl: Fix missing options "-n" and "-p"
selftests/resctrl: Ensure sibling CPU is not same as original CPU
selftests/resctrl: Clean up resctrl features check
...
Diffstat (limited to 'tools/testing/selftests/resctrl/cat_test.c')
| -rw-r--r-- | tools/testing/selftests/resctrl/cat_test.c | 57 |
1 files changed, 18 insertions, 39 deletions
diff --git a/tools/testing/selftests/resctrl/cat_test.c b/tools/testing/selftests/resctrl/cat_test.c index 5da43767b973..cd4f68388e0f 100644 --- a/tools/testing/selftests/resctrl/cat_test.c +++ b/tools/testing/selftests/resctrl/cat_test.c @@ -17,10 +17,10 @@ #define MAX_DIFF_PERCENT 4 #define MAX_DIFF 1000000 -int count_of_bits; -char cbm_mask[256]; -unsigned long long_mask; -unsigned long cache_size; +static int count_of_bits; +static char cbm_mask[256]; +static unsigned long long_mask; +static unsigned long cache_size; /* * Change schemata. Write schemata to specified @@ -52,27 +52,6 @@ static int cat_setup(int num, ...) return ret; } -static void show_cache_info(unsigned long sum_llc_perf_miss, int no_of_bits, - unsigned long span) -{ - unsigned long allocated_cache_lines = span / 64; - unsigned long avg_llc_perf_miss = 0; - float diff_percent; - - avg_llc_perf_miss = sum_llc_perf_miss / (NUM_OF_RUNS - 1); - diff_percent = ((float)allocated_cache_lines - avg_llc_perf_miss) / - allocated_cache_lines * 100; - - printf("%sok CAT: cache miss rate within %d%%\n", - !is_amd && abs((int)diff_percent) > MAX_DIFF_PERCENT ? - "not " : "", MAX_DIFF_PERCENT); - tests_run++; - printf("# Percent diff=%d\n", abs((int)diff_percent)); - printf("# Number of bits: %d\n", no_of_bits); - printf("# Avg_llc_perf_miss: %lu\n", avg_llc_perf_miss); - printf("# Allocated cache lines: %lu\n", allocated_cache_lines); -} - static int check_results(struct resctrl_val_param *param) { char *token_array[8], temp[512]; @@ -80,7 +59,7 @@ static int check_results(struct resctrl_val_param *param) int runs = 0, no_of_bits = 0; FILE *fp; - printf("# Checking for pass/fail\n"); + ksft_print_msg("Checking for pass/fail\n"); fp = fopen(param->filename, "r"); if (!fp) { perror("# Cannot open file"); @@ -108,9 +87,9 @@ static int check_results(struct resctrl_val_param *param) fclose(fp); no_of_bits = count_bits(param->mask); - show_cache_info(sum_llc_perf_miss, no_of_bits, param->span); - - return 0; + return show_cache_info(sum_llc_perf_miss, no_of_bits, param->span / 64, + MAX_DIFF, MAX_DIFF_PERCENT, NUM_OF_RUNS, + !is_amd, false); } void cat_test_cleanup(void) @@ -132,11 +111,8 @@ int cat_perf_miss_val(int cpu_no, int n, char *cache_type) if (ret) return ret; - if (!validate_resctrl_feature_request("cat")) - return -1; - /* Get default cbm mask for L3/L2 cache */ - ret = get_cbm_mask(cache_type); + ret = get_cbm_mask(cache_type, cbm_mask); if (ret) return ret; @@ -146,15 +122,18 @@ int cat_perf_miss_val(int cpu_no, int n, char *cache_type) ret = get_cache_size(cpu_no, cache_type, &cache_size); if (ret) return ret; - printf("cache size :%lu\n", cache_size); + ksft_print_msg("Cache size :%lu\n", cache_size); /* Get max number of bits from default-cabm mask */ count_of_bits = count_bits(long_mask); - if (n < 1 || n > count_of_bits - 1) { - printf("Invalid input value for no_of_bits n!\n"); - printf("Please Enter value in range 1 to %d\n", - count_of_bits - 1); + if (!n) + n = count_of_bits / 2; + + if (n > count_of_bits - 1) { + ksft_print_msg("Invalid input value for no_of_bits n!\n"); + ksft_print_msg("Please enter value in range 1 to %d\n", + count_of_bits - 1); return -1; } @@ -164,7 +143,7 @@ int cat_perf_miss_val(int cpu_no, int n, char *cache_type) return -1; struct resctrl_val_param param = { - .resctrl_val = "cat", + .resctrl_val = CAT_STR, .cpu_no = cpu_no, .mum_resctrlfs = 0, .setup = cat_setup, |
