public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Ingo Molnar <mingo@elte.hu>
Cc: "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>,
	Arjan van de Ven <arjan@infradead.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: sched_yield: delete sysctl_sched_compat_yield
Date: Mon, 3 Dec 2007 22:02:37 +1100	[thread overview]
Message-ID: <200712032202.37975.nickpiggin@yahoo.com.au> (raw)
In-Reply-To: <20071203103326.GD30050@elte.hu>

On Monday 03 December 2007 21:33, Ingo Molnar wrote:
> * Nick Piggin <nickpiggin@yahoo.com.au> wrote:
> > > > I was just talking about the default because I didn't know the
> > > > reason for the way it was set -- now that I do, we should talk
> > > > about trying to improve the actual code so we don't need 2
> > > > defaults.
> > >
> > > I've got the patch below queued up: it uses the more agressive yield
> > > implementation for SCHED_BATCH tasks. SCHED_BATCH is a natural
> > > differentiator, it's a "I dont care about latency, it's all about
> > > throughput for me" signal from the application.
> >
> > First and foremost, do you realize that I'm talking about existing
> > userspace working well on future kernels right? (ie. backwards
> > compatibility).
>
> given how poorly sched_yield() is/was defined the only "compatible"
> solution would be to go back to the old yield code.

While it is technically allowed to do anything with SCHED_OTHER class,
putting the thread to the back of the runnable tasks, or at least having
it give up _some_ priority (like the old scheduler) is less surprising
than having it do _nothing_.

I mean, if firefox really works best if sched_yield does nothing, it
surely shouldn't be calling it at all (nothing to do with it being open
source or not).

Wheras JVMs (eg. that have garbage collectors call yield), presumably
get quite a lot of tuning, and that was probably done with the less
surprising (and more common) sched_yield behaviour.


> (And note that you 
> are rehashing arguments that were covered on lkml months ago already.)

I'm just wondering whether the outcome was the right one.


> > > But first and foremost, do you realize that there will be no easy
> > > solutions to this topic, that it's not just about 'flipping a
> > > default'?
> >
> > Of course ;) I already answered that in the email that you're replying
> >
> > to:
> > > > I was just talking about the default because I didn't know the
> > > > reason for the way it was set -- now that I do, we should talk
> > > > about trying to improve the actual code so we don't need 2
> > > > defaults.
>
> well, in case you were wondering why i was a bit pointy about this, this
> topic of yield has been covered on lkml quite extensively a couple of
> months ago. I assumed you knew about that already, but perhaps not?

I did, but I haven't always followed the scheduler discussions closely
recently. I was surprised to find it hasn't changed much.

I appreciate you can never do exactly the right thing for everyone and
you can't (and don't want, by definition) to make behaviour exactly the
same.

Clearly the current default is far less aggressive (almost noop), and the
compat behaviour is probably more aggressive in most cases than the old
scheduler. I would have thought looking for a middle ground might be a
good idea.

Or just ignore firefox and get them to fix it, if the occasional stalls
are during really high scheduler stressing workloads (do you have a pointer
to that thread, btw?).


> > Anyway, I'd hope it can actually be improved and even the sysctl
> > removed completely.
>
> i think the sanest long-term solution is to strongly discourage the use
> of SCHED_OTHER::yield, because there's just no sane definition for yield
> that apps could rely upon. (well Linus suggested a pretty sane
> definition but that would necessiate the burdening of the scheduler
> fastpath - we dont want to do that.) New ideas are welcome of course.

sched_yield is defined to put the calling task at the end of the queue for
the given priority level as you know (ie. at the end of all other priority
0 tasks, for SCHED_OTHER).

So, while SCHED_OTHER technically allows _any_ task to be picked, I think
it would be least surprising to have the calling task go to the end of the
queue, rather than not doing very much at all...


> [ also, actual technical feedback on the SCHED_BATCH patch i sent (which
>   was the only "forward looking" moment in this thread so far ;-) would
>   be nice too. ]

I dislike a wholesale change in behaviour like that. Especially when it
is changing behaviour of yield among SCHED_BATCH tasks versus yield among
SCHED_OTHER tasks.


  reply	other threads:[~2007-12-03 11:03 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-27  9:33 sched_yield: delete sysctl_sched_compat_yield Zhang, Yanmin
2007-11-27 11:17 ` Ingo Molnar
2007-11-27 22:57 ` Arjan van de Ven
2007-11-30  2:46   ` Nick Piggin
2007-11-30  2:51     ` Arjan van de Ven
2007-11-30  3:02       ` Nick Piggin
2007-11-30  3:15     ` Zhang, Yanmin
2007-11-30  3:29       ` Nick Piggin
2007-11-30  4:32         ` Zhang, Yanmin
2007-11-30 10:08         ` Ingo Molnar
2007-12-03  4:27           ` Nick Piggin
2007-12-03  8:45             ` Ingo Molnar
2007-12-03  9:17               ` Nick Piggin
2007-12-03  9:35                 ` Zhang, Yanmin
2007-12-03  9:57                 ` Ingo Molnar
2007-12-03 10:15                   ` Nick Piggin
2007-12-03 10:33                     ` Ingo Molnar
2007-12-03 11:02                       ` Nick Piggin [this message]
2007-12-03 11:37                         ` Ingo Molnar
2007-12-03 17:04                           ` David Schwartz
2007-12-03 17:37                             ` Chris Friesen
2007-12-03 19:12                               ` David Schwartz
2007-12-03 19:56                                 ` Chris Friesen
2007-12-03 21:39                                   ` Mark Lord
2007-12-03 21:48                                     ` Ingo Molnar
2007-12-03 21:57                                       ` Mark Lord
2007-12-03 22:05                                         ` Ingo Molnar
2007-12-03 22:18                                           ` Mark Lord
2007-12-03 22:33                                             ` Ingo Molnar
2007-12-04  0:18                                               ` Nick Piggin
2007-12-04  0:30                                           ` David Schwartz
2007-12-04  2:09                                             ` Nick Piggin
2007-12-04  1:02                           ` Nick Piggin
2007-12-03  9:41               ` Zhang, Yanmin
2007-12-03 10:17                 ` Ingo Molnar
2007-12-03  9:29           ` Zhang, Yanmin
2007-12-03 10:05             ` Ingo Molnar
2007-12-04  6:40               ` Zhang, Yanmin

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=200712032202.37975.nickpiggin@yahoo.com.au \
    --to=nickpiggin@yahoo.com.au \
    --cc=akpm@linux-foundation.org \
    --cc=arjan@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=yanmin_zhang@linux.intel.com \
    /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