From: Reinette Chatre <reinette.chatre@intel.com>
To: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
linux-kselftest@vger.kernel.org, "Shuah Khan" <shuah@kernel.org>,
"Babu Moger" <babu.moger@amd.com>,
"Maciej Wieczór-Retman" <maciej.wieczor-retman@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 08/13] selftests/resctrl: Add ->init() callback into resctrl_val_param
Date: Tue, 19 Mar 2024 21:58:17 -0700 [thread overview]
Message-ID: <a3d11ae1-0ea2-44d1-953c-0e9296582865@intel.com> (raw)
In-Reply-To: <20240311135230.7007-9-ilpo.jarvinen@linux.intel.com>
Hi Ilpo,
On 3/11/2024 6:52 AM, Ilpo Järvinen wrote:
> The struct resctrl_val_param is there to customize behavior inside
> resctrl_val() which is currently not used to full extent and there are
> number of strcmp()s for test name in resctrl_val done by resctrl_val().
>
> Create ->init() hook into the struct resctrl_val_param to cleanly
> do per test initialization.
>
> Remove also unused branches to setup paths and the related #defines.
>
> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
> ---
> tools/testing/selftests/resctrl/cmt_test.c | 12 ++
> tools/testing/selftests/resctrl/mba_test.c | 24 +++-
> tools/testing/selftests/resctrl/mbm_test.c | 24 +++-
> tools/testing/selftests/resctrl/resctrl.h | 9 +-
> tools/testing/selftests/resctrl/resctrl_val.c | 123 ++----------------
> 5 files changed, 75 insertions(+), 117 deletions(-)
>
> diff --git a/tools/testing/selftests/resctrl/cmt_test.c b/tools/testing/selftests/resctrl/cmt_test.c
> index 241c0b129b58..e79eca9346f3 100644
> --- a/tools/testing/selftests/resctrl/cmt_test.c
> +++ b/tools/testing/selftests/resctrl/cmt_test.c
> @@ -16,6 +16,17 @@
> #define MAX_DIFF 2000000
> #define MAX_DIFF_PERCENT 15
>
> +#define CON_MON_LCC_OCCUP_PATH \
> + "%s/%s/mon_groups/%s/mon_data/mon_L3_%02d/llc_occupancy"
> +
> +static int set_cmt_path(const struct resctrl_val_param *param, int domain_id)
> +{
> + sprintf(llc_occup_path, CON_MON_LCC_OCCUP_PATH, RESCTRL_PATH,
Strangely some tab characters sneaked in above.
> + param->ctrlgrp, param->mongrp, domain_id);
> +
> + return 0;
> +}
> +
> static int cmt_setup(const struct resctrl_test *test,
> const struct user_params *uparams,
> struct resctrl_val_param *p)
...
> @@ -826,17 +729,11 @@ int resctrl_val(const struct resctrl_test *test,
> if (ret)
> goto out;
>
> - if (!strncmp(resctrl_val, MBM_STR, sizeof(MBM_STR)) ||
> - !strncmp(resctrl_val, MBA_STR, sizeof(MBA_STR))) {
> - ret = initialize_mem_bw_imc();
> + if (param->init) {
> + ret = param->init(param, domain_id);
> if (ret)
> goto out;
> -
> - initialize_mem_bw_resctrl(param->ctrlgrp, param->mongrp,
> - domain_id, resctrl_val);
> - } else if (!strncmp(resctrl_val, CMT_STR, sizeof(CMT_STR)))
> - initialize_llc_occu_resctrl(param->ctrlgrp, param->mongrp,
> - domain_id, resctrl_val);
> + }
>
> /* Parent waits for child to be ready. */
> close(pipefd[1]);
I am trying to make sense of what these tests are trying to do and
it is starting to look like the monitor groups (as they are used here)
are unnecessary.
Looking at resctrl_val()->write_bm_pid_to_resctrl() I see that the
control group is created with "bm_pid" written to its "tasks" file
and then a monitor group is created as child of the control group
with the same "bm_pid" written to its "tasks" file.
This looks unnecessary to me because when the original control
group is created on a system that supports monitoring then that
control group would automatically be a monitoring group also. In
the resctrl kernel document these different groups are termed
"CTRL_MON" and "MON" groups respectively.
For example, if user creates control group "c1":
# mkdir /sys/fs/resctrl/c1
Then, automatically it would also be a monitoring group with
its monitoring data available from
/sys/fs/resctrl/c1/mon_data/mon_L3_XX/*
PIDs written to /sys/fs/resctrl/c1/tasks will have allocations
assigned in /sys/fs/resctrl/c1/schemata and monitoring data
/sys/fd/resctrl/c1/mon_data/mon_L3_XX/* ... it is not necessary
to create a separate monitoring group to collect that
monitoring data.
This seems to be the discrepancy between the MBA and MBM test ...
if I understand correctly they end up needing the same data but
the one uses the data from the CTRL_MON group while the other
creates a redundant child MON group to read the same data
that is available from the CTRL_MON group.
Reinette
next prev parent reply other threads:[~2024-03-20 4:58 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-11 13:52 [PATCH v2 00/13] selftests/resctrl: resctrl_val() related cleanups & improvements Ilpo Järvinen
2024-03-11 13:52 ` [PATCH v2 01/13] selftests/resctrl: Convert get_mem_bw_imc() fd close to for loop Ilpo Järvinen
2024-03-20 4:50 ` Reinette Chatre
2024-03-22 11:59 ` Ilpo Järvinen
2024-03-22 12:00 ` Ilpo Järvinen
2024-03-11 13:52 ` [PATCH v2 02/13] selftests/resctrl: Calculate resctrl FS derived mem bw over sleep(1) only Ilpo Järvinen
2024-03-20 4:53 ` Reinette Chatre
2024-03-22 12:11 ` Ilpo Järvinen
2024-03-22 17:44 ` Reinette Chatre
2024-03-25 13:08 ` Ilpo Järvinen
2024-03-11 13:52 ` [PATCH v2 03/13] selftests/resctrl: Consolidate get_domain_id() into resctrl_val() Ilpo Järvinen
2024-03-11 13:52 ` [PATCH v2 04/13] selftests/resctrl: Use correct type for pids Ilpo Järvinen
2024-03-11 13:52 ` [PATCH v2 05/13] selftests/resctrl: Cleanup bm_pid and ppid usage & limit scope Ilpo Järvinen
2024-03-11 13:52 ` [PATCH v2 06/13] selftests/resctrl: Rename measure_vals() to measure_mem_bw_vals() & document Ilpo Järvinen
2024-03-11 13:52 ` [PATCH v2 07/13] selftests/resctrl: Add ->measure() callback to resctrl_val_param Ilpo Järvinen
2024-03-11 13:52 ` [PATCH v2 08/13] selftests/resctrl: Add ->init() callback into resctrl_val_param Ilpo Järvinen
2024-03-13 10:15 ` Maciej Wieczor-Retman
2024-03-13 10:28 ` Maciej Wieczor-Retman
2024-03-13 11:37 ` Ilpo Järvinen
2024-03-13 13:53 ` Maciej Wieczor-Retman
2024-03-13 13:59 ` Ilpo Järvinen
2024-03-14 16:07 ` Maciej Wieczor-Retman
2024-03-14 16:09 ` Ilpo Järvinen
2024-03-20 4:58 ` Reinette Chatre [this message]
2024-03-22 12:22 ` Ilpo Järvinen
2024-03-11 13:52 ` [PATCH v2 09/13] selftests/resctrl: Simplify bandwidth report type handling Ilpo Järvinen
2024-03-11 13:52 ` [PATCH v2 10/13] selftests/resctrl: Make some strings passed to resctrlfs functions const Ilpo Järvinen
2024-03-11 13:52 ` [PATCH v2 11/13] selftests/resctrl: Convert ctrlgrp & mongrp to pointers Ilpo Järvinen
2024-03-20 15:20 ` Reinette Chatre
2024-03-22 12:30 ` Ilpo Järvinen
2024-03-22 17:44 ` Reinette Chatre
2024-03-25 13:14 ` Ilpo Järvinen
2024-03-11 13:52 ` [PATCH v2 12/13] selftests/resctrl: Remove mongrp from MBA test Ilpo Järvinen
2024-03-11 13:52 ` [PATCH v2 13/13] selftests/resctrl: Remove test name comparing from write_bm_pid_to_resctrl() Ilpo Järvinen
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=a3d11ae1-0ea2-44d1-953c-0e9296582865@intel.com \
--to=reinette.chatre@intel.com \
--cc=babu.moger@amd.com \
--cc=fenghua.yu@intel.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=maciej.wieczor-retman@intel.com \
--cc=shuah@kernel.org \
/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