1

J'ai lu quelque part que dans le noyau 2.6 l'ordonnanceur avait pas mal changé, et qu'il était devenu préemptif, de façon à ce que linux se rapproche d'un système temps-réel.

Cependant, je ne comprends pas trop comment fonctionnait l'ancien scheduler s'il n'était pas préemptif, parce qu'il me semble avoir lu également que l'ancien scheduler donnait la main aux processus pendant un certain quantum de temps (en supposant que le processus ne fait pas de wait/sleep ou demande d'I/O) au bout duquel il lui retire la main, or, je ne vois pas comment on peut faire ça sans que ce soit préemptif.
Quelqu'un peut-il m'expliquer ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

2

D'une part, le noyau a changé d'ordonanceur, et d'autre part, il est maintenant préemptible. Ce sont deux choses différentes.

En ce qui concerne l'ordonanceur (en fait il y en a plusieurs dans Linux, mais on parle plus souvent de l'ordonanceur en O(1) utilisé par défaut) :
What's New in the 2.6 Scheduler
Interview: Ingo Molnar

En ce qui concerne la préemption du noyau :
Interview: Robert Love
So much code to write, so little time.

3

Tiens, c'est marrant, dans les sources, il y a un répertoire /arch/m68knommu smile
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

4

uClinux, une version de Linux spéciale pour les architectures sans MMU, a été integrée dans Linux 2.6.
So much code to write, so little time.

5

Merci, mais juste histoire de faire chier : dans le fichier /kernel/sched.c, dans l'en-tête, il est écrit
* 2002-01-04 New ultra-scalable O(1) scheduler by Ingo Molnar:
* hybrid priority-list and round-robin design with
* an array-switch method of distributing timeslices
* and per-CPU runqueues. Cleanups and useful suggestions * by Davide Libenzi, preemptible kernel bits by Robert Love.
Donc apparamment, la modification a été faite en 2002, cad bien avant l'arrivée du noyau 2.6.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

6

Mais intégré seulement dans la ligne 2.5->2.6, pas dans le 2.4 stable à l'époque.
D'ailleurs, selon les ingénieurs de Red Hat s'occupant du noyau (Alan Cox et autres), le noyau préemptible est instable actuellement, et cette fonctionnalité est désactivée dans le noyau de Fedora.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

7

Question pour ceux qui connaissent : unix utilise un ordonnanceur préemptif (ou préemptible ?) ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

8

préemptif : qui interrompt les tâches
préemptible (je ne sais pas si ça se dit aussi en français) : qui peut être interrompu à tout moment

en ce qui concerne UNIX, je pense que ça dépend de quelle version tu parles... pour savoir si les specs imposent quelque chose à ce niveau là, c'est par ici : http://www.unix-systems.org/single_unix_specification/

Par exemple pour Digital UNIX : http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/HTML/APS33DTE_html/DOCU_003.HTM
So much code to write, so little time.

9

Ingo Molnar
a écrit : secondly, scheduling on SMP got improved significantly: both performance and scalability is much better. Also, the scheduler decisions are much more robust these days, because the core design is SMP-aware.
Je ne comprends pas du tout ce que signifient les termes "SMP" et "scalability" (j'ai souvent entendu parler de scaling concernant les scheduler, sans jamais comprendre ce que ça voulait dire).
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

10

SMP = Symmetric Multi-Processing. C'est le support multi-processeurs
Poru le scalability, j'ai bien une petite idée, maus je voudrais pas dire de conneries, donc je m'abstient smile
Mon site perso : http://www.xwing.info

11

scalability = facilité de passage à l'échelle, je pense (ça veut dire que T(2n)/T(n) n'est pas prohibitif, en gros)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

12

"both performance and scalability is much better"

-> non seulement les performances sont meilleures, mais elles sont bonnes à la fois sur des petites machines et sur des machines puissantes (mainframes, clusters, multi-processeurs, ...).
So much code to write, so little time.