From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Babu Moger <babu.moger@amd.com>
Cc: corbet@lwn.net, Reinette Chatre <reinette.chatre@intel.com>,
tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
fenghua.yu@intel.com, dave.hansen@linux.intel.com,
x86@kernel.org, hpa@zytor.com, paulmck@kernel.org,
akpm@linux-foundation.org, quic_neeraju@quicinc.com,
rdunlap@infradead.org, damien.lemoal@opensource.wdc.com,
songmuchun@bytedance.com, peterz@infradead.org,
jpoimboe@kernel.org, pbonzini@redhat.com,
chang.seok.bae@intel.com, pawan.kumar.gupta@linux.intel.com,
jmattson@google.com, daniel.sneddon@linux.intel.com,
sandipan.das@amd.com, tony.luck@intel.com, james.morse@arm.com,
linux-doc@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>,
bagasdotme@gmail.com, eranian@google.com,
christophe.leroy@csgroup.eu, pawan.kumar.gupta@linux.intel.com,
jarkko@kernel.org, adrian.hunter@intel.com,
quic_jiles@quicinc.com, peternewman@google.com
Subject: Re: [PATCH v4 1/7] x86/resctrl: Add multiple tasks to the resctrl group at once
Date: Wed, 19 Apr 2023 15:58:28 +0300 (EEST) [thread overview]
Message-ID: <d046eebf-15b-2d23-b8f6-5dd06b49d0d3@linux.intel.com> (raw)
In-Reply-To: <168177444676.1758847.11474266921067437724.stgit@bmoger-ubuntu>
On Mon, 17 Apr 2023, Babu Moger wrote:
> The resctrl task assignment for MONITOR or CONTROL group needs to be
> done one at a time. For example:
>
> $mount -t resctrl resctrl /sys/fs/resctrl/
> $mkdir /sys/fs/resctrl/clos1
> $echo 123 > /sys/fs/resctrl/clos1/tasks
> $echo 456 > /sys/fs/resctrl/clos1/tasks
> $echo 789 > /sys/fs/resctrl/clos1/tasks
>
> This is not user-friendly when dealing with hundreds of tasks.
>
> It can be improved by supporting the multiple task id assignment in
> one command with the tasks separated by commas. For example:
>
> $echo 123,456,789 > /sys/fs/resctrl/clos1/tasks
>
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---
> Documentation/x86/resctrl.rst | 9 ++++++++-
> arch/x86/kernel/cpu/resctrl/rdtgroup.c | 31 ++++++++++++++++++++++++++++++-
> 2 files changed, 38 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/x86/resctrl.rst b/Documentation/x86/resctrl.rst
> index 387ccbcb558f..f28ed1443a6a 100644
> --- a/Documentation/x86/resctrl.rst
> +++ b/Documentation/x86/resctrl.rst
> @@ -292,7 +292,14 @@ All groups contain the following files:
> "tasks":
> Reading this file shows the list of all tasks that belong to
> this group. Writing a task id to the file will add a task to the
> - group. If the group is a CTRL_MON group the task is removed from
> + group. Multiple tasks can be added by separating the task ids
> + with commas. Tasks will be assigned sequentially in the order it
> + is entered.
"Tasks ... it is ..." doesn't sound correct.
> Failures while assigning the tasks will be aborted
> + immediately and tasks next in the sequence will not be assigned.
> + Users may need to retry them again. Failure details possibly with
> + pid will be logged in /sys/fs/resctrl/info/last_cmd_status file.
> +
> + If the group is a CTRL_MON group the task is removed from
> whichever previous CTRL_MON group owned the task and also from
> any MON group that owned the task. If the group is a MON group,
> then the task must already belong to the CTRL_MON parent of this
> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> index 6ad33f355861..df5bd13440b0 100644
> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> @@ -696,18 +696,41 @@ static ssize_t rdtgroup_tasks_write(struct kernfs_open_file *of,
> char *buf, size_t nbytes, loff_t off)
> {
> struct rdtgroup *rdtgrp;
> + char *pid_str;
> int ret = 0;
> pid_t pid;
>
> - if (kstrtoint(strstrip(buf), 0, &pid) || pid < 0)
> + if (nbytes == 0)
> return -EINVAL;
> +
> + buf[nbytes - 1] = '\0';
> +
> rdtgrp = rdtgroup_kn_lock_live(of->kn);
> if (!rdtgrp) {
> rdtgroup_kn_unlock(of->kn);
> return -ENOENT;
> }
> +
> +next:
> + if (!buf || buf[0] == '\0')
> + goto unlock;
> +
> rdt_last_cmd_clear();
>
> + pid_str = strim(strsep(&buf, ","));
> +
> + if (kstrtoint(pid_str, 0, &pid)) {
> + rdt_last_cmd_printf("Task list parsing error\n");
> + ret = -EINVAL;
> + goto unlock;
> + }
> +
> + if (pid < 0) {
> + rdt_last_cmd_printf("Invalid pid %d value\n", pid);
> + ret = -EINVAL;
> + goto unlock;
> + }
> +
> if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED ||
> rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP) {
> ret = -EINVAL;
> @@ -716,6 +739,12 @@ static ssize_t rdtgroup_tasks_write(struct kernfs_open_file *of,
> }
>
> ret = rdtgroup_move_task(pid, rdtgrp, of);
> + if (ret) {
> + rdt_last_cmd_printf("Error while processing task %d\n", pid);
> + goto unlock;
> + } else {
> + goto next;
> + }
Why is this not changed into a while () loop??
>
> unlock:
> rdtgroup_kn_unlock(of->kn);
>
>
--
i.
next prev parent reply other threads:[~2023-04-19 12:58 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-17 23:33 [PATCH v4 0/7] x86/resctrl: Miscellaneous resctrl features Babu Moger
2023-04-17 23:34 ` [PATCH v4 1/7] x86/resctrl: Add multiple tasks to the resctrl group at once Babu Moger
2023-04-19 12:58 ` Ilpo Järvinen [this message]
2023-04-19 14:52 ` Moger, Babu
2023-04-20 9:38 ` Ilpo Järvinen
2023-05-04 18:57 ` Reinette Chatre
2023-05-05 17:09 ` Moger, Babu
2023-05-05 18:49 ` Reinette Chatre
2023-05-09 17:13 ` Moger, Babu
2023-04-17 23:34 ` [PATCH v4 2/7] x86/resctrl: Remove unnecessary rftype flags Babu Moger
2023-05-04 18:58 ` Reinette Chatre
2023-05-05 18:31 ` Moger, Babu
2023-05-05 18:54 ` Reinette Chatre
2023-05-05 19:04 ` Moger, Babu
2023-05-05 21:28 ` Reinette Chatre
2023-05-09 18:54 ` Moger, Babu
2023-05-09 19:31 ` Moger, Babu
2023-04-17 23:34 ` [PATCH v4 3/7] x86/resctrl: Rename rftype flags for consistency Babu Moger
2023-04-19 12:44 ` Ilpo Järvinen
2023-04-19 14:29 ` Moger, Babu
2023-05-04 19:00 ` Reinette Chatre
[not found] ` <232c8e85-0d5b-8e24-33d0-eab5eee186f0@amd.com>
2023-05-05 21:24 ` Reinette Chatre
2023-05-09 17:42 ` Moger, Babu
2023-04-17 23:34 ` [PATCH v4 4/7] x86/resctrl: Re-arrange RFTYPE flags and add more comments Babu Moger
2023-05-04 19:00 ` Reinette Chatre
2023-05-05 20:40 ` Moger, Babu
2023-05-05 21:24 ` Reinette Chatre
2023-05-09 17:33 ` Moger, Babu
2023-04-17 23:34 ` [PATCH v4 5/7] x86/resctrl: Introduce "-o debug" mount option Babu Moger
2023-05-04 19:02 ` Reinette Chatre
2023-05-05 21:26 ` Moger, Babu
2023-04-17 23:34 ` [PATCH v4 6/7] x86/resctrl: Display CLOSID and RMID for the resctrl groups Babu Moger
2023-04-18 2:22 ` Bagas Sanjaya
2023-04-18 14:11 ` Moger, Babu
2023-05-04 19:04 ` Reinette Chatre
2023-05-05 21:45 ` Moger, Babu
2023-05-05 23:25 ` Reinette Chatre
2023-04-17 23:35 ` [PATCH v4 7/7] x86/resctrl: Add debug files when mounted with debug option Babu Moger
2023-04-19 13:20 ` Ilpo Järvinen
2023-04-19 15:16 ` Moger, Babu
2023-04-19 15:16 ` Moger, Babu
2023-04-19 17:16 ` Moger, Babu
2023-04-20 8:59 ` Ilpo Järvinen
2023-04-21 18:47 ` Moger, Babu
2023-04-24 15:12 ` Ilpo Järvinen
2023-05-04 18:54 ` [PATCH v4 0/7] x86/resctrl: Miscellaneous resctrl features Reinette Chatre
2023-05-05 15:43 ` Moger, Babu
2023-05-05 17:47 ` Reinette Chatre
2023-05-05 18:03 ` Moger, Babu
2023-05-29 10:18 ` Shaopeng Tan (Fujitsu)
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=d046eebf-15b-2d23-b8f6-5dd06b49d0d3@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=adrian.hunter@intel.com \
--cc=akpm@linux-foundation.org \
--cc=babu.moger@amd.com \
--cc=bagasdotme@gmail.com \
--cc=bp@alien8.de \
--cc=chang.seok.bae@intel.com \
--cc=christophe.leroy@csgroup.eu \
--cc=corbet@lwn.net \
--cc=damien.lemoal@opensource.wdc.com \
--cc=daniel.sneddon@linux.intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=eranian@google.com \
--cc=fenghua.yu@intel.com \
--cc=hpa@zytor.com \
--cc=james.morse@arm.com \
--cc=jarkko@kernel.org \
--cc=jmattson@google.com \
--cc=jpoimboe@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=paulmck@kernel.org \
--cc=pawan.kumar.gupta@linux.intel.com \
--cc=pbonzini@redhat.com \
--cc=peternewman@google.com \
--cc=peterz@infradead.org \
--cc=quic_jiles@quicinc.com \
--cc=quic_neeraju@quicinc.com \
--cc=rdunlap@infradead.org \
--cc=reinette.chatre@intel.com \
--cc=sandipan.das@amd.com \
--cc=songmuchun@bytedance.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=x86@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.