LKML Archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/3] cgroups: Add an API to attach a task to current task's cgroup
@ 2010-05-19  0:04 Sridhar Samudrala
  2010-05-20 22:22 ` Paul Menage
  0 siblings, 1 reply; 7+ messages in thread
From: Sridhar Samudrala @ 2010-05-19  0:04 UTC (permalink / raw
  To: Michael S. Tsirkin, netdev, kvm@vger.kernel.org, lkml

Add a new kernel API to attach a task to current task's cgroup
in all the active hierarchies.

Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>

diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
@@ -570,6 +570,7 @@ struct task_struct *cgroup_iter_next(struct cgroup *cgrp,
 void cgroup_iter_end(struct cgroup *cgrp, struct cgroup_iter *it);
 int cgroup_scan_tasks(struct cgroup_scanner *scan);
 int cgroup_attach_task(struct cgroup *, struct task_struct *);
+int cgroup_attach_task_current_cg(struct task_struct *);
 
 /*
  * CSS ID is ID for cgroup_subsys_state structs under subsys. This only works
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 6d870f2..6cfeb06 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -1788,6 +1788,29 @@ out:
 	return retval;
 }
 
+/**
+ * cgroup_attach_task_current_cg - attach task 'tsk' to current task's cgroup
+ * @tsk: the task to be attached
+ */
+int cgroup_attach_task_current_cg(struct task_struct *tsk)
+{
+	struct cgroupfs_root *root;
+	struct cgroup *cur_cg;
+	int retval = 0;
+
+	cgroup_lock();
+	for_each_active_root(root) {
+		cur_cg = task_cgroup_from_root(current, root);
+		retval = cgroup_attach_task(cur_cg, tsk);
+		if (retval)
+			break;
+	}
+	cgroup_unlock();
+
+	return retval;
+}
+EXPORT_SYMBOL_GPL(cgroup_attach_task_current_cg);
+
 /*
  * Attach task with pid 'pid' to cgroup 'cgrp'. Call with cgroup_mutex
  * held. May take task_lock of task



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] cgroups: Add an API to attach a task to current  task's cgroup
  2010-05-19  0:04 [PATCH 1/3] cgroups: Add an API to attach a task to current task's cgroup Sridhar Samudrala
@ 2010-05-20 22:22 ` Paul Menage
  2010-05-20 22:26   ` Paul Menage
                     ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Paul Menage @ 2010-05-20 22:22 UTC (permalink / raw
  To: Sridhar Samudrala; +Cc: Michael S. Tsirkin, netdev, kvm@vger.kernel.org, lkml

On Tue, May 18, 2010 at 5:04 PM, Sridhar Samudrala
<samudrala.sridhar@gmail.com> wrote:
> Add a new kernel API to attach a task to current task's cgroup
> in all the active hierarchies.
>
> Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>

Reviewed-by: Paul Menage <menage@google.com>

It would be more efficient to just attach directly to current->cgroups
rather than potentially creating/destroying one css_set for each
hierarchy until we've completely converged on current->cgroups - but
that would require a bunch of refactoring of the guts of
cgroup_attach_task() to ensure that the right can_attach()/attach()
callbacks are made. That doesn't really seem worthwhile right now for
the initial use, that I imagine isn't going to be
performance-sensitive.

Paul

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] cgroups: Add an API to attach a task to current  task's cgroup
  2010-05-20 22:22 ` Paul Menage
@ 2010-05-20 22:26   ` Paul Menage
  2010-05-21 15:09   ` Sridhar Samudrala
  2010-05-25 16:53   ` Michael S. Tsirkin
  2 siblings, 0 replies; 7+ messages in thread
From: Paul Menage @ 2010-05-20 22:26 UTC (permalink / raw
  To: Sridhar Samudrala; +Cc: Michael S. Tsirkin, netdev, kvm@vger.kernel.org, lkml

On Thu, May 20, 2010 at 3:22 PM, Paul Menage <menage@google.com> wrote:
> On Tue, May 18, 2010 at 5:04 PM, Sridhar Samudrala
> <samudrala.sridhar@gmail.com> wrote:
>> Add a new kernel API to attach a task to current task's cgroup
>> in all the active hierarchies.
>>
>> Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
>
> Reviewed-by: Paul Menage <menage@google.com>
>

One other thought on this - this would be the first piece of code
that's attaching a task to a cgroup without holding the cgroup
directory inode i_mutex. I believe that this is probably OK.

Paul

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] cgroups: Add an API to attach a task to current task's cgroup
  2010-05-20 22:22 ` Paul Menage
  2010-05-20 22:26   ` Paul Menage
@ 2010-05-21 15:09   ` Sridhar Samudrala
  2010-05-25 16:53   ` Michael S. Tsirkin
  2 siblings, 0 replies; 7+ messages in thread
From: Sridhar Samudrala @ 2010-05-21 15:09 UTC (permalink / raw
  To: Paul Menage
  Cc: Sridhar Samudrala, Michael S. Tsirkin, netdev,
	kvm@vger.kernel.org, lkml

On 5/20/2010 3:22 PM, Paul Menage wrote:
> On Tue, May 18, 2010 at 5:04 PM, Sridhar Samudrala
> <samudrala.sridhar@gmail.com>  wrote:
>    
>> Add a new kernel API to attach a task to current task's cgroup
>> in all the active hierarchies.
>>
>> Signed-off-by: Sridhar Samudrala<sri@us.ibm.com>
>>      
> Reviewed-by: Paul Menage<menage@google.com>
>
> It would be more efficient to just attach directly to current->cgroups
> rather than potentially creating/destroying one css_set for each
> hierarchy until we've completely converged on current->cgroups - but
> that would require a bunch of refactoring of the guts of
> cgroup_attach_task() to ensure that the right can_attach()/attach()
> callbacks are made. That doesn't really seem worthwhile right now for
> the initial use, that I imagine isn't going to be
> performance-sensitive.
>    
Yes. In our use-case, this will be called only once per guest interface 
when the guest comes up.
Hope you or someone more familiar with cgroups subsystem can optimize 
this function later.

Thanks
Sridhar


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] cgroups: Add an API to attach a task to current task's cgroup
  2010-05-20 22:22 ` Paul Menage
  2010-05-20 22:26   ` Paul Menage
  2010-05-21 15:09   ` Sridhar Samudrala
@ 2010-05-25 16:53   ` Michael S. Tsirkin
  2010-05-25 18:34     ` Paul Menage
  2 siblings, 1 reply; 7+ messages in thread
From: Michael S. Tsirkin @ 2010-05-25 16:53 UTC (permalink / raw
  To: Paul Menage
  Cc: Sridhar Samudrala, netdev, kvm@vger.kernel.org, lkml, containers,
	lizf

On Thu, May 20, 2010 at 03:22:15PM -0700, Paul Menage wrote:
> On Tue, May 18, 2010 at 5:04 PM, Sridhar Samudrala
> <samudrala.sridhar@gmail.com> wrote:
> > Add a new kernel API to attach a task to current task's cgroup
> > in all the active hierarchies.
> >
> > Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
> 
> Reviewed-by: Paul Menage <menage@google.com>
> 
> It would be more efficient to just attach directly to current->cgroups
> rather than potentially creating/destroying one css_set for each
> hierarchy until we've completely converged on current->cgroups - but
> that would require a bunch of refactoring of the guts of
> cgroup_attach_task() to ensure that the right can_attach()/attach()
> callbacks are made. That doesn't really seem worthwhile right now for
> the initial use, that I imagine isn't going to be
> performance-sensitive.
> 
> Paul

Is this patch suitable for 2.6.35?
It is needed to fix the case where vhost user might cause a kernel thread
to consume more CPU than allowed by the cgroup.
Should I just merge it through the vhost tree?
Ack for this?

Thanks,

-- 
MST

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] cgroups: Add an API to attach a task to current  task's cgroup
  2010-05-25 16:53   ` Michael S. Tsirkin
@ 2010-05-25 18:34     ` Paul Menage
  2010-05-27  9:16       ` Michael S. Tsirkin
  0 siblings, 1 reply; 7+ messages in thread
From: Paul Menage @ 2010-05-25 18:34 UTC (permalink / raw
  To: Michael S. Tsirkin
  Cc: Sridhar Samudrala, netdev, kvm@vger.kernel.org, lkml, containers,
	lizf

On Tue, May 25, 2010 at 9:53 AM, Michael S. Tsirkin <mst@redhat.com> wrote:
> On Thu, May 20, 2010 at 03:22:15PM -0700, Paul Menage wrote:
>> On Tue, May 18, 2010 at 5:04 PM, Sridhar Samudrala
>> <samudrala.sridhar@gmail.com> wrote:
>> > Add a new kernel API to attach a task to current task's cgroup
>> > in all the active hierarchies.
>> >
>> > Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
>>
>> Reviewed-by: Paul Menage <menage@google.com>
>>
>> It would be more efficient to just attach directly to current->cgroups
>> rather than potentially creating/destroying one css_set for each
>> hierarchy until we've completely converged on current->cgroups - but
>> that would require a bunch of refactoring of the guts of
>> cgroup_attach_task() to ensure that the right can_attach()/attach()
>> callbacks are made. That doesn't really seem worthwhile right now for
>> the initial use, that I imagine isn't going to be
>> performance-sensitive.
>>
>> Paul
>
> Is this patch suitable for 2.6.35?

Should be OK, yes.

Paul

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] cgroups: Add an API to attach a task to current task's cgroup
  2010-05-25 18:34     ` Paul Menage
@ 2010-05-27  9:16       ` Michael S. Tsirkin
  0 siblings, 0 replies; 7+ messages in thread
From: Michael S. Tsirkin @ 2010-05-27  9:16 UTC (permalink / raw
  To: Paul Menage
  Cc: Sridhar Samudrala, netdev, kvm@vger.kernel.org, lkml, containers,
	lizf, Andrew Morton, Ben Blum, KAMEZAWA Hiroyuki

On Tue, May 25, 2010 at 11:34:12AM -0700, Paul Menage wrote:
> On Tue, May 25, 2010 at 9:53 AM, Michael S. Tsirkin <mst@redhat.com> wrote:
> > On Thu, May 20, 2010 at 03:22:15PM -0700, Paul Menage wrote:
> >> On Tue, May 18, 2010 at 5:04 PM, Sridhar Samudrala
> >> <samudrala.sridhar@gmail.com> wrote:
> >> > Add a new kernel API to attach a task to current task's cgroup
> >> > in all the active hierarchies.
> >> >
> >> > Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
> >>
> >> Reviewed-by: Paul Menage <menage@google.com>
> >>
> >> It would be more efficient to just attach directly to current->cgroups
> >> rather than potentially creating/destroying one css_set for each
> >> hierarchy until we've completely converged on current->cgroups - but
> >> that would require a bunch of refactoring of the guts of
> >> cgroup_attach_task() to ensure that the right can_attach()/attach()
> >> callbacks are made. That doesn't really seem worthwhile right now for
> >> the initial use, that I imagine isn't going to be
> >> performance-sensitive.
> >>
> >> Paul
> >
> > Is this patch suitable for 2.6.35?
> 
> Should be OK, yes.
> 
> Paul

So I'll add your Acked-by tag then, and merge through the vhost tree
together with the patch that uses this.

-- 
MST

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-05-27  9:21 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-19  0:04 [PATCH 1/3] cgroups: Add an API to attach a task to current task's cgroup Sridhar Samudrala
2010-05-20 22:22 ` Paul Menage
2010-05-20 22:26   ` Paul Menage
2010-05-21 15:09   ` Sridhar Samudrala
2010-05-25 16:53   ` Michael S. Tsirkin
2010-05-25 18:34     ` Paul Menage
2010-05-27  9:16       ` Michael S. Tsirkin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).