Linux et le temps réel - Meetup du 15 octobre 2015

Christian Charreyre
Christian CharreyreAssocié, CIO Systèmes Embarqués à CIO Systèmes Embarqués
Linux et le Temps réel - 15 Octobre 2015 1
www.ciose.fr
Linux et le Temps réelLinux et le Temps réel
Partie 1Partie 1
C. CharreyreC. Charreyre
christian.charreyre@ciose.frchristian.charreyre@ciose.fr
http://www.ciose.frhttp://www.ciose.fr
https://twitter.com/CIOinfoindushttps://twitter.com/CIOinfoindus
http://fr.slideshare.net/charreyrehttp://fr.slideshare.net/charreyre
Linux et le Temps réel - 15 Octobre 2015 2
www.ciose.fr
Licence
Attribution-Noncommercial-Share Alike 4.0 International
You are free:
to Share - copy and redistribute the material in any medium or format
to Adapt - remix, transform, and build upon the material
The licensor cannot revoke these freedoms as long as you follow the license terms.
Under the following conditions:
Attribution — You must give appropriate credit, provide a link to the license, and indicate if
changes were made. You may do so in any reasonable manner, but not in any way that
suggests the licensor endorses you or your use.
NonCommercial — You may not use the material for commercial purposes.
ShareAlike — If you remix, transform, or build upon the material, you must distribute your
contributions under the same license as the original.
No additional restrictions — You may not apply legal terms or
technological measures that legally restrict others from doing
anything the license permits.
License text : http://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
Linux et le Temps réel - 15 Octobre 2015 3
www.ciose.fr
CIO en quelques mots
Société d'ingénierie en systèmes embarqués :
électronique et logiciel
Au service de nos clients depuis 1990
15 spécialistes en embarqué et temps réel
Expert en Linux embarqué depuis 2000,
OpenEmbedded et Yocto depuis 2008
CA annuel : 1 500 000 €
Siège à Saint-Étienne
Agence à Marseille
Agréé CIR
Linux et le Temps réel - 15 Octobre 2015 4
www.ciose.fr
C. Charreyre en quelques
mots
Associé au sein de CIO
Responsable des technologies Linux embarqué
Formateur Linux embarqué (avec Captronic et
en direct)
30 ans dans l'embarqué et le monde Unix / Linux
Fervent promoteur du logiciel libre
Membre de Medinsoft – Commission Logiciel
Libre
Linux et le Temps réel - 15 Octobre 2015 5
www.ciose.fr
Caractéristiques d’un
système Temps Réel
Principales caractéristiques attendues :
Délai de réponse à une IT borné et connu
Possibilité d’activer une tâche de manière périodique
avec un jitter borné
Scheduling basé sur un niveau de priorité fixe
Gestion fine du temps
Linux et le Temps réel - 15 Octobre 2015 6
www.ciose.fr
Caractéristiques de Linux
Linux est un OS de la classe généraliste (comme
Windows)
Le but principal de l’OS est d’affecter le processeur
à tous les process sur une durée moyenne :
Le scheduler privilégie l’avancée de tous les process au
détriment du déterminisme
Tous les process obtiennent le processeur au bout d’un
certain temps
Il existe une priorité « temps réel »
(sched_setscheduler() avec SCHED_FIFO ou
SCHED_RR)
En pratique, elle ne permet pas d’obtenir des
performances de temps réel dur
Linux et le Temps réel - 15 Octobre 2015 7
www.ciose.fr
Le scheduler de Linux
Source : Programmation Système en C sous Linux – Christophe Blaess
Linux et le Temps réel - 15 Octobre 2015 8
www.ciose.fr
États d'un processus
Un processus en sommeil attend une ressource
ou un événement extérieur
C'est le kernel qui place le processus en
sommeil
ex: écriture sur un device lent, le driver met le
processus en sommeil puis le rend de nouveau
éligible
Deux types de mises en sommeil :
interruptible : réveil sur l'arrivée d'un signal
ininterruptible : réveil seulement sur l'arrivée d'une
interruption au niveau du kernel (cf ex. ci dessus)
Transitions entre les états Running et Stopped
liées aux signaux SIGSTOP et SIGCONT
Linux et le Temps réel - 15 Octobre 2015 9
www.ciose.fr
Fonctionnement
multi tâches - Priorité
Le noyau doit assurer la répartition du
processeur entre les différents processus
Les transitions entre états s'effectuent sous le
contrôle du noyau
Lorsqu'un processus s'endort, le noyau
réattribue immédiatement le processeur à un
autre processus en attente
Cependant, cela ne suffit pas pour assurer une
bonne répartition du processeur
Le noyau préempte un processus actif pour
réattribuer le processeur sur la base des
critères d'ordonnancement
Linux est un système multi tâches préemptif
Linux et le Temps réel - 15 Octobre 2015 10
www.ciose.fr
Fonctionnement
multi tâches - Priorité
Un processus préempté passe à l'état Ready
De même un processus à l'état Sleeping qui se
réveille passe par l'état Ready, et éventuellement
après à l'état Running
Pour élire un processus, Linux se base sur 2
priorités :
valeur statique affectée au processus au démarrage (peut
être partiellement modifiée par appel système)
valeur dynamique remise à jour à chaque scheduling du
processus, fonction de la priorité statique et autres facteurs
plus le processus utilise le temps CPU imparti, plus sa
priorité dynamique baisse et vice versa
plus un processus a une priorité dynamique élevée, plus le
processus obtient une tranche de temps longue
mécanisme destiné à établir un temps partagé entre les
processus, et à assurer une avancée de tous (classe d'OS
généraliste type Windows...)
Linux et le Temps réel - 15 Octobre 2015 11
www.ciose.fr
Mécanismes
d'ordonnancement
3 types d'ordonnancement possibles,
définis au niveau du processus :
FIFO
Round Robbin
Other
Ordonnancement FIFO :
Principe de file attente
Une liste de processus par priorité statique
Le 1er processus de la file de + haute priorité
s'exécute jusqu'à ce qu'il relâche le processeur
Il est alors repoussé en fin de liste
Si aucun autre processus prêt à cette priorité,
passage aux priorités moindres
Linux et le Temps réel - 15 Octobre 2015 12
www.ciose.fr
Mécanismes
d'ordonnancement
Ordonnancement FIFO (suite) :
Dès qu'un processus de priorité supérieure est de
nouveau prêt, attribution immédiate du processeur
Type d'ordonnancement le plus égoïste car un
processus de plus forte priorité peut mobiliser le
processeur en permanence
Linux et le Temps réel - 15 Octobre 2015 13
www.ciose.fr
Mécanismes
d'ordonnancement
Ordonnancement Round Robbin :
Variante de l'ordonnancement FIFO
Au sein d'un niveau de priorité, chaque processus
dispose d'une tranche de temps fixe.
A la fin de celle-ci, il est interrompu, mis dans l'état
Prêt, et repoussé à la fin de la liste de ce niveau de
priorité
Ceci introduit une notion de partage du temps au
sein d'un niveau de priorité
Ordonnancement Other
Ordonnancement par défaut de Linux
Calcul d'une priorité dynamique en fonction de la
priorité statique et de la consommation du
processeur
Influe sur quantum de temps attribué
Linux et le Temps réel - 15 Octobre 2015 14
www.ciose.fr
Caractéristiques de Linux
Jusqu'en 2.4, le kernel ne peut être préempté : pas de
scheduling durant la durée d’un system call
En 2.6, préemption = option de configuration
Le kernel présente des sections non interruptibles
même en mode préemptible (handler d'IT + spinlocks)
Jusqu'en 2.4, la durée de sélection du process élu lors
du scheduling se dégrade avec le nombre de process
Process AProcess A
UserUser
System CallSystem Call
Process AProcess A
KernelKernel
Spinlock : Masquage ITSpinlock : Masquage IT
(Section critique)(Section critique)
IRQIRQ
IRQIRQ
HandlerHandler
Process AProcess A
KernelKernel
FinFin
System CallSystem Call
SchedulerScheduler
Process BProcess B
UserUser
Wake upWake up
process Bprocess B
Linux et le Temps réel - 15 Octobre 2015 15
www.ciose.fr
Solutions vers le Temps
Réel
Optimisation du code système :
Réduction des sections critiques dans le code kernel
Introduction de points de rescheduling dans les
systems calls
Création de patches du kernel
Utilisation d’une extension temps réel
Linux et le Temps réel - 15 Octobre 2015 16
www.ciose.fr
Kernel Preemptive patch –
Linux 2.4
Kernel preemptive patch :
– http://kpreempt.sourceforge.net
Solution MontaVista (commerciale)
Ce patch traite la non préemptabilité du kernel
standard
Le patch ne peut rien contre les spinlocks de longue
durée présents dans le code kernel (protection des
sections critiques)
Linux et le Temps réel - 15 Octobre 2015 17
www.ciose.fr
Benchmark du preemptive
patch
Résultats du benchmark Audio latency
(http://www.gardena.net/benno/linux/audio/)
avec et sans patch preemptive kernel
while(1)
{
time1=my_gettime();
waste 80% of the CPU of the duration of one audio
fragment (noop loop)
time2=my_gettime();
write(audio_fd,playbuffer,fragmentsize);
time3=my_gettime();
}
Linux et le Temps réel - 15 Octobre 2015 18
www.ciose.fr
Benchmark du preemptive
patch
Graphiques pour le cas de test ‘Write disk
stress’ :
Mesures de latence de traitement d’échantillons
audio sous diverses conditions de stress
Write disk stress consiste à copier un très gros
fichier sur le disque dur
Ligne jaune = durée d’un échantillon audio
Ligne blanche = durée de traitement mesurée =
time3 – time1
Ligne verte = simulation de traitement calée sur 80%
de la durée de l’échantillon = time2 – time1
Linux et le Temps réel - 15 Octobre 2015 19
www.ciose.fr
Benchmark sur Kernel
2.4.6 natif
Linux et le Temps réel - 15 Octobre 2015 20
www.ciose.fr
Benchmark sur Kernel
2.4.6 + patch preemptive
Linux et le Temps réel - 15 Octobre 2015 21
www.ciose.fr
Real Time Scheduler patch
– Linux 2.4
Real Time scheduler patch
http://rtsched.sourceforge.net/ ou
Solution MontaVista (commerciale)
Ces solutions créent un scheduler temps réel
efficace au dessus du scheduler Linux.
Le scheduler TR traite les priorités SCHED_RR et
SCHED_FIFO et passe la main au scheduler Linux
pour les autres cas.
Ce patche traite la dégradation du temps de
sélection du process élu du kernel standard
(algorithme en O(n))
Ne sert plus sur un kernel 2.6.x qui a un algorithme
en O(1)
Linux et le Temps réel - 15 Octobre 2015 22
www.ciose.fr
CONFIG_PREEMPT_RT Patch
Patches précédent dédiées aux vieux kernels
(2.4)
Actuellement : linux-rt (CONFIG_PREEMPT_RT
patch)
Patch qui est géré dans la branche linux-rt de Ingo
Molnar
Applicable sur kernels 2.6.x et 3.x
Suit les versions de kernel vanilla
Rend le kernel presque entièrement préemptible, y
compris pour les spinlocks et les handlers d'IRQ
Remplace les spinlocks par des mutexes avec
héritage de priorité
Les IRQ handlers deviennent des threads kernel
Voir https://rt.wiki.kernel.org/index.php/Main_Page
Linux et le Temps réel - 15 Octobre 2015 23
www.ciose.fr
CONFIG_PREEMPT_RT Patch
Des inquiétudes sur la soutenabilité
(développeurs + funding) jusqu'à Q3 2015
Annonce début Octobre de la création d'un projet
RTL (Real Time Linux) sous l'égide de Linux
Foundation, basé sur ce patch
Objectif ultime : merge du patch dans le kernel
upstream ?
Linux et le Temps réel - 15 Octobre 2015 24
www.ciose.fr
Extensions temps réel
Idée : disposer d’un RTOS en dessous du kernel
Linux
Linux tourne comme tâche idle du RTOS
Nécessité de partager le développement entre
éléments Real Time et éléments Linux
Des IPC pour échanger entre composants RT et
composants Linux
Linux et le Temps réel - 15 Octobre 2015 25
www.ciose.fr
Extensions temps réel
Les principales solutions :
RTLinux divisé en 2 produits
RTLinux Free qui relève de la licence GPL et de la
licence Open RTLinux Patent License. Ne semble plus
téléchargeable.
RTLinux Pro qui relève d’une licence commerciale
(Wind River)
RTAI et plus récemment Xenomai qui relèvent de la
licence GPL
RTAI développé par Institut Polytechnique de Milan
https://www.rtai.org/
Xenomai (http://www.xenomai.org/) implémente des
skins des RTOS traditionnels
Linux et le Temps réel - 15 Octobre 2015 26
www.ciose.fr
Principe de
fonctionnement
Application d’un patch sur le kernel pour
permettre l'utilisation de l'extension temps réel.
RTOS additionnel sous forme de Kernel
Module(s)
Développement de tâches du RTOS sous forme
de kernel modules ou de process Linux (LXRT /
Xenomai)
Le scheduler Linux ne gère pas les tâches
temps réel et ne fonctionne que lorsque le
RTOS lui laisse le processeur
1 sur 26

Recommandé

Formation linux temps réel - Rennes 14 octobre 2014 par
Formation linux temps réel  - Rennes 14 octobre 2014Formation linux temps réel  - Rennes 14 octobre 2014
Formation linux temps réel - Rennes 14 octobre 2014eurogicielgroup
300 vues1 diapositive
Solutions temps réel sous linux par
Solutions temps réel sous linuxSolutions temps réel sous linux
Solutions temps réel sous linuxembedded-linux-bdx
839 vues41 diapositives
Linux et les systèmes embarqués par
Linux et les systèmes embarquésLinux et les systèmes embarqués
Linux et les systèmes embarquésStéphane Legrand
1.6K vues31 diapositives
Meetup Systemd vs sysvinit par
Meetup Systemd vs sysvinitMeetup Systemd vs sysvinit
Meetup Systemd vs sysvinitChristian Charreyre
1.3K vues24 diapositives
Noyau temps réel freertos cheriet mohammed el amine par
Noyau temps réel freertos cheriet mohammed el amineNoyau temps réel freertos cheriet mohammed el amine
Noyau temps réel freertos cheriet mohammed el amineCHERIET Mohammed El Amine
4.1K vues51 diapositives
Embarquer Linux et des systèmes libres, méthodes et apports par
Embarquer Linux et des systèmes libres, méthodes et apportsEmbarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apportsguest3be047
2.4K vues28 diapositives

Contenu connexe

Tendances

Distro Recipes 2013 : Yocto / OpenEmbedded par
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedAnne Nicolas
3.7K vues29 diapositives
Administration reseau linux par
Administration reseau linuxAdministration reseau linux
Administration reseau linuxRiadh Briki
1K vues59 diapositives
Les solutions libres pour les systèmes embarqués par
Les solutions libres pour les systèmes embarquésLes solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarquésAlexandre LAHAYE
1.5K vues67 diapositives
Cours linux complet par
Cours linux completCours linux complet
Cours linux completaubin82
22.7K vues255 diapositives
Sysadmin Day #5 par
Sysadmin Day #5Sysadmin Day #5
Sysadmin Day #5Olivier (DaffyDuke) Duquesne
335 vues24 diapositives
Plateformes Linux Embedded par
Plateformes Linux EmbeddedPlateformes Linux Embedded
Plateformes Linux Embeddedembedded-linux-bdx
557 vues11 diapositives

Tendances(20)

Distro Recipes 2013 : Yocto / OpenEmbedded par Anne Nicolas
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbedded
Anne Nicolas3.7K vues
Administration reseau linux par Riadh Briki
Administration reseau linuxAdministration reseau linux
Administration reseau linux
Riadh Briki1K vues
Les solutions libres pour les systèmes embarqués par Alexandre LAHAYE
Les solutions libres pour les systèmes embarquésLes solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarqués
Alexandre LAHAYE1.5K vues
Cours linux complet par aubin82
Cours linux completCours linux complet
Cours linux complet
aubin8222.7K vues
Open Wide : Les outils pour le développement des systemes embarques par Alexandre LAHAYE
Open Wide : Les outils pour le développement des systemes embarquesOpen Wide : Les outils pour le développement des systemes embarques
Open Wide : Les outils pour le développement des systemes embarques
Alexandre LAHAYE2.6K vues
Altera nios ii embedded evaluation kit par Wassim Smati
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
Wassim Smati1.9K vues
Principes de fonctionnement unix par webreaker
Principes de fonctionnement unixPrincipes de fonctionnement unix
Principes de fonctionnement unix
webreaker1.3K vues
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1 par mazurus
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
Tgosp006dveloppement Noyau Et Driver Sous Gnu Linux 1234984890078859 1
mazurus3.6K vues
Présentation de la pile réseau sous gnu linux par Thierry Gayet
Présentation de la pile réseau sous gnu linuxPrésentation de la pile réseau sous gnu linux
Présentation de la pile réseau sous gnu linux
Thierry Gayet374 vues
service NFS sous linux par Souhaib El
 service NFS sous linux service NFS sous linux
service NFS sous linux
Souhaib El1.6K vues

En vedette

Créer sa distribution Linux embarqué avec Yocto ou Angström par
Créer sa distribution Linux embarqué avec Yocto ou AngströmCréer sa distribution Linux embarqué avec Yocto ou Angström
Créer sa distribution Linux embarqué avec Yocto ou AngströmChristian Charreyre
2.7K vues51 diapositives
Concevoir un système Linux embarqué avec Yocto Project par
Concevoir un système Linux embarqué avec Yocto ProjectConcevoir un système Linux embarqué avec Yocto Project
Concevoir un système Linux embarqué avec Yocto ProjectChristian Charreyre
7.9K vues60 diapositives
OS libres pour l'IoT - Zephyr par
OS libres pour l'IoT - ZephyrOS libres pour l'IoT - Zephyr
OS libres pour l'IoT - ZephyrChristian Charreyre
779 vues15 diapositives
Séminaire Captronic Yocto 24 février 2015 par
Séminaire Captronic Yocto 24 février 2015Séminaire Captronic Yocto 24 février 2015
Séminaire Captronic Yocto 24 février 2015Christian Charreyre
2.3K vues65 diapositives
System embaraqué par
System  embaraquéSystem  embaraqué
System embaraquéuniverstie tahri mohamed bechar
817 vues12 diapositives
Qt5 embedded par
Qt5 embeddedQt5 embedded
Qt5 embeddedembedded-linux-bdx
808 vues25 diapositives

En vedette(20)

Créer sa distribution Linux embarqué avec Yocto ou Angström par Christian Charreyre
Créer sa distribution Linux embarqué avec Yocto ou AngströmCréer sa distribution Linux embarqué avec Yocto ou Angström
Créer sa distribution Linux embarqué avec Yocto ou Angström
Concevoir un système Linux embarqué avec Yocto Project par Christian Charreyre
Concevoir un système Linux embarqué avec Yocto ProjectConcevoir un système Linux embarqué avec Yocto Project
Concevoir un système Linux embarqué avec Yocto Project
Tutorial 2 downloading and i nstalling omnet++ par Mohd Batati
Tutorial 2   downloading and i nstalling omnet++Tutorial 2   downloading and i nstalling omnet++
Tutorial 2 downloading and i nstalling omnet++
Mohd Batati5.1K vues
Tutorial 5 adding more nodes par Mohd Batati
Tutorial 5   adding more nodes Tutorial 5   adding more nodes
Tutorial 5 adding more nodes
Mohd Batati9.2K vues
Tutorial 4 adding some details par Mohd Batati
Tutorial 4   adding some details Tutorial 4   adding some details
Tutorial 4 adding some details
Mohd Batati15.5K vues
Tutorial 6 queues & arrays & results recording par Mohd Batati
Tutorial 6   queues & arrays & results recording Tutorial 6   queues & arrays & results recording
Tutorial 6 queues & arrays & results recording
Mohd Batati7.2K vues
Embarqués temps réel par mikhailether
Embarqués temps réelEmbarqués temps réel
Embarqués temps réel
mikhailether4.3K vues
Tutorial 1 installing mixim and mixnet par Mohd Batati
Tutorial 1   installing mixim and mixnetTutorial 1   installing mixim and mixnet
Tutorial 1 installing mixim and mixnet
Mohd Batati15.5K vues
Simulators for Wireless Sensor Networks (OMNeT++) par Pradeep Kumar TS
Simulators for Wireless Sensor Networks (OMNeT++)Simulators for Wireless Sensor Networks (OMNeT++)
Simulators for Wireless Sensor Networks (OMNeT++)
Pradeep Kumar TS14.7K vues
Using Omnet++ in Simulating Ad-Hoc Network par Ahmed Nour
Using Omnet++ in Simulating Ad-Hoc Network Using Omnet++ in Simulating Ad-Hoc Network
Using Omnet++ in Simulating Ad-Hoc Network
Ahmed Nour16K vues
BibBase Linked Data Triplification Challenge 2010 Presentation par Reynold Xin
BibBase Linked Data Triplification Challenge 2010 PresentationBibBase Linked Data Triplification Challenge 2010 Presentation
BibBase Linked Data Triplification Challenge 2010 Presentation
Reynold Xin1.1K vues

Similaire à Linux et le temps réel - Meetup du 15 octobre 2015

Gestion des processus par
Gestion des processusGestion des processus
Gestion des processusMoodyBop
17 vues28 diapositives
gestion de processus par
gestion de processusgestion de processus
gestion de processusMoodyBop
22 vues28 diapositives
Ordonnancement exercices par
Ordonnancement exercicesOrdonnancement exercices
Ordonnancement exercicesSelman Dridi
7.1K vues22 diapositives
La gestion des processus par
La gestion des processusLa gestion des processus
La gestion des processussarah Benmerzouk
63 vues87 diapositives
Ordinnancement des processus par
Ordinnancement des processusOrdinnancement des processus
Ordinnancement des processusSelman Dridi
354 vues6 diapositives
Gestion des threads par
Gestion des threadsGestion des threads
Gestion des threadsSana Aroussi
2.3K vues296 diapositives

Similaire à Linux et le temps réel - Meetup du 15 octobre 2015(20)

Gestion des processus par MoodyBop
Gestion des processusGestion des processus
Gestion des processus
MoodyBop17 vues
gestion de processus par MoodyBop
gestion de processusgestion de processus
gestion de processus
MoodyBop22 vues
Ordonnancement exercices par Selman Dridi
Ordonnancement exercicesOrdonnancement exercices
Ordonnancement exercices
Selman Dridi7.1K vues
Ordinnancement des processus par Selman Dridi
Ordinnancement des processusOrdinnancement des processus
Ordinnancement des processus
Selman Dridi354 vues
LPIC1 11 02 sécurité système par Noël
LPIC1 11 02 sécurité systèmeLPIC1 11 02 sécurité système
LPIC1 11 02 sécurité système
Noël 1.1K vues
Etat de l'art des systèmes embarqués, utilisation du logiciel libre par Pierre Ficheux
Etat de l'art des systèmes embarqués, utilisation du logiciel libreEtat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Pierre Ficheux1.6K vues
Cours SE Ordonnancement des processus - IPSET.pdf par MedBechir
Cours SE Ordonnancement des processus - IPSET.pdfCours SE Ordonnancement des processus - IPSET.pdf
Cours SE Ordonnancement des processus - IPSET.pdf
MedBechir17 vues
coursystemedexploitaionsghaieranouar-150103105816-conversion-gate01.pdf par RihabBENLAMINE
coursystemedexploitaionsghaieranouar-150103105816-conversion-gate01.pdfcoursystemedexploitaionsghaieranouar-150103105816-conversion-gate01.pdf
coursystemedexploitaionsghaieranouar-150103105816-conversion-gate01.pdf
TD_complet_reseau__CISCO__Packet Tracer.pdf par Ines Ben Hassine
TD_complet_reseau__CISCO__Packet Tracer.pdfTD_complet_reseau__CISCO__Packet Tracer.pdf
TD_complet_reseau__CISCO__Packet Tracer.pdf
Ines Ben Hassine607 vues
0081-cours-systemes-exploitations.ppt par DenisKouakou1
0081-cours-systemes-exploitations.ppt0081-cours-systemes-exploitations.ppt
0081-cours-systemes-exploitations.ppt
DenisKouakou16 vues
LPIC1 10 01 logs par Noël
LPIC1 10 01 logsLPIC1 10 01 logs
LPIC1 10 01 logs
Noël 1.2K vues
LPIC1 11 01 sécurité réseaux par Noël
LPIC1 11 01 sécurité réseauxLPIC1 11 01 sécurité réseaux
LPIC1 11 01 sécurité réseaux
Noël 1.3K vues

Plus de Christian Charreyre

Meetup Cybersécurité RGPD Conséquences dans l'Embarqué par
Meetup Cybersécurité RGPD Conséquences dans l'EmbarquéMeetup Cybersécurité RGPD Conséquences dans l'Embarqué
Meetup Cybersécurité RGPD Conséquences dans l'EmbarquéChristian Charreyre
270 vues28 diapositives
Developing an embedded video application on dual Linux + FPGA architecture par
Developing an embedded video application on dual Linux + FPGA architectureDeveloping an embedded video application on dual Linux + FPGA architecture
Developing an embedded video application on dual Linux + FPGA architectureChristian Charreyre
1.1K vues25 diapositives
Le Device Tree Linux par
Le Device Tree LinuxLe Device Tree Linux
Le Device Tree LinuxChristian Charreyre
1.1K vues23 diapositives
Créer sa distribution Linux embarqué avec Yocto ou Angström par
Créer sa distribution Linux embarqué avec Yocto ou AngströmCréer sa distribution Linux embarqué avec Yocto ou Angström
Créer sa distribution Linux embarqué avec Yocto ou AngströmChristian Charreyre
475 vues63 diapositives
Créer une distribution Linux embarqué professionnelle avec Yocto Project par
Créer une distribution Linux embarqué professionnelle avec Yocto ProjectCréer une distribution Linux embarqué professionnelle avec Yocto Project
Créer une distribution Linux embarqué professionnelle avec Yocto ProjectChristian Charreyre
2.5K vues30 diapositives
Présentation Yocto - SophiaConf 2015 par
Présentation Yocto - SophiaConf 2015Présentation Yocto - SophiaConf 2015
Présentation Yocto - SophiaConf 2015Christian Charreyre
1.1K vues28 diapositives

Plus de Christian Charreyre(13)

Meetup Cybersécurité RGPD Conséquences dans l'Embarqué par Christian Charreyre
Meetup Cybersécurité RGPD Conséquences dans l'EmbarquéMeetup Cybersécurité RGPD Conséquences dans l'Embarqué
Meetup Cybersécurité RGPD Conséquences dans l'Embarqué
Developing an embedded video application on dual Linux + FPGA architecture par Christian Charreyre
Developing an embedded video application on dual Linux + FPGA architectureDeveloping an embedded video application on dual Linux + FPGA architecture
Developing an embedded video application on dual Linux + FPGA architecture
Créer sa distribution Linux embarqué avec Yocto ou Angström par Christian Charreyre
Créer sa distribution Linux embarqué avec Yocto ou AngströmCréer sa distribution Linux embarqué avec Yocto ou Angström
Créer sa distribution Linux embarqué avec Yocto ou Angström
Créer une distribution Linux embarqué professionnelle avec Yocto Project par Christian Charreyre
Créer une distribution Linux embarqué professionnelle avec Yocto ProjectCréer une distribution Linux embarqué professionnelle avec Yocto Project
Créer une distribution Linux embarqué professionnelle avec Yocto Project
Concevoir un système Linux embarqué avec Yocto Project - Version révisée par Christian Charreyre
Concevoir un système Linux embarqué avec Yocto Project - Version réviséeConcevoir un système Linux embarqué avec Yocto Project - Version révisée
Concevoir un système Linux embarqué avec Yocto Project - Version révisée
Yocto une solution robuste pour construire des applications à fort contenu ap... par Christian Charreyre
Yocto une solution robuste pour construire des applications à fort contenu ap...Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...
Open Embedded un framework libre pour assurer la cohérence de son projet par Christian Charreyre
Open Embedded un framework libre pour assurer la cohérence de son projetOpen Embedded un framework libre pour assurer la cohérence de son projet
Open Embedded un framework libre pour assurer la cohérence de son projet

Linux et le temps réel - Meetup du 15 octobre 2015

  • 1. Linux et le Temps réel - 15 Octobre 2015 1 www.ciose.fr Linux et le Temps réelLinux et le Temps réel Partie 1Partie 1 C. CharreyreC. Charreyre christian.charreyre@ciose.frchristian.charreyre@ciose.fr http://www.ciose.frhttp://www.ciose.fr https://twitter.com/CIOinfoindushttps://twitter.com/CIOinfoindus http://fr.slideshare.net/charreyrehttp://fr.slideshare.net/charreyre
  • 2. Linux et le Temps réel - 15 Octobre 2015 2 www.ciose.fr Licence Attribution-Noncommercial-Share Alike 4.0 International You are free: to Share - copy and redistribute the material in any medium or format to Adapt - remix, transform, and build upon the material The licensor cannot revoke these freedoms as long as you follow the license terms. Under the following conditions: Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. NonCommercial — You may not use the material for commercial purposes. ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. License text : http://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
  • 3. Linux et le Temps réel - 15 Octobre 2015 3 www.ciose.fr CIO en quelques mots Société d'ingénierie en systèmes embarqués : électronique et logiciel Au service de nos clients depuis 1990 15 spécialistes en embarqué et temps réel Expert en Linux embarqué depuis 2000, OpenEmbedded et Yocto depuis 2008 CA annuel : 1 500 000 € Siège à Saint-Étienne Agence à Marseille Agréé CIR
  • 4. Linux et le Temps réel - 15 Octobre 2015 4 www.ciose.fr C. Charreyre en quelques mots Associé au sein de CIO Responsable des technologies Linux embarqué Formateur Linux embarqué (avec Captronic et en direct) 30 ans dans l'embarqué et le monde Unix / Linux Fervent promoteur du logiciel libre Membre de Medinsoft – Commission Logiciel Libre
  • 5. Linux et le Temps réel - 15 Octobre 2015 5 www.ciose.fr Caractéristiques d’un système Temps Réel Principales caractéristiques attendues : Délai de réponse à une IT borné et connu Possibilité d’activer une tâche de manière périodique avec un jitter borné Scheduling basé sur un niveau de priorité fixe Gestion fine du temps
  • 6. Linux et le Temps réel - 15 Octobre 2015 6 www.ciose.fr Caractéristiques de Linux Linux est un OS de la classe généraliste (comme Windows) Le but principal de l’OS est d’affecter le processeur à tous les process sur une durée moyenne : Le scheduler privilégie l’avancée de tous les process au détriment du déterminisme Tous les process obtiennent le processeur au bout d’un certain temps Il existe une priorité « temps réel » (sched_setscheduler() avec SCHED_FIFO ou SCHED_RR) En pratique, elle ne permet pas d’obtenir des performances de temps réel dur
  • 7. Linux et le Temps réel - 15 Octobre 2015 7 www.ciose.fr Le scheduler de Linux Source : Programmation Système en C sous Linux – Christophe Blaess
  • 8. Linux et le Temps réel - 15 Octobre 2015 8 www.ciose.fr États d'un processus Un processus en sommeil attend une ressource ou un événement extérieur C'est le kernel qui place le processus en sommeil ex: écriture sur un device lent, le driver met le processus en sommeil puis le rend de nouveau éligible Deux types de mises en sommeil : interruptible : réveil sur l'arrivée d'un signal ininterruptible : réveil seulement sur l'arrivée d'une interruption au niveau du kernel (cf ex. ci dessus) Transitions entre les états Running et Stopped liées aux signaux SIGSTOP et SIGCONT
  • 9. Linux et le Temps réel - 15 Octobre 2015 9 www.ciose.fr Fonctionnement multi tâches - Priorité Le noyau doit assurer la répartition du processeur entre les différents processus Les transitions entre états s'effectuent sous le contrôle du noyau Lorsqu'un processus s'endort, le noyau réattribue immédiatement le processeur à un autre processus en attente Cependant, cela ne suffit pas pour assurer une bonne répartition du processeur Le noyau préempte un processus actif pour réattribuer le processeur sur la base des critères d'ordonnancement Linux est un système multi tâches préemptif
  • 10. Linux et le Temps réel - 15 Octobre 2015 10 www.ciose.fr Fonctionnement multi tâches - Priorité Un processus préempté passe à l'état Ready De même un processus à l'état Sleeping qui se réveille passe par l'état Ready, et éventuellement après à l'état Running Pour élire un processus, Linux se base sur 2 priorités : valeur statique affectée au processus au démarrage (peut être partiellement modifiée par appel système) valeur dynamique remise à jour à chaque scheduling du processus, fonction de la priorité statique et autres facteurs plus le processus utilise le temps CPU imparti, plus sa priorité dynamique baisse et vice versa plus un processus a une priorité dynamique élevée, plus le processus obtient une tranche de temps longue mécanisme destiné à établir un temps partagé entre les processus, et à assurer une avancée de tous (classe d'OS généraliste type Windows...)
  • 11. Linux et le Temps réel - 15 Octobre 2015 11 www.ciose.fr Mécanismes d'ordonnancement 3 types d'ordonnancement possibles, définis au niveau du processus : FIFO Round Robbin Other Ordonnancement FIFO : Principe de file attente Une liste de processus par priorité statique Le 1er processus de la file de + haute priorité s'exécute jusqu'à ce qu'il relâche le processeur Il est alors repoussé en fin de liste Si aucun autre processus prêt à cette priorité, passage aux priorités moindres
  • 12. Linux et le Temps réel - 15 Octobre 2015 12 www.ciose.fr Mécanismes d'ordonnancement Ordonnancement FIFO (suite) : Dès qu'un processus de priorité supérieure est de nouveau prêt, attribution immédiate du processeur Type d'ordonnancement le plus égoïste car un processus de plus forte priorité peut mobiliser le processeur en permanence
  • 13. Linux et le Temps réel - 15 Octobre 2015 13 www.ciose.fr Mécanismes d'ordonnancement Ordonnancement Round Robbin : Variante de l'ordonnancement FIFO Au sein d'un niveau de priorité, chaque processus dispose d'une tranche de temps fixe. A la fin de celle-ci, il est interrompu, mis dans l'état Prêt, et repoussé à la fin de la liste de ce niveau de priorité Ceci introduit une notion de partage du temps au sein d'un niveau de priorité Ordonnancement Other Ordonnancement par défaut de Linux Calcul d'une priorité dynamique en fonction de la priorité statique et de la consommation du processeur Influe sur quantum de temps attribué
  • 14. Linux et le Temps réel - 15 Octobre 2015 14 www.ciose.fr Caractéristiques de Linux Jusqu'en 2.4, le kernel ne peut être préempté : pas de scheduling durant la durée d’un system call En 2.6, préemption = option de configuration Le kernel présente des sections non interruptibles même en mode préemptible (handler d'IT + spinlocks) Jusqu'en 2.4, la durée de sélection du process élu lors du scheduling se dégrade avec le nombre de process Process AProcess A UserUser System CallSystem Call Process AProcess A KernelKernel Spinlock : Masquage ITSpinlock : Masquage IT (Section critique)(Section critique) IRQIRQ IRQIRQ HandlerHandler Process AProcess A KernelKernel FinFin System CallSystem Call SchedulerScheduler Process BProcess B UserUser Wake upWake up process Bprocess B
  • 15. Linux et le Temps réel - 15 Octobre 2015 15 www.ciose.fr Solutions vers le Temps Réel Optimisation du code système : Réduction des sections critiques dans le code kernel Introduction de points de rescheduling dans les systems calls Création de patches du kernel Utilisation d’une extension temps réel
  • 16. Linux et le Temps réel - 15 Octobre 2015 16 www.ciose.fr Kernel Preemptive patch – Linux 2.4 Kernel preemptive patch : – http://kpreempt.sourceforge.net Solution MontaVista (commerciale) Ce patch traite la non préemptabilité du kernel standard Le patch ne peut rien contre les spinlocks de longue durée présents dans le code kernel (protection des sections critiques)
  • 17. Linux et le Temps réel - 15 Octobre 2015 17 www.ciose.fr Benchmark du preemptive patch Résultats du benchmark Audio latency (http://www.gardena.net/benno/linux/audio/) avec et sans patch preemptive kernel while(1) { time1=my_gettime(); waste 80% of the CPU of the duration of one audio fragment (noop loop) time2=my_gettime(); write(audio_fd,playbuffer,fragmentsize); time3=my_gettime(); }
  • 18. Linux et le Temps réel - 15 Octobre 2015 18 www.ciose.fr Benchmark du preemptive patch Graphiques pour le cas de test ‘Write disk stress’ : Mesures de latence de traitement d’échantillons audio sous diverses conditions de stress Write disk stress consiste à copier un très gros fichier sur le disque dur Ligne jaune = durée d’un échantillon audio Ligne blanche = durée de traitement mesurée = time3 – time1 Ligne verte = simulation de traitement calée sur 80% de la durée de l’échantillon = time2 – time1
  • 19. Linux et le Temps réel - 15 Octobre 2015 19 www.ciose.fr Benchmark sur Kernel 2.4.6 natif
  • 20. Linux et le Temps réel - 15 Octobre 2015 20 www.ciose.fr Benchmark sur Kernel 2.4.6 + patch preemptive
  • 21. Linux et le Temps réel - 15 Octobre 2015 21 www.ciose.fr Real Time Scheduler patch – Linux 2.4 Real Time scheduler patch http://rtsched.sourceforge.net/ ou Solution MontaVista (commerciale) Ces solutions créent un scheduler temps réel efficace au dessus du scheduler Linux. Le scheduler TR traite les priorités SCHED_RR et SCHED_FIFO et passe la main au scheduler Linux pour les autres cas. Ce patche traite la dégradation du temps de sélection du process élu du kernel standard (algorithme en O(n)) Ne sert plus sur un kernel 2.6.x qui a un algorithme en O(1)
  • 22. Linux et le Temps réel - 15 Octobre 2015 22 www.ciose.fr CONFIG_PREEMPT_RT Patch Patches précédent dédiées aux vieux kernels (2.4) Actuellement : linux-rt (CONFIG_PREEMPT_RT patch) Patch qui est géré dans la branche linux-rt de Ingo Molnar Applicable sur kernels 2.6.x et 3.x Suit les versions de kernel vanilla Rend le kernel presque entièrement préemptible, y compris pour les spinlocks et les handlers d'IRQ Remplace les spinlocks par des mutexes avec héritage de priorité Les IRQ handlers deviennent des threads kernel Voir https://rt.wiki.kernel.org/index.php/Main_Page
  • 23. Linux et le Temps réel - 15 Octobre 2015 23 www.ciose.fr CONFIG_PREEMPT_RT Patch Des inquiétudes sur la soutenabilité (développeurs + funding) jusqu'à Q3 2015 Annonce début Octobre de la création d'un projet RTL (Real Time Linux) sous l'égide de Linux Foundation, basé sur ce patch Objectif ultime : merge du patch dans le kernel upstream ?
  • 24. Linux et le Temps réel - 15 Octobre 2015 24 www.ciose.fr Extensions temps réel Idée : disposer d’un RTOS en dessous du kernel Linux Linux tourne comme tâche idle du RTOS Nécessité de partager le développement entre éléments Real Time et éléments Linux Des IPC pour échanger entre composants RT et composants Linux
  • 25. Linux et le Temps réel - 15 Octobre 2015 25 www.ciose.fr Extensions temps réel Les principales solutions : RTLinux divisé en 2 produits RTLinux Free qui relève de la licence GPL et de la licence Open RTLinux Patent License. Ne semble plus téléchargeable. RTLinux Pro qui relève d’une licence commerciale (Wind River) RTAI et plus récemment Xenomai qui relèvent de la licence GPL RTAI développé par Institut Polytechnique de Milan https://www.rtai.org/ Xenomai (http://www.xenomai.org/) implémente des skins des RTOS traditionnels
  • 26. Linux et le Temps réel - 15 Octobre 2015 26 www.ciose.fr Principe de fonctionnement Application d’un patch sur le kernel pour permettre l'utilisation de l'extension temps réel. RTOS additionnel sous forme de Kernel Module(s) Développement de tâches du RTOS sous forme de kernel modules ou de process Linux (LXRT / Xenomai) Le scheduler Linux ne gère pas les tâches temps réel et ne fonctionne que lorsque le RTOS lui laisse le processeur