All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fenghua Yu <fenghua.yu@intel.com>
To: Babu Moger <babu.moger@amd.com>, <corbet@lwn.net>,
	<reinette.chatre@intel.com>, <tglx@linutronix.de>,
	<mingo@redhat.com>, <bp@alien8.de>
Cc: <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>, <linux-kernel@vger.kernel.org>,
	<bagasdotme@gmail.com>, <eranian@google.com>,
	<christophe.leroy@csgroup.eu>, <jarkko@kernel.org>,
	<adrian.hunter@intel.com>, <quic_jiles@quicinc.com>,
	<peternewman@google.com>
Subject: Re: [PATCH v8 1/8] x86/resctrl: Add multiple tasks to the resctrl group at once
Date: Fri, 1 Sep 2023 15:13:40 -0700	[thread overview]
Message-ID: <a59be218-350b-b88b-2b02-be9c1d2bf797@intel.com> (raw)
In-Reply-To: <20230821233048.434531-2-babu.moger@amd.com>

Hi, Babu,

On 8/21/23 16:30, 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/ctrl_grp1
>    $echo 123 > /sys/fs/resctrl/ctrl_grp1/tasks
>    $echo 456 > /sys/fs/resctrl/ctrl_grp1/tasks
>    $echo 789 > /sys/fs/resctrl/ctrl_grp1/tasks
> 
> This is not user-friendly when dealing with hundreds of tasks.
> 
> Support multiple task assignment in one command with tasks ids separated
> by commas. For example:
>    $echo 123,456,789 > /sys/fs/resctrl/ctrl_grp1/tasks
> 
> Reviewed-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
> Tested-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
> ---
>   Documentation/arch/x86/resctrl.rst     |  8 +++++++-
>   arch/x86/kernel/cpu/resctrl/rdtgroup.c | 25 ++++++++++++++++++++++---
>   2 files changed, 29 insertions(+), 4 deletions(-)
> 
> diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/resctrl.rst
> index cb05d90111b4..af234681756e 100644
> --- a/Documentation/arch/x86/resctrl.rst
> +++ b/Documentation/arch/x86/resctrl.rst
> @@ -299,7 +299,13 @@ 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. Multiple
> +	failures are not supported. A single failure encountered while
> +	attempting to assign a task will cause the operation to abort.

What happens to the already moved tasks when "abort"?

Could you please add add more details on "abort"?

"A single failure encountered while attempting to assign a task will 
cause the operation to abort and already added tasks before the failure 
will remain in the group."

> +	Failures will be logged to /sys/fs/resctrl/info/last_cmd_status.
> +
> +	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 725344048f85..8c91c333f9b3 100644
> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> @@ -696,11 +696,10 @@ 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)
> -		return -EINVAL;
>   	rdtgrp = rdtgroup_kn_lock_live(of->kn);
>   	if (!rdtgrp) {
>   		rdtgroup_kn_unlock(of->kn);
> @@ -715,7 +714,27 @@ static ssize_t rdtgroup_tasks_write(struct kernfs_open_file *of,
>   		goto unlock;
>   	}
>   
> -	ret = rdtgroup_move_task(pid, rdtgrp, of);
> +	while (buf && buf[0] != '\0' && buf[0] != '\n') {
> +		pid_str = strim(strsep(&buf, ","));
> +
> +		if (kstrtoint(pid_str, 0, &pid)) {
> +			rdt_last_cmd_puts("Task list parsing error\n");

It would be better to show the failed pid string in the failure report:
+			rdt_last_cmd_puts("Task list parsing error pid %s\n", pid_str);

So user will know which pid string causes the failure?

> +			ret = -EINVAL;
> +			break;
> +		}
> +
> +		if (pid < 0) {
> +			rdt_last_cmd_printf("Invalid pid %d\n", pid);
> +			ret = -EINVAL;
> +			break;
> +		}
> +
> +		ret = rdtgroup_move_task(pid, rdtgrp, of);
> +		if (ret) {
> +			rdt_last_cmd_printf("Error while processing task %d\n", pid);
> +			break;
> +		}
> +	}
>   
>   unlock:
>   	rdtgroup_kn_unlock(of->kn);

Thanks.

-Fenghua

  reply	other threads:[~2023-09-01 22:25 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-21 23:30 [PATCH v8 0/8] x86/resctrl: Miscellaneous resctrl features Babu Moger
2023-08-21 23:30 ` [PATCH v8 1/8] x86/resctrl: Add multiple tasks to the resctrl group at once Babu Moger
2023-09-01 22:13   ` Fenghua Yu [this message]
2023-09-06 14:56     ` Moger, Babu
2023-09-06 20:42       ` Fenghua Yu
2023-09-07 14:44         ` Moger, Babu
2023-09-07 14:51           ` Fenghua Yu
2023-08-21 23:30 ` [PATCH v8 2/8] x86/resctrl: Simplify rftype flag definitions Babu Moger
2023-09-01 22:14   ` Fenghua Yu
2023-08-21 23:30 ` [PATCH v8 3/8] x86/resctrl: Rename rftype flags for consistency Babu Moger
2023-09-01 22:15   ` Fenghua Yu
2023-08-21 23:30 ` [PATCH v8 4/8] x86/resctrl: Add comments on RFTYPE flags hierarchy Babu Moger
2023-08-23  7:03   ` Shaopeng Tan (Fujitsu)
2023-08-23 15:56     ` Moger, Babu
2023-08-29 20:08   ` Reinette Chatre
2023-08-30 16:30     ` Moger, Babu
2023-09-01 22:31   ` Fenghua Yu
2023-09-06 15:10     ` Moger, Babu
2023-08-21 23:30 ` [PATCH v8 5/8] x86/resctrl: Unwind the errors inside rdt_enable_ctx() Babu Moger
2023-08-29 20:10   ` Reinette Chatre
2023-08-30 16:38     ` Moger, Babu
2023-08-30 17:56       ` Reinette Chatre
2023-08-30 18:28         ` Moger, Babu
2023-09-01 23:33   ` Fenghua Yu
2023-08-21 23:30 ` [PATCH v8 6/8] x86/resctrl: Move default group file creation to mount Babu Moger
2023-08-29 20:11   ` Reinette Chatre
2023-08-30 19:50     ` Moger, Babu
2023-08-30 20:00       ` Reinette Chatre
2023-08-30 21:18         ` Moger, Babu
2023-08-30 22:05           ` Reinette Chatre
2023-08-30 23:24             ` Moger, Babu
2023-09-01 23:21   ` Fenghua Yu
2023-09-01 23:36     ` Reinette Chatre
2023-09-01 23:46       ` Fenghua Yu
2023-09-01 23:48         ` Reinette Chatre
2023-09-06 15:19     ` Moger, Babu
2023-08-21 23:30 ` [PATCH v8 7/8] x86/resctrl: Introduce "-o debug" mount option Babu Moger
2023-08-29 20:12   ` Reinette Chatre
2023-08-30 21:45     ` Moger, Babu
2023-09-01 22:35   ` Fenghua Yu
2023-08-21 23:30 ` [PATCH v8 8/8] x86/resctrl: Display hardware ids of resource groups Babu Moger
2023-08-29 20:14   ` Reinette Chatre
2023-08-30 23:19     ` Moger, Babu
2023-08-31 17:42       ` Reinette Chatre
2023-08-31 23:58         ` Moger, Babu
2023-09-01  0:43           ` Reinette Chatre
2023-09-01 17:28             ` Moger, Babu
2023-09-01 17:57               ` Reinette Chatre
2023-09-05 16:51                 ` Moger, Babu
2023-09-01 22:44   ` Fenghua Yu
2023-08-23  7:06 ` [PATCH v8 0/8] x86/resctrl: Miscellaneous resctrl features Shaopeng Tan (Fujitsu)
2023-08-23 15:12   ` Moger, Babu

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=a59be218-350b-b88b-2b02-be9c1d2bf797@intel.com \
    --to=fenghua.yu@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=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.