mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Nick Piggin <npiggin@suse.de>
Cc: Davide Libenzi <davidel@xmailserver.org>,
	Gene Heskett <gene.heskett@gmail.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Con Kolivas <kernel@kolivas.org>, Mike Galbraith <efault@gmx.de>,
	Arjan van de Ven <arjan@infradead.org>,
	Peter Williams <pwil3058@bigpond.net.au>,
	Thomas Gleixner <tglx@linutronix.de>,
	caglar@pardus.org.tr, Willy Tarreau <w@1wt.eu>,
	Dmitry Adamushko <dmitry.adamushko@gmail.com>
Subject: Re: [patch] CFS (Completely Fair Scheduler), v2
Date: Tue, 17 Apr 2007 10:26:31 +0200	[thread overview]
Message-ID: <20070417082628.GD5076@elte.hu> (raw)
In-Reply-To: <20070417081857.GD20026@wotan.suse.de>


* Nick Piggin <npiggin@suse.de> wrote:

> Actually I think this is something that makes sense to add, even if 
> just for debugging, but maybe also for production, depending on how 
> much it impacts things. Child runs first is an heuristic optimisation 
> that exploits a VM detail (however fundamental). But for things that 
> don't exec right after forking (and maybe some things that do), it can 
> be nicer to reduce context switches, improve cache patterns, and allow 
> children to be load balanced away before touching memory, if 
> child_runs_first is turned off.

yeah, the primary intent was debug. Nick, am i confused to conclude that 
mainline in fact runs the _parent_ first, despite all the elaborate 
runqueue juggling we do there? This piece of code in wake_up_new_task() 
caught my eyes:

                                p->prio = current->prio;
                                p->normal_prio = current->normal_prio;
                                list_add_tail(&p->run_list, &current->run_list);
                                p->array = current->array;
                                p->array->nr_active++;
                                inc_nr_running(p, rq);

shouldnt the list_add_tail() be list_add(), so that task pickup sees the 
child first? Maybe we still do child-runs-first in practice, due to the 
timeslice and sleep average fixups that happen if the parent preempts, 
but the above piece of code seems a quite elaborate way of doing 
activate_task(). To have the child _before_ the parent we'd need the 
add-on patch below. But ... i could be wrong, this is just a quick 
thought.

	Ingo

---
 kernel/sched.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux/kernel/sched.c
===================================================================
--- linux.orig/kernel/sched.c
+++ linux/kernel/sched.c
@@ -1685,7 +1685,7 @@ void fastcall wake_up_new_task(struct ta
 			else {
 				p->prio = current->prio;
 				p->normal_prio = current->normal_prio;
-				list_add_tail(&p->run_list, &current->run_list);
+				list_add(&p->run_list, &current->run_list);
 				p->array = current->array;
 				p->array->nr_active++;
 				inc_nr_running(p, rq);

  reply	other threads:[~2007-04-17  8:27 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-16 22:07 Ingo Molnar
2007-04-16 22:12 ` S.Çağlar Onur
2007-04-17  8:59   ` Ingo Molnar
2007-04-17 14:45     ` S.Çağlar Onur
2007-04-17 15:48       ` Gabriel C
2007-04-17 16:01       ` Ingo Molnar
2007-04-17  4:06 ` Peter Williams
2007-04-17  6:49   ` Ingo Molnar
2007-04-17  4:53 ` Gene Heskett
2007-04-17  5:25   ` Willy Tarreau
2007-04-17  5:51     ` Gene Heskett
2007-04-17  7:18       ` Paolo Ornati
2007-04-17  5:51     ` Mike Galbraith
2007-04-17  6:27     ` Ingo Molnar
2007-04-18  0:06     ` Peter Williams
2007-04-17  6:18   ` Ingo Molnar
2007-04-17  7:01     ` Ingo Molnar
2007-04-17  7:31       ` Davide Libenzi
2007-04-17  7:39         ` Ingo Molnar
2007-04-17 17:18           ` Gene Heskett
2007-04-17 17:15       ` Gene Heskett
2007-04-17 17:22       ` Gene Heskett
2007-04-17  8:03     ` Davide Libenzi
2007-04-17  8:18       ` Nick Piggin
2007-04-17  8:26         ` Ingo Molnar [this message]
2007-04-17  8:41           ` Nick Piggin
2007-04-17  8:57             ` Ingo Molnar
2007-04-17  8:20       ` Ingo Molnar
2007-04-17 16:12     ` Gene Heskett
2007-04-17  6:46 ` Peter Williams
2007-04-17  7:51   ` William Lee Irwin III
2007-04-17  8:16     ` Ingo Molnar
2007-04-17  8:52       ` Ingo Molnar
2007-04-17 14:05       ` Peter Williams
2007-04-17  8:30     ` Peter Williams
2007-04-18 19:15       ` Peter Williams
2007-04-17  9:53   ` Ingo Molnar

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=20070417082628.GD5076@elte.hu \
    --to=mingo@elte.hu \
    --cc=akpm@linux-foundation.org \
    --cc=arjan@infradead.org \
    --cc=caglar@pardus.org.tr \
    --cc=davidel@xmailserver.org \
    --cc=dmitry.adamushko@gmail.com \
    --cc=efault@gmx.de \
    --cc=gene.heskett@gmail.com \
    --cc=kernel@kolivas.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=npiggin@suse.de \
    --cc=pwil3058@bigpond.net.au \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=w@1wt.eu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome