Re: sched_yield() on 2.6.25

From: Peter Zijlstra
Date: Mon Jun 09 2008 - 11:05:10 EST


On Mon, 2008-06-09 at 08:37 +0200, Jakub Jozwicki wrote:
> > > Is this behavior expected?
> >
> > The behavior of sched_yield with SCHED_OTHER processes has changed
> > several times with Linux over the years, since its behavior is not
> > defined by standards, so it's really "whatever the scheduler feels like
> > doing". The behavior is only defined with realtime scheduling
> > (SCHED_FIFO or SCHED_OTHER).
> >
> > Generally, it's a mistake to assume specific timing behavior from
> > sched_yied for SCHED_OTHER processes.
>
> 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.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/