From: Nick Piggin <nickpiggin@yahoo.com.au>
To: "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>
Cc: Arjan van de Ven <arjan@infradead.org>,
Andrew Morton <akpm@linux-foundation.org>,
mingo@elte.hu, LKML <linux-kernel@vger.kernel.org>
Subject: Re: sched_yield: delete sysctl_sched_compat_yield
Date: Fri, 30 Nov 2007 14:29:15 +1100 [thread overview]
Message-ID: <200711301429.15664.nickpiggin@yahoo.com.au> (raw)
In-Reply-To: <1196392527.25646.65.camel@ymzhang>
On Friday 30 November 2007 14:15, Zhang, Yanmin wrote:
> On Fri, 2007-11-30 at 13:46 +1100, Nick Piggin wrote:
> > On Wednesday 28 November 2007 09:57, Arjan van de Ven wrote:
> > > sounds like a bad idea; volanomark (well, technically the jvm behind
> > > it) is abusing sched_yield() by assuming it does something it really
> > > doesn't do, and as it happens some of the earlier 2.6 schedulers
> > > accidentally happened to behave in a way that was nice for this
> > > benchmark.
> >
> > OK, why is this still happening? Haven't we been asking JVMs to use
> > futexes or posix locking for years and years now? Are there any sane
> > jvms that _don't_ use yield?
>
> I think it's an issue of volanomark (a kind of java application) instead of
> JVM.
volanomark itself and not the jvm is calling sched_yield()? Do we have
any non-toy threaded java apps? (what's JAVA in the kernel-perf tests?)
> > > Todays kernel has a different behavior somewhat (and before people
> > > scream "regression"; sched_yield() behavior isn't really specified and
> > > doesn't make any sense at all, whatever you get is what you get....
> > > it's pretty much an insane defacto behavior that is incredibly tied to
> > > which decisions the scheduler makes how, and no app can depend on that
> >
> > It is a performance regression. Is there any reason *not* to use the
> > "compat" yield by default?
>
> There is no, so I suggest to set sched_compat_yield=1 by default.
> If sched_compat_yield=0, kernel almost does nothing but returns. When
> sched_compat_yield=1, it is closer to the meaning of sched_yield man page.
sched_yield() is really only defined for posix realtime scheduling
AFAIK, which talks about priority lists.
SCHED_OTHER is defined to be a single priority, below the rest of the
realtime priorities. So at first you *might* say that the process
should then be made to run only after all other SCHED_OTHER processes,
however there is no such ordering requirement for SCHED_OTHER
scheduling. The SCHED_OTHER scheduler can run any task at any time.
That said, I think people would *expect* that call be much closer to
the compat behaviour than the current default. And that's definitely
what Linux has done in the past. So there really does need to be a
good reason to change it like this IMO.
> > As you say, for SCHED_OTHER tasks, yield
> > can do almost anything. We may as well do something that isn't a
> > regression...
>
> I just found SCHED_OTHER in man sched_setscheduler. Is it SCHED_NORMAL in
> the latest kernel?
Yes, SCHED_NORMAL is SCHED_OTHER. Don't know why it got renamed...
next prev parent reply other threads:[~2007-11-30 3:29 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 [this message]
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
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=200711301429.15664.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 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.