2004-06-29 12:51:50

by Povolotsky, Alexander

[permalink] [raw]
Subject: Linux scheduler (scheduling) questions

Hello Everyone,

I have "general" Linux OS scheduling questions, especially with regards
as those apply to the (latest) Linux 2.6 scheduler features (would really
appreciate if whether/when/while answering those questions listed below,
you could pinpoint differences between Linux 2.6 and Linux 2.4 !):

0. I was told that the Linux kernel could be configured with one of the 3
(? ) different scheduling policies - could someone describe
those to me in details ?

1. How rescheduling is "induced" in above scheduling policies ?
Does at least one of above mentioned scheduling policies uses "clock
tick" as a scheduling event ?
Also, releasing mutex lock (semaphore) in Linux application/user-space
task - is it considered (by the sched) as a
"rescheduling event" ? - (in addition to "clock tick" event) - this is
true for PSOS / VxWorks RTOSes.

2. Linux 2.6 (I was told it is the same for Linux 2.4.21-15) has priorities
0-99 for RT priorities and 100-139 for normal (SCHED_NORMAL) tasks.

> I presume that priorities 0-99 are "recommended" (or enforced ?) for
> Linux kernel "native" tasks ... and "out or reach" for application
> tasks (unless one dares to merge application into the Linux kernel,
> masquerading it as a "system level command" - did anyone tried this ? -
> I presume it is not recommended ... ) ?
>
Under what priority the OS system calls are executed ?

3. Is priority inversion and its prevention (priority inheritance or
priority ceilings) applicable to Linux ) for application/user-space tasks (
with priorities in the range 100-139) ?
> Similar question for the situation when the "application" process
> executes "OS system call" in the kernel address space ?
> Similar question for the RT tasks (which I presume are Linux kernel
> "native" tasks, always executing in the kernel address space ? ) ?
>
4. What about scheduling threads ? - as I have understood (from the FAQ on
http://www.tux.org/lkml/ ), threads in Linux are implemented in the kernel
space - is this information up to date, i.e. - is it applicable to Linux 2.6
? and what it actually means
(does it mean that threads are always running in the kernel space ? - that
sounds a bit strange ...).
With what priorities threads are running ? - do those priorities depend on
the priority of the application/user space process from which the clone
system call was made ?).
5. Deviating from the scheduling line of questions (but staying with threads
issues): is there an option in clone(2) to make threads
not to run in the same address space but rather act as independent
process(es).

> Thanks,
> Best Regards,
> Alex Povolotsky
-----Original Message-----
From: Ingo Molnar [mailto:[email protected]]
Sent: Monday, June 28, 2004 10:40 AM
To: Povolotsky, Alexander
Subject: Re: Any differences (between 2.4 and 2.6) in Linux kernel
scheduling

Alexander,

you might want to post your questions to [email protected]
(or some other, RT related mailing list). The scheduler is described in
a rudimentary way in Documentation/sched-design.txt, sched-coding.txt,
with no focus on RT though.

Ingo

>
>
>


2004-06-29 15:17:20

by Felipe Alfaro Solana

[permalink] [raw]
Subject: Re: Linux scheduler (scheduling) questions

On Tue, 2004-06-29 at 08:51 -0400, Povolotsky, Alexander wrote:

> 5. Deviating from the scheduling line of questions (but staying with threads
> issues): is there an option in clone(2) to make threads
> not to run in the same address space but rather act as independent
> process(es).

If you want something in a different address space, then you want a
process. Threads of the same process share the whole address space
(except they have their own stack) and this have some advantages, like
faster CPU context switching between threads of the same process, and
faster creation times, among others.