All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] sched_exit: fix parent->time_slice calculation
@ 2006-06-23  3:17 Oleg Nesterov
  0 siblings, 0 replies; only message in thread
From: Oleg Nesterov @ 2006-06-23  3:17 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Andrew Morton, linux-kernel

sched_exit:

	if (parent->time_slice > task_timeslice(p)))
		parent->time_slice = task_timeslice(p)

I think it should use task_timeslice(parent) instead.

The patch looks complicated, but it is not. It just caches the value
of 'p->parent'.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>

--- 2.6.17-rc6/kernel/sched.c~SCEX	2006-06-22 06:16:05.000000000 +0400
+++ 2.6.17-rc6/kernel/sched.c	2006-06-23 04:48:48.000000000 +0400
@@ -1479,6 +1479,7 @@ void fastcall wake_up_new_task(task_t *p
  */
 void fastcall sched_exit(task_t *p)
 {
+	task_t *parent = p->parent;
 	unsigned long flags;
 	runqueue_t *rq;
 
@@ -1486,14 +1487,14 @@ void fastcall sched_exit(task_t *p)
 	 * If the child was a (relative-) CPU hog then decrease
 	 * the sleep_avg of the parent as well.
 	 */
-	rq = task_rq_lock(p->parent, &flags);
-	if (p->first_time_slice && task_cpu(p) == task_cpu(p->parent)) {
-		p->parent->time_slice += p->time_slice;
-		if (unlikely(p->parent->time_slice > task_timeslice(p)))
-			p->parent->time_slice = task_timeslice(p);
+	rq = task_rq_lock(parent, &flags);
+	if (p->first_time_slice && task_cpu(p) == task_cpu(parent)) {
+		parent->time_slice += p->time_slice;
+		if (unlikely(parent->time_slice > task_timeslice(parent)))
+			parent->time_slice = task_timeslice(parent);
 	}
-	if (p->sleep_avg < p->parent->sleep_avg)
-		p->parent->sleep_avg = p->parent->sleep_avg /
+	if (p->sleep_avg < parent->sleep_avg)
+		parent->sleep_avg = parent->sleep_avg /
 		(EXIT_WEIGHT + 1) * EXIT_WEIGHT + p->sleep_avg /
 		(EXIT_WEIGHT + 1);
 	task_rq_unlock(rq, &flags);


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-06-22 23:17 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-06-23  3:17 [PATCH 1/2] sched_exit: fix parent->time_slice calculation Oleg Nesterov

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.