From: Shuah Khan <skhan@linuxfoundation.org>
To: Fenghua Yu <fenghua.yu@intel.com>, Shuah Khan <shuah@kernel.org>,
Tony Luck <tony.luck@intel.com>,
Reinette Chatre <reinette.chatre@intel.com>,
David Binderman <dcb314@hotmail.com>,
Babu Moger <babu.moger@amd.com>,
James Morse <james.morse@arm.com>,
Ravi V Shankar <ravi.v.shankar@intel.com>,
Shuah Khan <skhan@linuxfoundation.org>
Cc: linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 10/17] selftests/resctrl: Fix MBA/MBM results reporting format
Date: Mon, 25 Jan 2021 19:38:07 -0700 [thread overview]
Message-ID: <112f84b0-c7c1-7b92-75f9-d71d557ecbe2@linuxfoundation.org> (raw)
In-Reply-To: <20201130202010.178373-11-fenghua.yu@intel.com>
On 11/30/20 1:20 PM, Fenghua Yu wrote:
> MBM unit test starts fill_buf (default built-in benchmark) in a new con_mon
> group (c1, m1) and records resctrl reported mbm values and iMC (Integrated
> Memory Controller) values every second. It does this for five seconds
> (randomly chosen value) in total. It then calculates average of resctrl_mbm
> values and imc_mbm values and if the difference is greater than 300 MB/sec
> (randomly chosen value), the test treats it as a failure. MBA unit test is
> similar to MBM but after every run it changes schemata.
>
> Checking for a difference of 300 MB/sec doesn't look very meaningful when
> the mbm values are changing over a wide range. For example, below are the
> values running MBA test on SKL with different allocations
>
> 1. With 10% as schemata both iMC and resctrl mbm_values are around 2000
> MB/sec
> 2. With 100% as schemata both iMC and resctrl mbm_values are around 10000
> MB/sec
>
> A 300 MB/sec difference between resctrl_mbm and imc_mbm values is
> acceptable at 100% schemata but it isn't acceptable at 10% schemata because
> that's a huge difference.
>
> So, fix this by checking for percentage difference instead of absolute
> difference i.e. check if the difference between resctrl_mbm value and
> imc_mbm value is within 5% (randomly chosen value) of imc_mbm value. If the
> difference is greater than 5% of imc_mbm value, treat it is a failure.
>
> Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
> ---
> tools/testing/selftests/resctrl/mba_test.c | 20 +++++++++++---------
> tools/testing/selftests/resctrl/mbm_test.c | 13 +++++++------
> 2 files changed, 18 insertions(+), 15 deletions(-)
>
> diff --git a/tools/testing/selftests/resctrl/mba_test.c b/tools/testing/selftests/resctrl/mba_test.c
> index 6449fbd96096..b4c81d2ee53b 100644
> --- a/tools/testing/selftests/resctrl/mba_test.c
> +++ b/tools/testing/selftests/resctrl/mba_test.c
> @@ -12,7 +12,7 @@
>
> #define RESULT_FILE_NAME "result_mba"
> #define NUM_OF_RUNS 5
> -#define MAX_DIFF 300
> +#define MAX_DIFF_PERCENT 5
> #define ALLOCATION_MAX 100
> #define ALLOCATION_MIN 10
> #define ALLOCATION_STEP 10
> @@ -62,7 +62,8 @@ static void show_mba_info(unsigned long *bw_imc, unsigned long *bw_resc)
> allocation++) {
> unsigned long avg_bw_imc, avg_bw_resc;
> unsigned long sum_bw_imc = 0, sum_bw_resc = 0;
> - unsigned long avg_diff;
> + int avg_diff_per;
> + float avg_diff;
>
> /*
> * The first run is discarded due to inaccurate value from
> @@ -76,17 +77,18 @@ static void show_mba_info(unsigned long *bw_imc, unsigned long *bw_resc)
>
> avg_bw_imc = sum_bw_imc / (NUM_OF_RUNS - 1);
> avg_bw_resc = sum_bw_resc / (NUM_OF_RUNS - 1);
> - avg_diff = labs((long)(avg_bw_resc - avg_bw_imc));
> + avg_diff = (float)labs(avg_bw_resc - avg_bw_imc) / avg_bw_imc;
> + avg_diff_per = (int)(avg_diff * 100);
>
> - printf("%sok MBA schemata percentage %u smaller than %d %%\n",
> - avg_diff > MAX_DIFF ? "not " : "",
> - ALLOCATION_MAX - ALLOCATION_STEP * allocation,
> - MAX_DIFF);
> + printf("%sok MBA: diff within %d%% for schemata %u\n",
> + avg_diff_per > MAX_DIFF_PERCENT ? "not " : "",
> + MAX_DIFF_PERCENT,
> + ALLOCATION_MAX - ALLOCATION_STEP * allocation);
> tests_run++;
> - printf("# avg_diff: %lu\n", avg_diff);
> + printf("# avg_diff_per: %d%%\n", avg_diff_per);
> printf("# avg_bw_imc: %lu\n", avg_bw_imc);
> printf("# avg_bw_resc: %lu\n", avg_bw_resc);
> - if (avg_diff > MAX_DIFF)
> + if (avg_diff_per > MAX_DIFF_PERCENT)
> failed = true;
> }
>
> diff --git a/tools/testing/selftests/resctrl/mbm_test.c b/tools/testing/selftests/resctrl/mbm_test.c
> index ec6cfe01c9c2..672d3ddd6e85 100644
> --- a/tools/testing/selftests/resctrl/mbm_test.c
> +++ b/tools/testing/selftests/resctrl/mbm_test.c
> @@ -11,7 +11,7 @@
> #include "resctrl.h"
>
> #define RESULT_FILE_NAME "result_mbm"
> -#define MAX_DIFF 300
> +#define MAX_DIFF_PERCENT 5
> #define NUM_OF_RUNS 5
>
> static void
> @@ -19,8 +19,8 @@ show_bw_info(unsigned long *bw_imc, unsigned long *bw_resc, int span)
> {
> unsigned long avg_bw_imc = 0, avg_bw_resc = 0;
> unsigned long sum_bw_imc = 0, sum_bw_resc = 0;
> - long avg_diff = 0;
> - int runs;
> + int runs, avg_diff_per;
> + float avg_diff = 0;
>
> /*
> * Discard the first value which is inaccurate due to monitoring setup
> @@ -33,12 +33,13 @@ show_bw_info(unsigned long *bw_imc, unsigned long *bw_resc, int span)
>
> avg_bw_imc = sum_bw_imc / 4;
> avg_bw_resc = sum_bw_resc / 4;
> - avg_diff = avg_bw_resc - avg_bw_imc;
> + avg_diff = (float)labs(avg_bw_resc - avg_bw_imc) / avg_bw_imc;
> + avg_diff_per = (int)(avg_diff * 100);
>
> printf("%sok MBM: diff within %d%%\n",
> - labs(avg_diff) > MAX_DIFF ? "not " : "", MAX_DIFF);
> + avg_diff_per > MAX_DIFF_PERCENT ? "not " : "", MAX_DIFF_PERCENT);
> tests_run++;
> - printf("# avg_diff: %lu\n", labs(avg_diff));
> + printf("# avg_diff_per: %d%%\n", avg_diff_per);
> printf("# Span (MB): %d\n", span);
> printf("# avg_bw_imc: %lu\n", avg_bw_imc);
> printf("# avg_bw_resc: %lu\n", avg_bw_resc);
>
Can we move all the name changes after the real fixes?
thanks,
-- Shuah
next prev parent reply other threads:[~2021-01-26 12:25 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-30 20:19 [PATCH v4 00/17] Miscellaneous fixes for resctrl selftests Fenghua Yu
2020-11-30 20:19 ` [PATCH v4 01/17] selftests/resctrl: Fix compilation issues for global variables Fenghua Yu
2021-01-26 1:22 ` Shuah Khan
2020-11-30 20:19 ` [PATCH v4 02/17] selftests/resctrl: Clean up resctrl features check Fenghua Yu
2021-01-26 2:08 ` Shuah Khan
2020-11-30 20:19 ` [PATCH v4 03/17] selftests/resctrl: Rename CQM test as CMT test Fenghua Yu
2020-11-30 20:19 ` [PATCH v4 04/17] selftests/resctrl: Fix printed messages Fenghua Yu
2021-01-26 2:25 ` Shuah Khan
2020-11-30 20:19 ` [PATCH v4 05/17] selftests/resctrl: Add a few dependencies Fenghua Yu
2021-01-26 2:29 ` Shuah Khan
2020-11-30 20:19 ` [PATCH v4 06/17] selftests/resctrl: Check for resctrl mount point only if resctrl FS is supported Fenghua Yu
2021-01-26 2:32 ` Shuah Khan
2020-11-30 20:20 ` [PATCH v4 07/17] selftests/resctrl: Use resctrl/info for feature detection Fenghua Yu
2020-11-30 20:20 ` [PATCH v4 08/17] selftests/resctrl: Ensure sibling CPU is not same as original CPU Fenghua Yu
2021-01-26 2:35 ` Shuah Khan
2020-11-30 20:20 ` [PATCH v4 09/17] selftests/resctrl: Fix missing options "-n" and "-p" Fenghua Yu
2021-01-26 2:36 ` Shuah Khan
2020-11-30 20:20 ` [PATCH v4 10/17] selftests/resctrl: Fix MBA/MBM results reporting format Fenghua Yu
2021-01-26 2:38 ` Shuah Khan [this message]
2020-11-30 20:20 ` [PATCH v4 11/17] selftests/resctrl: Enable gcc checks to detect buffer overflows Fenghua Yu
2021-01-26 2:38 ` Shuah Khan
2020-11-30 20:20 ` [PATCH v4 12/17] selftests/resctrl: Don't hard code value of "no_of_bits" variable Fenghua Yu
2020-11-30 20:20 ` [PATCH v4 13/17] selftests/resctrl: Modularize resctrl test suite main() function Fenghua Yu
2020-11-30 20:20 ` [PATCH v4 14/17] selftests/resctrl: Skip the test if requested resctrl feature is not supported Fenghua Yu
2020-11-30 20:20 ` [PATCH v4 15/17] selftests/resctrl: Fix unmount resctrl FS Fenghua Yu
2020-11-30 20:20 ` [PATCH v4 16/17] selftests/resctrl: Fix incorrect parsing of iMC counters Fenghua Yu
2020-11-30 20:20 ` [PATCH v4 17/17] selftests/resctrl: Fix checking for < 0 for unsigned values Fenghua Yu
2020-12-11 0:21 ` [PATCH v4 00/17] Miscellaneous fixes for resctrl selftests Yu, Fenghua
2021-01-25 20:47 ` Fenghua Yu
2021-01-25 21:52 ` Shuah Khan
2021-01-25 21:54 ` Fenghua Yu
2021-01-26 1:22 ` Shuah Khan
2021-01-26 23:57 ` Shuah Khan
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=112f84b0-c7c1-7b92-75f9-d71d557ecbe2@linuxfoundation.org \
--to=skhan@linuxfoundation.org \
--cc=babu.moger@amd.com \
--cc=dcb314@hotmail.com \
--cc=fenghua.yu@intel.com \
--cc=james.morse@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=ravi.v.shankar@intel.com \
--cc=reinette.chatre@intel.com \
--cc=shuah@kernel.org \
--cc=tony.luck@intel.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;
as well as URLs for NNTP newsgroup(s).