Linux : L'architecture système

Comprendre l'ordonnancement

Testez gratuitement nos 1270 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Dans cette vidéo, abordez l'ordonnancement des tâches dans le noyau Linux d'un point de vue théorique.
05:50

Transcription

J'aimerais vous parler du principe de l'ordonnancement des tâches en restant relativement général. Parce que... Ici, je vous ai fait un dessin. On parle de threads. On parle de runqueue, de waitqueue... C'est pas exactement ça. En tout cas, c'est plus exactement ça dans le noyau Linux. Mais on va rester sur des principes généraux de façon à comprendre au moins les principes de base du scheduling. Donc, le scheduling, c'est un élément essentiel du noyau Linux. De tous noyau, d'ailleurs. De tout système d'exploitation. Parce qu'on a des systèmes d'exploitation qui sont multitâches. Ils peuvent exécuter en même temps plusieurs processus. On a des machines qui ont plusieurs processeurs également, depuis un certain temps. Donc, on va pouvoir réellement faire du multitâches. On a quatre processeurs. On peut exécuter en parallèle quatre processus. Quatre tâches, on pourrait dire. Mais on a, en général, plus de quatre tâches. On a un certain nombre de services qui fonctionnent, on a peut-être des logiciels qui sont ouverts. Donc, il va falloir gérer plus de tâches qu'on a de processeurs. Et pour cela, l'ordonnanceur existe. Son travail, c'est de gérer les différentes tâches et de les positionner, de leur donner du temps processeur avec un algorithme, autant que possible, bien organisé. Donc, le principe est simple : on a, par exemple, un thread, comme ici. Ce thread est posé dans une file d'attente. Ce qu'on appelle une runqueue. Et puis, on va avoir un algorithme qui va prendre les threads, les uns après les autres, dans la file et leur donner du temps processeur. Alors, ça dépend es algorithmes, mais la runqueue peut être purement de type FIFO, c'est-à-dire First In, First Out. On a dans Linux une notion aussi de priorité qui apparaît avec la commande nice. Et donc, on a des process qui sont dits " nice " parce qu'on peut leur donner une priorité différente des process, des processus qui n'ont pas de priorité. Ça, c'est une chose. On a aussi la notion de wait. Si votre processus ne peut pas continuer à s'exécuter correctement... Par exemple, il attend une réponse de l'utilisateur, ou par exemple, il y a un disque qui est saturé et il doit écrire un fichier sur le disque, et bien, il va se placer dans une file d'attente pour libérer le processeur, pour que, dans la runqueue, les autres processus puissent continuer à s'exécuter. Les processus qui sont en exécution ont aussi ce qu'on appelle un quantum. Le quantum, c'est le nombre de millisecondes ou de nanosecondes. pendant lesquelles un processus peut s'exécuter sur le processeur. Lorsqu'un processus a atteint son quantum, et bien, il va laisser la place à un autre processus, de façon à ce que tout le monde soit satisfait. Lorsque le processus a fini d'attendre dans sa waitqueue, et bien, le scheduler le remet dans la runqueue, et si le processus est libre, et bien, il peut s'exécuter à nouveau. Donc, ça, c'est assez simple. Et finalement, toute la question dans le kernel, c'est : est-ce que ce travail est bien fait ? Si le travail est bien fait, ça veut dire qu'on peut allouer de façon optimale des ressources au processus et que la machine va fonctionner très bien avec les processeurs qu'elle a. Y a eu une histoire du scheduling dans Linux. Comme il y a eu une histoire de scheduling dans les systèmes d'exploitation. Mais on va dire, dans les années 2000, on considérait que le scheduler était quelque chose qui avait maintenant atteint sa maturité. Mais on a eu des évolutions au niveau du matériel. Beaucoup plus de multiprocessing, de machines qui ont beaucoup de processeurs. Et puis, peut-être des évolutions des processeurs eux-mêmes qui ont fait qu'il a fallu revoir ces algorithmes de scheduling. Notamment, on avait noté, que, sur Linux, pour un moteur de base de données assez utilisé, et bien, le méthodes de scheduling, y avait quelques imperfections, quelques bugs, qui faisaient qu'il y avait entre 15 et 20 % de perte de performance. sur les benchmarks, sur cette base de données, dûs à des problèmes de scheduling. Auparavant, avant le noyau 2.6 donc, on avait la notion de runqueue, et on avait une runqueue par processeur. À partir du noyau 2.6, le scheduler par défaut qui a été choisi implémente on va dire, un principe qui s'appelle le Completely Fair Scheduling ou Scheduler et qui est basé sur une structure de données qui est commune et qui est basée sur un arbre binaire. Donc, cet arbre binaire, en fait, c'est... L'algorithme s'appelle un red-black tree, un arbre rouge et noir, Et ça gère, en fait, les process selon une forme de lignes de temps. L'avantage d'un algorithme binaire de recherche, c'est qu'on peut positionner tous les processus, et on peut calculer des choses beaucoup plus fines qu'une simple runqueue. Et vous voyez le terme " fair ". Le problème, c'est de bien identifier quels sont, par exemple, les processus qui attendent beaucoup, les processus qui ont plus de demandes que les autres, et de pouvoir être beaucoup plus égalitaire avec les différents processus. Et notamment, grâce à et arbre, grâce à ce red-black tree, on peut identifier les processus qui ont été le moins exécutés, ceux qui ont passé beaucoup de temps à attendre, à dormir. et gérer leur priorité au mieux. L'idée de l'égalité ici, ça s'appelle le sleeper fairness. c'est de considérer, à peu près à égalité, des processus qui ont beaucoup attendu et des processus qui ont peu attendu de façon à avoir un temps CPU comparable à leurs données. Donc, voilà, ça, c'est un peu de la cuisine interne, mais sachez que les algorithmes de scheduling ont évolué à travers le temps et que Linux a eu quelques bugs dans son noyau dans son histoire, mais c'est une constante recherche d'atteindre un scheduling optimal pour le hardware moderne.

Linux : L'architecture système

Prenez en main les principes généraux de l’architecture système de Linux. Comprenez le fonctionnement du noyau (kernel), de la gestion de la mémoire, des processus, etc.

2h01 (20 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Thématiques :
IT
Systèmes d'exploitation
Spécial abonnés
Date de parution :15 sept. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !