Systèmes Embarqués 4 Ordonnanceur et gestion des processus



Documents pareils
DAns un système multi-utilisateurs à temps partagé, plusieurs processus

Linux embarqué Retour d expérience et temps réel. Denis Coupvent-Desgraviers

Un ordonnanceur stupide

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Cours Programmation Système

Introduction aux Systèmes et aux Réseaux

Open Source Job Scheduler. Installation(s)

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Performances et optimisations

Les processus légers : threads. Système L3, /31

1 Mesure de la performance d un système temps réel : la gigue

Ordonnancement temps réel

Chapitre 2. Les processus. 2.1 Introduction. 2.2 les différents états d un processus

Systèmes temps-réel. Plan général. Matthieu Herrb. Mars Introduction - concepts généraux

Exécutif temps réel Pierre-Yves Duval (cppm)

Playing with ptrace() for fun and profit

Partie 7 : Gestion de la mémoire

L art d ordonnancer. avec JobScheduler. François BAYART

Introduction à la Programmation Parallèle: MPI

Synchro et Threads Java TM

Programmation temps-réel Cours 1 et 2 Introduction et ordonnancement

Équilibrage de charge pour systèmes temps-réel asymétriques sur multi-processeurs

Contributions à l expérimentation sur les systèmes distribués de grande taille

Analyse du temps de réponse des systèmes temps réel

SRS DAY: Problématique liée à la virtualisation

Cours A7 : Temps Réel

TD2/TME2 : Ordonnanceur et Threads (POSIX et fair)

ENSP Strasbourg (Edition ) Les Systèmes Temps Réels - Ch. DOIGNON. Chapitre 3. Mise en œuvre : signaux, gestion du temps et multi-activités

Domaine Name System. Auteur: Congduc Pham, Université Lyon 1. Figure 1: Schéma des salles TP11 et TD4

Extension d'un outil de trace pour système embarqué temps réel. Encadrants : Laurent Pautet, Jérôme Hugues

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Systèmes d exploitation Gestion de processus

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Temps Réel. Jérôme Pouiller Septembre 2011

WDpStats Procédure d installation

Le traitement du temps

INITIATION AU LANGAGE JAVA

Les processus. Système L3, /39

Cours 6 : Tubes anonymes et nommés

Programmation système de commandes en C

Cours de Systèmes d Exploitation

Plan global. Programmation système II. Socket du domaine UNIX. Plan. Socket UNIX, Terminaux, Async IO, Mémoire, ELF.

Rappels d architecture

ACTIVITÉ DE PROGRAMMATION

Equilibrage de charge (Load

Impact de choix d implantation sur les performances d une application de Contrôle-Commande

Problèmes liés à la concurrence

TP : Introduction à la qualité de service liée à la Toip 1

Introduction à la programmation concurrente

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Threads. Threads. USTL routier 1

Temps Réel. Jérôme Pouiller Septembre 2011

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Architecture des ordinateurs

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Chapitre VI- La validation de la composition.

Guide d installation JMap 5.0

2011 Hakim Benameurlaine 1

Planifier les rapports d

Gestion des processus

GESTION DES FICHIERS C/UNIX

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Systèmes et exécutifs temps-réel

Integrated Modular Avionic

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Initiation au HPC - Généralités

LE GRAND ÉCART L INÉGALITÉ DE LA REDISTRIBUTION DES BÉNÉFICES PROVENANT DU FRACTIONNEMENT DU REVENU

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

IP & Co. 1. Service DHCP. L'objectif de ce TP est de voir l'ensemble des services élémentaires mis en oeuvre dans les réseaux IP.

Chapitre 4 : Outils de communication centralisés entre processus

CIBLE DE SECURITE CSPN DU PRODUIT PASS. (Product for Advanced SSO)

Cours 1 : La compilation

Prolival Cloud Services

Importantes instructions de sécurité

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cours 2: Exclusion Mutuelle entre processus (lourds, ou légers -- threads)

LEs processus coopèrent souvent pour traiter un même problème. Ces

Département Informatique 5 e année Hadoop: Optimisation et Ordonnancement

Cloud Computing. Introduction. ! Explosion du nombre et du volume de données

Concept de machine virtuelle

Analyse de sécurité de logiciels système par typage statique

Impression sous Linux

Introduction à la théorie des files d'attente. Claude Chaudet

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Architectures en couches pour applications web Rappel : Architecture en couches

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Gestion des journaux

Linux embarqué, Linux Temps Réel : présentation

Architecture ordinateur. Organisation mémoire et Entrées/Sorties

PORTAIL DE GESTION DES SERVICES INFORMATIQUES

Chapitre 2. Cluster de calcul (Torque / Maui) Grid and Cloud Computing

OpenPaaS Le réseau social d'entreprise

Transcription:

HEIA-FR Filière Télécommunications Auteur: D. Gachet / HEIA-FR - Télécoms Systèmes Embarqués 4 Ordonnanceur et gestion des processus Classe T-3 // 2015 [Gac/p.09] T-3// 04.2015

Contenu! Introduction! Completely Fair Scheduler! Realtime Scheduler! Operations! Affectation de processeur Page 2

Introduction! Linux implémente un double ordonnanceur, soit un ordonnanceur pour les processus normaux et un ordonnanceur pour les processus temps réel.! Les processus normaux sont des processus/applications exigeant un partage équitable du processeur et de ses ressources, soit la majorité des processus d une machine Linux standard (desktop ou server).! Les processus temps réels sont des processus/daemons avec de grande contraintes temporelles et/ou d accès aux périphériques. De tels processus sont courrant dans les systèmes embarqués où les exigences sont fortes.! L ordonnanceur de Linux est préemptif. Il implémente 40 niveaux de priorités pour les processus normaux et 100 priorités pour les processus temps réel Page 3

CFS Completely Fair Scheduler! L ordonnanceur pour les processus normaux a énormément évolué. Depuis la version 2.6.23, Linux implémente un nouvel ordonnanceur appelé «CFS Completely Fair Scheduler».! Les caractéristiques de cet ordonnanceurs sont q Répartition fair des resources du processeur en garantissant une proportion identique du temps processeur à chaque processus, p.ex. pour un système à N processus, chaque processus recevra 1/N du temps processeur q Implémente un arbre bicolore (red-black tree) pour la recherche du prochain processus à faire tourner. q Les 40 priorités (-20 à 19) de cet ordonnaceur, appelées «nice level» permettent d attribuer une plus ou moins grande proportion du temps CPU aux différents processus. La priorité -20 reprensente la priorité la plus haute et 19 la plus basse. Par défaut un processus obtient la priorité 0. q 2 «policies»peuvent être choisies lors de la création d un processus v SCHED_NORMAL : processus pour une exécution standard en round-robin v SCHED_BATCH : processus pour une exécution de type «batch» Page 4

Realtime Scheduler! L ordonnanceur temps réesl est prioritaire sur l ordonnanceur CFS.! Les caractéristiques de cet ordonnanceurs sont q Répartition des resources du processeur selon un schéma basé strictement sur le niveau de priorité des processus, c.à.d. un processus d une certaine priorité ne peut être interrompu que par un processus de plus haute priorité. q Cet ordonnanceur dispose de 100 priorités (0 à 99). La priorité 0 est la plus basse et 99 la plus haute. La priorité 0 est réservée aux processus normaux et gérées par l ordonnanceur CFS. q 2 stratégies peuvent être choisies lors de la création d un processus v SCHED_FIFO (first in first out) Un processus de cette catégorie ne peut être interrompu que par un processus de plus haute priorité. Si un tel processus appel un appel système bloquant, l ordonnanceur le retire de la liste des processus «runnable». Lorsqu il devient à nouveau «runnable», il est placé en fin de queue. v SCHED_RR (round-robin) Les processus de cette catégorie sont similaire aux processus FIFO, à l exception qu une fenêtre de temps leur est assignée. Lorsque celle-ci est écoulée le processus est replacé en fin de queue. Page 5

Scheduler Opérations! Pour gérer les processus temps réel et leur niveau de priorité, Linux propose divers services.! Opérations q Obtention de la «policy» d un processus q Affection d une «policy» à un processus q Lecture de l intervalle «round-robin» q Passation du processeur à un autre processus (syscall: sched_getscheduler) (syscall: sched_setscheduler) (syscall: sched_rr_get_interval) (syscall: sched_yield) Page 6

Scheduler Gestion de la «policy» d un processus! Linux propose deux services pour la gestion de la «policy» d un processus, soit l appel système sched_getscheduler() et sched_setscheduler(). #include <sched.h> int sched_getscheduler(pid_t pid); int sched_setscheduler(pid_t pid, int policy, const struct sched_param *sp);! Exemple struct sched_param sp = {.sched_priority = 50, }; int ret = sched_setscheduler (0, SCHED_RR, &sp); if (ret == -1) /* error */! Comportement q La fonction sched_setscheduler() permet de contrôler la «policy» de l ordonnanceur attaché un processus, soit le type d ordonnancement et le niveau de priorité. L argument pid indique l identifiant du processus (la valeur 0 indique le processus courant). Le 2e argument policy permet de spécifier le type d ordonnanceur (SCHED_FIFO ou SCHED_RR). L attribut sched_priority de la struct sched_param permet de fixer le niveau de priorité du processus. q Pour utiliser ce service, le processus doit disposer des privilèges suffisants. Page 7

CFS Operations! Pour gérer les priorités des processus normaux de l ordonnanceur CFS, Linux propose divers services.! Opérations q Gestion des priorités «nice» (syscall: nice) q Lecture du niveau de priorité (syscall: getpriority) q Affectation du niveau de priorité (syscall: setpriority) Page 8

CFS Gestion des priorités «nice»! Un processus placé dans la catégorie des processus normaux peut gérer son taux d affectation du µp à l aide de l appel système nice(). #include <unistd.h> int nice(int inc);! Exemple errno = 0; int prio = nice(1); // increase by 1 nice level if (prio == -1 && errno!= 0) /* error */! Comportement q La fonction nice() permet de diminuer (inc positif) ou d augmenter (inc négatif) le niveau de priorité du processus courant et retourne le nouveau niveau de priorité du processus. Si inc est 0, la fonction retourne le niveau de priorité actuel du processus. q Pour augmenter (inc négatif) son niveau de priority, le processus doit impérativement disposer des privilèges root. q Depuis la ligne de commande il est possible de lancer une application avec un niveau de priorité défini, p. ex. $ nice n -20./my_appl Page 9

CFS Gestion du niveau de priorité! Linux propose deux services pour la gestion du niveau de priorité d un processus, soit l appel système getpriority() et setpriority(). #include <sys/time.h> #include <sys/resource.h> int getpriority(int which, int who); int setpriority(int which, int who, int prio)! Exemple errno = 0; int ret = setpriority(prio_process, getpid(), 2); // nice level = 2 if (ret == -1) /* error */! Comportement q La fonction setpriority() permet de contrôler le niveau de priorité d un processus (which = PRIO_PROCESS), d un groupe de processus (which = PRIO_PGRP) ou d un utilisateur (which = PRIO_USER). L identifiant du processus, groupe de processus ou utilisateur est spécifié avec l argument who. Le paramètre prio indique le niveau de priorité nice (-20 à 19). q Pour augmenter son niveau de priorité, le processus doit disposer des privilèges suffisants. Page 10

Processor Affinity! Par défaut, Linux implémente un mécanisme de «load balancing» pour la la gestion des CPU de processeurs multicoeurs. Cepedant, il arrive que pour des applications il soit utile et nécessaire d attribuer un ou plusieurs CPU à un processus ou groupe de processus. A cet effet, Linux propose une série de macrs et services.! Opérations q Lecture de l affectation d un CPU q Affectation d un CPU à un processus (syscall: sched_getaffinity) (syscall: sched_setaffinity)! Les methodes ci-dessous permettent de définir un ensemble de CPU à affecter à un processus #define _GNU_SOURCE #include <sched.h> void CPU_SET(unsinged long cpu, cpu_set_t *set); void CPU_CLR(unsinged long cpu, cpu_set_t *set); int CPU_ISSET(unsinged long cpu, cpu_set_t *set); void CPU_ZERO(cpu_set_t *set); Page 11

Processor Affinity Affection d un CPU ou groupe de CPU! Un CPU ou groupe de CPU peut être assigné à processus par l intermédiaire de l appel système sched_setaffinity. #define _GNU_SOURCE #include <sched.h> int sched_setaffinity(pid_t pid, size_t setsize, const cpu_set_t *set);! Exemple cpu_set_t set; CPU_ZERO(set); CPU_SET(1, &set); int ret = sched_setaffinity(0, sizeof(set), &set); if (ret == -1) /* error */! Comportement q La fonction sched_setaffinity() permet d assigner un ou plusieur CPU (dans notre cas le CPU 1) à un processus. L argument pid indique l identifiant du processus (la valeur 0 indique le processus courant). Page 12