From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Reinette Chatre <reinette.chatre@intel.com>
Cc: 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>,
"Fenghua Yu" <fenghua.yu@intel.com>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 08/13] selftests/resctrl: Add ->init() callback into resctrl_val_param
Date: Fri, 22 Mar 2024 14:22:19 +0200 (EET) [thread overview]
Message-ID: <15f0b698-adcc-9e05-90f0-082f0477a618@linux.intel.com> (raw)
In-Reply-To: <a3d11ae1-0ea2-44d1-953c-0e9296582865@intel.com>
[-- Attachment #1: Type: text/plain, Size: 4191 bytes --]
On Tue, 19 Mar 2024, Reinette Chatre wrote:
> 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.
Ah, fixed it now. They seemed to came directly from the old code.
> > @@ -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.
Okay, I can look into this too. I've not looked too deeply why the
difference between MBA and MBM test is there.
--
i.
next prev parent reply other threads:[~2024-03-22 12:22 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
2024-03-22 12:22 ` Ilpo Järvinen [this message]
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=15f0b698-adcc-9e05-90f0-082f0477a618@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=babu.moger@amd.com \
--cc=fenghua.yu@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=maciej.wieczor-retman@intel.com \
--cc=reinette.chatre@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