Hi Ilpo,
On 10/24/2023 2:26 AM, Ilpo Järvinen wrote:
> CAT and CMT tests calculate the span size from the n-bits cache
> allocation on their own.
>
> Add cache_size() helper which calculates size of the cache portion for
> the given number of bits and use it to replace the existing span
> calculations. This also prepares for the new CAT test that will need to
> determine the size of the cache portion also during results processing.
>
> cache_size local variables were renamed out of the way to
> cache_total_size.
Please do stick to imperative mood ... "Rename cache_size local
variables ..."
...
> diff --git a/tools/testing/selftests/resctrl/resctrl.h b/tools/testing/selftests/resctrl/resctrl.h
> index 2f3f0ee439d8..da06b2d492f9 100644
> --- a/tools/testing/selftests/resctrl/resctrl.h
> +++ b/tools/testing/selftests/resctrl/resctrl.h
> @@ -117,4 +117,18 @@ int show_cache_info(unsigned long sum_llc_val, int no_of_bits,
> unsigned long max_diff_percent, unsigned long num_of_runs,
> bool platform, bool cmt);
>
> +/*
> + * cache_size - Calculate the size of a cache portion
> + * @cache_size: Cache size in bytes
> + * @mask: Cache portion mask
> + * @cache_mask: Full bitmask for the cache
> + *
> + * Return: The size of the cache portion in bytes.
> + */
> +static inline int cache_size(unsigned long cache_size, unsigned long mask,
> + unsigned long cache_mask)
> +{
> + return cache_size * count_bits(mask) / count_bits(cache_mask);
> +}
> +
> #endif /* RESCTRL_H */
The get_cache_size() and cache_size() naming appears similar enough to me
to cause confusion. Considering the "portion" term above, what do you think
of "cache_portion_size()" or even "cache_portion_bytes()"?
Reinette
On Thu, 2 Nov 2023, Reinette Chatre wrote:
> Hi Ilpo,
>
> On 10/24/2023 2:26 AM, Ilpo Järvinen wrote:
> > CAT and CMT tests calculate the span size from the n-bits cache
> > allocation on their own.
> >
> > Add cache_size() helper which calculates size of the cache portion for
> > the given number of bits and use it to replace the existing span
> > calculations. This also prepares for the new CAT test that will need to
> > determine the size of the cache portion also during results processing.
> >
> > cache_size local variables were renamed out of the way to
> > cache_total_size.
>
> Please do stick to imperative mood ... "Rename cache_size local
> variables ..."
>
>
> ...
>
> > diff --git a/tools/testing/selftests/resctrl/resctrl.h b/tools/testing/selftests/resctrl/resctrl.h
> > index 2f3f0ee439d8..da06b2d492f9 100644
> > --- a/tools/testing/selftests/resctrl/resctrl.h
> > +++ b/tools/testing/selftests/resctrl/resctrl.h
> > @@ -117,4 +117,18 @@ int show_cache_info(unsigned long sum_llc_val, int no_of_bits,
> > unsigned long max_diff_percent, unsigned long num_of_runs,
> > bool platform, bool cmt);
> >
> > +/*
> > + * cache_size - Calculate the size of a cache portion
> > + * @cache_size: Cache size in bytes
> > + * @mask: Cache portion mask
> > + * @cache_mask: Full bitmask for the cache
> > + *
> > + * Return: The size of the cache portion in bytes.
> > + */
> > +static inline int cache_size(unsigned long cache_size, unsigned long mask,
> > + unsigned long cache_mask)
> > +{
> > + return cache_size * count_bits(mask) / count_bits(cache_mask);
> > +}
> > +
> > #endif /* RESCTRL_H */
>
>
> The get_cache_size() and cache_size() naming appears similar enough to me
> to cause confusion. Considering the "portion" term above, what do you think
> of "cache_portion_size()" or even "cache_portion_bytes()"?
Yes, I'm more than happy to rename them. This naming was what you
suggested earlier. (I used cache_alloc_size() or something like that
initially and you were against using "alloc" in the name.)
@@ -91,7 +91,7 @@ int cat_perf_miss_val(int cpu_no, int n, char *cache_type)
{
unsigned long l_mask, l_mask_1;
int ret, pipefd[2], sibling_cpu_no;
- unsigned long cache_size = 0;
+ unsigned long cache_total_size = 0;
unsigned long long_mask;
int count_of_bits;
char pipe_message;
@@ -103,10 +103,10 @@ int cat_perf_miss_val(int cpu_no, int n, char *cache_type)
return ret;
/* Get L3/L2 cache size */
- ret = get_cache_size(cpu_no, cache_type, &cache_size);
+ ret = get_cache_size(cpu_no, cache_type, &cache_total_size);
if (ret)
return ret;
- ksft_print_msg("Cache size :%lu\n", cache_size);
+ ksft_print_msg("Cache size :%lu\n", cache_total_size);
/* Get max number of bits from default-cabm mask */
count_of_bits = count_bits(long_mask);
@@ -138,7 +138,7 @@ int cat_perf_miss_val(int cpu_no, int n, char *cache_type)
/* Set param values for parent thread which will be allocated bitmask
* with (max_bits - n) bits
*/
- span = cache_size * (count_of_bits - n) / count_of_bits;
+ span = cache_size(cache_total_size, l_mask, long_mask);
strcpy(param.ctrlgrp, "c2");
strcpy(param.mongrp, "m2");
strcpy(param.filename, RESULT_FILE_NAME2);
@@ -160,7 +160,7 @@ int cat_perf_miss_val(int cpu_no, int n, char *cache_type)
param.mask = l_mask_1;
strcpy(param.ctrlgrp, "c1");
strcpy(param.mongrp, "m1");
- span = cache_size * n / count_of_bits;
+ span = cache_size(cache_total_size, l_mask_1, long_mask);
strcpy(param.filename, RESULT_FILE_NAME1);
param.num_of_runs = 0;
param.cpu_no = sibling_cpu_no;
@@ -72,7 +72,7 @@ int cmt_resctrl_val(int cpu_no, int n, const char * const *benchmark_cmd)
{
const char * const *cmd = benchmark_cmd;
const char *new_cmd[BENCHMARK_ARGS];
- unsigned long cache_size = 0;
+ unsigned long cache_total_size = 0;
unsigned long long_mask;
char *span_str = NULL;
int count_of_bits;
@@ -83,10 +83,10 @@ int cmt_resctrl_val(int cpu_no, int n, const char * const *benchmark_cmd)
if (ret)
return ret;
- ret = get_cache_size(cpu_no, "L3", &cache_size);
+ ret = get_cache_size(cpu_no, "L3", &cache_total_size);
if (ret)
return ret;
- ksft_print_msg("Cache size :%lu\n", cache_size);
+ ksft_print_msg("Cache size :%lu\n", cache_total_size);
count_of_bits = count_bits(long_mask);
@@ -107,7 +107,7 @@ int cmt_resctrl_val(int cpu_no, int n, const char * const *benchmark_cmd)
.setup = cmt_setup,
};
- span = cache_size * n / count_of_bits;
+ span = cache_size(cache_total_size, param.mask, long_mask);
if (strcmp(cmd[0], "fill_buf") == 0) {
/* Duplicate the command to be able to replace span in it */
@@ -117,4 +117,18 @@ int show_cache_info(unsigned long sum_llc_val, int no_of_bits,
unsigned long max_diff_percent, unsigned long num_of_runs,
bool platform, bool cmt);
+/*
+ * cache_size - Calculate the size of a cache portion
+ * @cache_size: Cache size in bytes
+ * @mask: Cache portion mask
+ * @cache_mask: Full bitmask for the cache
+ *
+ * Return: The size of the cache portion in bytes.
+ */
+static inline int cache_size(unsigned long cache_size, unsigned long mask,
+ unsigned long cache_mask)
+{
+ return cache_size * count_bits(mask) / count_bits(cache_mask);
+}
+
#endif /* RESCTRL_H */