linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).