Re: [RFC] patch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Kirill, thanks for your reply

On 04/02/2012 02:29 PM, Kirill A. Shutemov wrote:
On Mon, Apr 02, 2012 at 08:22:14AM +0400, Alexander Nikiforov wrote:

I think it should be part of task counter css, not core.
CC list updated.
Maybe, I need time to think about your suggestion.
@@ -4558,6 +4594,22 @@ void cgroup_fork(struct task_struct *child)
  	child->cgroups = current->cgroups;
  	get_css_set(child->cgroups);
  	INIT_LIST_HEAD(&child->cg_list);
+
+	struct cgroupfs_root *root;
+
+	/* send event to the userspace */
+	mutex_lock(&cgroup_mutex);
+	for_each_active_root(root) {
+		struct cgroup *cgrp;
+		struct fe_eventfd_list *ev;
+
+		cgrp = task_cgroup_from_root(child, root);
+
+		list_for_each_entry(ev,&cgrp->fe_notify, list) {
+			eventfd_signal(ev->eventfd, 1);
+		}
+	}
+	mutex_unlock(&cgroup_mutex);
  }
How does it affect performance?
One cycle with active roots, one inside task_cgroup_from_root() through cg_links and through events. I don't think what this is significant, maybe I wrong.


  /**
@@ -4653,6 +4705,7 @@ void cgroup_exit(struct task_struct *tsk, int run_callbacks)
  {
  	struct css_set *cg;
  	int i;
+	struct cgroupfs_root *root;

  	/*
  	 * Unlink from the css_set task list if necessary.
@@ -4666,6 +4719,20 @@ void cgroup_exit(struct task_struct *tsk, int run_callbacks)
  		write_unlock(&css_set_lock);
  	}

+	/* send event to the userspace */
+	mutex_lock(&cgroup_mutex);
+	for_each_active_root(root) {
+		struct cgroup *cgrp;
+		struct fe_eventfd_list *ev;
+
+		cgrp = task_cgroup_from_root(tsk, root);
+
+		list_for_each_entry(ev,&cgrp->fe_notify, list) {
+			eventfd_signal(ev->eventfd, 1);
+		}
+	}
+	mutex_unlock(&cgroup_mutex);
+
I think it's racy. You need to notify userspace after reassigning the
task, not before.
You are right.
  	/* Reassign the task to the init_css_set. */
  	task_lock(tsk);
  	cg = tsk->cgroups;



--
Best regards,
     Alex Nikiforov,
     Mobile SW, Advanced Software Group,
     Moscow R&D center, Samsung Electronics

--
To unsubscribe from this list: send the line "unsubscribe cgroups" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [Monitors]

  Powered by Linux