Panorama des temps réels sous GNU/Linux. Stelian Pop <stelian.pop@openwide.fr>



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

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

Virtualisation open source État de l'art

Rapport de projet de fin d'étude

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

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

Virtualisation sous Linux L'age de raison. Daniel Veillard

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

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

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

Les avantages de la virtualisation sont multiples. On peut citer:

Linux embarqué: une alternative à Windows CE?

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

Virtualisation logicielle De la machine réelle à la machine virtuelle abstraite

Introduction au temps réel

Realtime applications with RTAI. R.KOCIK Embedded Systems department

Catalogue des stages Ercom 2013

Présentation des intervenants. Pourquoi cette conférence? Logiciel libre : notions essentielles. Le logiciel libre pour les projets industriels

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

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

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

Introduction aux Systèmes et aux Réseaux, Master 2 CCI

MI03 TP. Objectifs du TP 1ère séance. 2ème séance. Construction d'un système linux embarqué complet

Linux pour l embarqué. 1 Module E4 : Systèmes temps-réel Audrey Marchand

Alexandre Buge Epitech 5 Promo Soutenance de stage du 01/03/2004 au 31/08/2004

Introduction aux systèmes temps réel

Atelier : Virtualisation avec Xen

en version SAN ou NAS

Formations Evolix Catalogue

vbladecenter S! tout-en-un en version SAN ou NAS

WEA Un Gérant d'objets Persistants pour des environnements distribués

Chapitre 2 : Abstraction et Virtualisation

Limitations of the Playstation 3 for High Performance Cluster Computing

Virtualisation de serveurs Solutions Open Source

Machines virtuelles Cours 1 : Introduction

Utilisation de matériels industriels avec des outils de virtualisation open source. Open Source dans le monde industriel

Détection de pollution maritime avec GNU/Linux. Eric Bénard - eric@eukrea.com - 08 juillet 2010

A propos de la sécurité des environnements virtuels

Communications performantes par passage de message entre machines virtuelles co-hébergées

Hyperviseur vs Docker. le choc des virtualisations

Projet Active Object

Openmoko, free your phone!

Rapport d activité. Mathieu Souchaud Juin 2007

Une unité organisationnelle (Staff) comporte une centaine d'utilisateur dans Active Directory.

ERESI : une plate-forme d'analyse binaire au niveau noyau. The ERESI team

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Modules du DUT Informatique proposés pour des DCCE en 2014/2015

APPEL À COMMUNICATIONS 2010

LA VIRTUALISATION. Etude de la virtualisation, ses concepts et ses apports dans les infrastructures informatiques. 18/01/2010.

Ordonnancement temps réel

Annexe : La Programmation Informatique

Réalisation d un automate industriel sous Linux

Applications Embarquées Critiques

Eléments de spécification des systèmes temps réel Pierre-Yves Duval (cppm)

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

MEAD : temps réel et tolérance aux pannes pour CORBA

Plan de la conférence. Virtualization. Définition. Historique. Technique. Abstraction matérielle

Stratégie de sécurité grâce au logiciel libre. Frédéric Raynal Cédric Blancher

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

RTDS G3. Emmanuel Gaudin

IFT Systèmes d exploitation - TP n 1-20%

Accélérez votre émulateur Android

DESCRIPTIF DES PROJETS 3EME ANNEE QUI SERONT PRESENTES LORS DE LA JOURNEE DE PROJET DE FIN D ETUDE LE 26/01/2012

GCOS 7 sur microprocesseur standard Diane Daniel POIRSON 14 octobre 2004 Matériels 64 / DPS 7 / DPS 7000 Architecture & Evolution - Daniel POIRSON 1

NEC Virtual PC Center

PHP et le Cloud. All rights reserved. Zend Technologies, Inc.

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

ST50 Projet de fin d études Noyau Linux et multi-processeur pour une plateforme embarquée

Artica. Domain throttling avec Postfix. Révision Du 04 Février 2011 version

Evaluation de Micro-Noyaux Temps Réel pour les Applications d Informatique Industrielle d'edf

Sébastien DEBIA Damien DUMAZER. Cahier des Charges

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Systèmes d exploitation

INGÉNIEUR - DÉVELOPPEUR SENIOR EMBEDDED - C/C++ - MICROCONT RÔLEURS. 34 ans - 10 ans d'expérience

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Comment travailler avec les logiciels Open Source

Haka : un langage orienté réseaux et sécurité

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

Introduction aux systèmes temps réel. Iulian Ober IRIT

Concilier Agilité, Exigences et Continuous Delivery : Retour d expérience PagesJaunes

Cours A7 : Temps Réel

Pour obtenir les coordonnées des personnes citées ci-dessous veuillez contacter Julie au ou par mail

Modélisation des interfaces matériel/logiciel

SRS Day. Vue d ensemble. Avérous Julien-Pierre

Ordonnancement temps réel

Ingénierie des réseaux

Systèmes de gestion de code source

IN Tech - 12 janvier 2010 Open Source et innovation : le Libre comme méthodologie de développement

SOA Open Source Intégration des services et business process dans une architecture SOA Open Source. Bruno Georges JBoss, a Division of Red Hat

Virtual Box Mettez un PC dans votre... PC

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

Qu est ce qu un un serveur?

Éléments de programmation et introduction à Java

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Cours 1 : La compilation

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

Métriques de performance pour les algorithmes et programmes parallèles

Transcription:

Panorama des temps réels sous GNU/Linux Stelian Pop <stelian.pop@openwide.fr> Conférence Linux Solutions, 2 février 2006

Le besoin en contexte industriel il y a souvent besoin d'un comportement temps réel: pilotage matériel (moteurs,...) acquisition de données (capteurs,...) piles protocolaires (GPRS, VoIP,...) etc. quelques fois, la contrainte temps réel est induite par le design de l'applicatif (exemple: portage de code depuis un autre OS temps réel) 2

Les solutions noyau Linux standard noyau Linux préemptif noyau Linux PREEMPT_RT RTLinux RTAI Xenomai... et d'autres solutions plus confidentielles (Jaluna C5,...) 3

Linux standard solution clé en main (distributions généralistes ou spécialisées) disponible sur 24 architectures (et beaucoup de plate-formes)! très bonnes performances globales stable, mature (15 ans...) 4

Linux standard fonctionnement (1/2) (presque) tout le traitement s'effectue dans des processus les processus s'exécutent en mode utilisateur (l'algorithmique) ou en mode noyau (les entrées-sorties) les gestionnaires d'interruptions et exceptions s'exécutent hors processus, préemptent tout traitement, puis déclenchent des traitements dans des processus (en mode noyau) 5

Linux standard fonctionnement (2/2) il est possible de désactiver les interruptions (et beaucoup de pilotes le font...) un processus en mode noyau n'est pas préemptible par un autre processus un processus en mode utilisateur est préemptible par l'ordonnanceur: l'ordonnanceur utilise l'interruption timer la cadence du timer est fixe (HZ = 1-10 ms) on peut gérer la priorité entre les processus (au niveau de l'ordonnanceur) 6

Linux standard utilisation et performances écriture de code noyau: API spécifique, limitée aux opérations "noyau" langage C temps de latence moyen: dépendant du contexte écriture de code applicatif multiples API fournies par des bibliothèques multiples langages (C, C++, Python etc) temps de latence moyen: constante HZ n'est pas temps réel (mais good enough...) temps de latence maximum important, non borné, dépendant des pilotes utilisés 7

Linux préemptif solution issue des travaux de Montavista (Robert Love), disponible en tant que patches pour les noyaux 2.4 et intégrée dans les noyaux 2.6 extension de l'ordonnanceur standard de Linux disponible sur l'ensemble des plate-formes améliore l'interactivité du système au détriment des performances globales stable (mais pas sur toutes les plate-formes...) 8

Linux préemptif fonctionnement un processus en mode noyau peut être préempté par un autre processus mais la prise d'un verrou noyau (spinlock) désactive la préemption deux variantes: PREEMPT_VOLUNTARY: rajout de quelques nouveaux points de préemption dans le noyau (en réutilisant might_sleep() prévu initialement pour le déboggage des sémaphores) PREEMPT_DESKTOP: préemption possible à chaque retour d'interruption ou exception 9

Linux préemptif utilisation et performances même utilisation que Linux standard: écriture de code noyau écriture de code applicatif le coût de la préemption n'est pas nul, les performances globales du système diminuent temps réel soft pas d'incidence sur le temps de latence moyen temps de latence maximum toujours important, mais avec moins d'amplitude 10

Linux PREEMPT_RT nouveau développement pour le noyau 2.6, essentiellement mené par Ingo Molnar: people.redhat.com/mingo/realtime-preempt extension de l'ordonnanceur standard de Linux (respect strict des priorités et prévention des PI) disponible sur l'ensemble des plate-formes en développement, testé essentiellement sur x86 implications encore mal comprises... nécessite que tous le code du noyau (+ pilotes) soit revu (et adapté...) 11

Linux PREEMPT_RT fonctionnement la prise d'un verrou n'empêche plus la préemption (les spinlock deviennent des mutex) les interruptions sont "threadées" (les handlers d'interruption s'exécutent en contexte processus en mode noyau et sont préemptibles) afin d'éviter le blocage (deadlock) par inversion de priorité sur un mutex, un mécanisme d'héritage de priorité est utilisé 12

Linux PREEMPT_RT utilisation et performances utilisation: identique à Linux standard, mais avec la possibilité de: choisir pour chaque interruption de threader ou pas choisir la priorité de la thread correspondante le coût de la préemption peut être important temps réel dur temps de latence moyen de l'ordre de 20-30 microsecondes temps de latence maximum de l'ordre de 100-500 microsecondes (largement dépendant de la configuration matérielle et logicielle) 13

RTLinux la plus connue solution Linux temps réel initialement développé en tant que thèse universitaire par Michael Barabanov (avec Victor Yodaiken) au New Mexico Tech (NMT) en 1997 devenu propriétaire en 2000 suite à la création de FSMLabs deux versions: version GPL www.rtlinux-gpl.org i386 (stable), alpha, mips, powerpc en retard, abandonnée... version propriétaire www.fsmlabs.com supporte la plupart des plate-formes stable, mature 14

RTLinux fonctionnement technique de co-noyau, séparation entre le comportement temps réel (RTLinux) et le comportement non temps réel (Linux) RTLinux est un petit noyau temps réel complètement préemptible les interruptions sont interceptées par RTLinux et propagées à Linux RTLinux exécute en priorité les tâches temps réel et exécute le noyau Linux en tant que tâche de faible priorité (boucle idle) le code du noyau Linux est modifié pour ne pas toucher aux interruptions matérielles (virtualisation) 15

RTLinux utilisation et performances utilisation: API de type threads POSIX pour les besoins temps réel (+pilotes), mode noyau uniquement développement Linux standard (noyau et applicatif) pour les besoins non temps réel communication entre les tâches RTLinux et les processus Linux par des FIFO ou mémoire partagée temps réel dur temps de latence maximum de l'ordre de 10 microsecondes 16

RTAI adaptation des premières versions de RTLinux (1999) par le Département d'ingénierie Aérospatiale de l'école Polytechnique de Milan suite à la création de FSMLabs, RTAI devient un projet à part, évoluant indépendamment supporte i386 (stable), arm, cris, mips, powerpc stable, mais évolutions chaotiques 17

RTAI fonctionnement même technique que RTLinux (co-noyau) les versions actuelles de RTAI utilisent la couche Adeos pour faire du pipelining d'interruptions (à la place de la vectorisation directe) meilleure architecture logicielle défense contre un brevet logiciel de FSMLabs... mais Adeos est lui même contourné dans les toutes dernières versions de RTAI (3.2) possible de migrer des tâches entre l'ordonnanceur Linux et l'ordonnanceur RTAI (LXRT, fusion) émulation d'autres APIs (POSIX, VxWorks etc) 18

RTAI - performances utilisation: API spécifique pour les besoins temps réel (+pilotes), mode noyau ou LXRT développement Linux standard (noyau et applicatif) pour les besoins non temps réel temps réel dur communication entre les tâches RTAI et les processus Linux par des FIFO ou mémoire partagée temps réel dur temps de latence maximum de l'ordre de 10 microsecondes 19

Xenomai projet de "OS temps réel abstrait", émulant les autres API par un mécanisme de personnalités (skin) développé par Philippe Gerum (2000) intégré à RTAI en 2004 (branche RTAI/fusion), devait servir de coeur pour la futur RTAI suite à des divergences entre développeurs, Xenomai quitte RTAI et devient un OS temps réel à part entière (2005) plate-formes supportées: arm, blackfin, i386, ia64, powerpc32, powerpc64 jeune mais stable 20

Xenomai fonctionnement (1/2) technique de co-scheduler intégré dans le noyau Xenomai utilise les services de Adeos pour la virtualisation des interruptions (même auteur...) Xenomai est composé de: nucleus + mécanismes de communication (OS temps réel abstrait) diverses API implémentant les skins: natif, posix, rtai, psos, vxworks, etc. mécanisme automatique de migration des tâches entre l'ordonnanceur Linux et Xenomai en fonction des API utilisées (mode secondaire/primaire) 21

Xenomai utilisation et performances utilisation: API des skins temps réel pour les besoins temps réel, mode noyau ou utilisateur (API commune) développement Linux standard (noyau et applicatif) pour les besoins non temps réel communication entre les deux par différents moyens, en fonction du skin utilisé temps réel dur temps de latence de l'ordre de 10-15 microsecondes 22

Résumé comparaison des solutions Plate-forme API Linux Linux Linux RTLinux RTAI Xenomaï préemptif PREEMPT_RT scheduler optimisation optimisation Type co-noyau co-noyau co-scheduler standard scheduler scheduler arm, i386, alpha, i386, ppc, blackfin, toutes mips, ppc arm, mips, cris i386, ia64, (+propriétaire) ppc 32/64 Temps de latence moyen Temps de latence max noyau ou toutes API user toutes (problèmes possibles) noyau ou toutes API user toutes (problèmes possibles) noyau ou toutes API user POSIX noyau RTAI noyau ou LXRT user multiples API communes noyau/user HZ (1-10 ms) HZ(1-10 ms) 20 30 us 5 us 5 us 7 us 100-500 us 10 us 10 us 10 15 us en stable, stable Etat stable stable développemen évolutions stable, jeune (+propriétaire) t chaotiques 23

Fin... Solutions: Linux, Linux préemptif: http://www.kernel.org PREEMPT_RT: http://people.redhat.com/mingo/realtime-preempt RTLinux: http://www.fsmlabs.com RTLinux GPL: http://www.rtlinux-gpl.org RTAI: http://www.rtai.org Xenomai: http://www.xenomai.org Transparents disponibles à: http://www.popies.net/conferences/tempsreels.pdf 24