mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Bodo Eggert <7eggert@gmx.de>
To: Leon Woestenberg <leon.woestenberg@gmail.com>
Cc: 7eggert@gmx.de, Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Jakub Jozwicki <jozwicki@aster.pl>,
	linux-kernel@vger.kernel.org, Robert Hancock <hancockr@shaw.ca>
Subject: Re: sched_yield() on 2.6.25
Date: Fri, 13 Jun 2008 00:33:26 +0200 (CEST)	[thread overview]
Message-ID: <Pine.LNX.4.58.0806130006530.8419@be10.lrz> (raw)
In-Reply-To: <c384c5ea0806111545g6e6128bek519ce6022a301339@mail.gmail.com>

On Thu, 12 Jun 2008, Leon Woestenberg wrote:
> On Wed, Jun 11, 2008 at 5:28 PM, Bodo Eggert <7eggert@gmx.de> wrote:
> > Peter Zijlstra <a.p.zijlstra@chello.nl> wrote:
> >> On Mon, 2008-06-09 at 08:37 +0200, Jakub Jozwicki wrote:

> >>> From the man sched_yield:
> >>>
> >>> A  process  can  relinquish  the  processor  voluntarily without blocking by
> >>> calling sched_yield().  The process will then be moved to the  end  of  the
> >>> queue  for  its static priority and a new process gets to run.
> >>>
> >>> and also IEEE/Open Group:
> >>> http://www.opengroup.org/onlinepubs/000095399/functions/sched_yield.html
> >>
> >> Yeah, except that is for Real-Time scheduling classes, SCHED_OTHER
> >> doesn't have static priority queues.
> >>
> >> SCHED_OTHER doesn't have a specified implementation - so relying on it
> >> to do anything specific is well outside the scope of definition.
> >
> > OTOH, it's sane not to schedule exactly the thread which just tried
> > to say "I can't do any sane work, please run another thread.
> >
> That's not the definition of sched_yield(). See the earlier emails,
> and the quote above.
> 
> As the code after sched_yield() has to be executed the thread will be
> rescheduled soon (or even immediately) anyway.

The code after yield() is most likely to not run successfully (and as a
result will return to the yield call) unless some time passes, and this
time can pass while another process gets the CPU. It might even depend on
another process to change the system state.

Besides that, "Schedule another process, if you can" is part of the 
semantics of yield. The code after yield should therefore be expected to 
NOT be the very next code to run.

If you can't do that, it's fine, the process will abuse some more innocent 
electrons for busy waiting, but if you can support this yield() semantics, 
the system will perform much better. Won't it?

> The users not understanding the limited scope where sched_yield()
> behaves deterministicly, seem to think that _yield() will yield() AND
> lower the thread's dynamic priority for SCHED_OTHER. Is downgrading
> the dynamic priority a behavioral option?

I expect it to be. It may cause lower-nice-level processes to run,
but the (lack of) definition allows it.

> On the other hand, I don't think anything should encourage the use of
> sched_yield() outside of the rare SCHED_FIFO/RR case.

I agree that sleeping should be prefered, but if you really have to 
busy-wait for the next thread, you'll want yield() semantics.

  parent reply	other threads:[~2008-06-13  7:46 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <aCBfw-3Cv-23@gated-at.bofh.it>
     [not found] ` <aCBfw-3Cv-21@gated-at.bofh.it>
     [not found]   ` <aCJd6-3IF-11@gated-at.bofh.it>
     [not found]     ` <aCRaM-8cM-33@gated-at.bofh.it>
2008-06-11 15:28       ` Bodo Eggert
2008-06-11 22:45         ` Leon Woestenberg
2008-06-12  8:09           ` Helge Hafting
2008-06-12 22:33           ` Bodo Eggert [this message]
2008-06-13  8:37             ` Helge Hafting
     [not found] <fa.5iKTy3xTJkKWZLGio+GIHXi3+0o@ifi.uio.no>
2008-06-08 22:09 ` Robert Hancock
2008-06-09  6:37   ` Jakub Jozwicki
2008-06-09  9:03     ` Helge Hafting
2008-06-09 15:04     ` Peter Zijlstra
2008-06-08 11:34 Jakub W. Jozwicki
2008-06-09  9:35 ` Andrew Morton

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=Pine.LNX.4.58.0806130006530.8419@be10.lrz \
    --to=7eggert@gmx.de \
    --cc=a.p.zijlstra@chello.nl \
    --cc=hancockr@shaw.ca \
    --cc=jozwicki@aster.pl \
    --cc=leon.woestenberg@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    /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

all inboxes | Powered by JetHome®