lkml.org 
[lkml]   [2023]   [Oct]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 08/24] selftests/resctrl: Split show_cache_info() to test specific and generic parts
    Date
    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>
    ---
    tools/testing/selftests/resctrl/cache.c | 40 ++++------------------
    tools/testing/selftests/resctrl/cat_test.c | 30 ++++++++++++++--
    tools/testing/selftests/resctrl/cmt_test.c | 32 +++++++++++++++--
    tools/testing/selftests/resctrl/resctrl.h | 6 ++--
    4 files changed, 65 insertions(+), 43 deletions(-)

    diff --git a/tools/testing/selftests/resctrl/cache.c b/tools/testing/selftests/resctrl/cache.c
    index 299d9508221f..95489d4b42b7 100644
    --- a/tools/testing/selftests/resctrl/cache.c
    +++ b/tools/testing/selftests/resctrl/cache.c
    @@ -267,43 +267,17 @@ int cat_val(struct resctrl_val_param *param, size_t span)
    }

    /*
    - * show_cache_info: show cache test result information
    - * @sum_llc_val: sum of LLC cache result data
    + * show_cache_info: show generic cache test information
    * @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.
    + * @avg_llc_val: avg 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 ? "bytes" : "lines",
    cache_span);
    -
    - return ret;
    }
    diff --git a/tools/testing/selftests/resctrl/cat_test.c b/tools/testing/selftests/resctrl/cat_test.c
    index e5861e7cba7e..32f6d612a3e7 100644
    --- a/tools/testing/selftests/resctrl/cat_test.c
    +++ b/tools/testing/selftests/resctrl/cat_test.c
    @@ -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)
    diff --git a/tools/testing/selftests/resctrl/cmt_test.c b/tools/testing/selftests/resctrl/cmt_test.c
    index e8997ff5bc04..702ea87cd473 100644
    --- a/tools/testing/selftests/resctrl/cmt_test.c
    +++ b/tools/testing/selftests/resctrl/cmt_test.c
    @@ -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)
    diff --git a/tools/testing/selftests/resctrl/resctrl.h b/tools/testing/selftests/resctrl/resctrl.h
    index 56afdc190727..c7655714b23f 100644
    --- a/tools/testing/selftests/resctrl/resctrl.h
    +++ b/tools/testing/selftests/resctrl/resctrl.h
    @@ -115,10 +115,8 @@ unsigned int count_bits(unsigned long n);
    void cmt_test_cleanup(void);
    int get_core_sibling(int cpu_no);
    int measure_llc_resctrl(struct resctrl_val_param *param, 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_size - Calculate the size of a cache portion
    --
    2.30.2
    \
     
     \ /
      Last update: 2023-10-24 11:30    [W:4.376 / U:0.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site