SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

Documents pareils
Un ordonnanceur stupide

Encadré par : Michel SIMATIC

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

ORDONNANCEMENT CONJOINT DE TÂCHES ET DE MESSAGES DANS LES RÉSEAUX TEMPS RÉELS 4. QUELQUES EXEMPLES DU DYNAMISME ACTUEL DU TEMPS RÉEL

TP1 : Initiation à Java et Eclipse

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

On appelle variable condition une var qui peut être testée et

Introduction à la programmation concurrente

Programmer en JAVA. par Tama

Machine virtuelle Java pour Palm TX

Threads. Threads. USTL routier 1

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

La technologie Java Card TM

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Java - la plateforme

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

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

Java et le temps réel

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

Introduction : les processus. Introduction : les threads. Plan

Introduction à l informatique temps réel Pierre-Yves Duval (cppm)

Réplication des données

Plan. Java et le temps réel. Bertrand Dupouy ENST. Rappels sur les systèmes temps réel

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Conception des systèmes répartis

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

as Architecture des Systèmes d Information

Java ME : une présentation. Jean-Marc Farinone

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

TD2 Programmation concurrentielle

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Java Licence Professionnelle CISII,

Synchro et Threads Java TM

Efficace et ciblée : La surveillance des signaux de télévision numérique (2)

Programmation Par Objets

Auto-évaluation Programmation en Java

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

REALISATION d'un. ORDONNANCEUR à ECHEANCES

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

Introduction aux algorithmes répartis

La carte à puce. Jean-Philippe Babau

Introduction au temps réel

VIII- Circuits séquentiels. Mémoires

Génération de code binaire pour application multimedia : une approche au vol

ORACLE DATA INTEGRATOR ENTERPRISE EDITION - ODI EE

La JVM. La machine virtuelle Java. La JVM. La JVM

Remote Method Invocation Les classes implémentant Serializable

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

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

Introduction à MapReduce/Hadoop et Spark

Projet de programmation (IK3) : TP n 1 Correction

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Cours de Systèmes d Exploitation

Coopération de modèles de temps

Évaluation et implémentation des langages

Initiation au HPC - Généralités

Environnements de développement (intégrés)

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

CATALOGUE DE LA GAMME EASYFOLDER OFFRE GESTION DE CONTENUS NUMERIQUES

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Manuel d installation de l application Dimona New via SMS

Logiciel HP StorageWorks Enterprise Virtual Array (EVA) Fiche technique

Vérifier la qualité de vos applications logicielle de manière continue

INITIATION AU LANGAGE JAVA

Certificat Big Data - Master MAthématiques

Ordonnancement temps réel

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Journée IJD. Moussa Tari Bako Bachir. 25 juin 2012 ARLES/INRIA. Introduction Travail Chez ARLES

IBM Business Process Manager

Généralités sur le Langage Java et éléments syntaxiques.

Introduction aux Machines Virtuelles avec VMKit

Éléments de programmation et introduction à Java

Modélisation et évaluation de performance des systèmes basés composants

Machines Virtuelles. et bazard autour. Rémi Forax

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

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Vulgarisation Java EE Java EE, c est quoi?

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

Concept de machine virtuelle

Programmation Web. Madalina Croitoru IUT Montpellier

BPEL Orchestration de Web Services

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

Ordonnancement temps réel

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Exchange 2007 : Améliorations et nouvelles fonctionnalités Atelier 136. Société GRICS

Calcul Parallèle. Cours 5 - JAVA RMI

Une introduction à Java

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

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

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

Le Collège de France crée une chaire pérenne d Informatique, Algorithmes, machines et langages, et nomme le Pr Gérard BERRY titulaire

Virtualisation sous Linux L'age de raison. Daniel Veillard

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

Virtualisation CITRIX, MICROSOFT, VMWARE OLIVIER D.

4. Outils pour la synchronisation F. Boyer, Laboratoire Sardes

Notion de thread (1/2)

TP1 : Initiation à Java et Eclipse

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Transcription:

SugarCubes Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués Paris, le 9 janvier, 2009

Plan 2 Les SugarCubes au dessus de J2ME Quelques résultats expérimentaux Les SugarCubes et le Multi-clocks Conclusion et perspectives

Plan 3 Les SugarCubes au dessus de J2ME Quelques résultats expérimentaux Les SugarCubes et le Multi-clocks Conclusion et perspectives

L approche réactive au dessus de J2ME 4 Les SugarCubes Lite : facilités pour exprimer (i) l'ordonnancement et le contrôle des tâches ; (ii) la communication entre les différentes tâches. ordonnancement en ligne : interprétation de la politique d ordonnancement ; gérer la création et la reconfiguration dynamique des composants concurrents efficacité : capable de gérer des milliers d activités concurrentes ; communication au moyen de milliers d événements différents faible emprunte mémoire à l exécution (files d attentes bornées, taille de l interprète, taille des programmes, ) 100% pure Java (basé sur la spec. 1.1 de Java) : portage J2ME facilité. environnement minimaliste conservation de la structure des SugarCubes: - instructions réactive (jeu d instructions réduit) - machines d exécution réactive (services en moins) - classes et interfaces prenant en charge les interactions entre les programmes réactifs et les objets java standard

SugarCubes Lite 5 Un framework réduit : Seules les instructions primitives ou fréquemment utilisées. On élimine les instructions qui servent essentiellement de sucre syntaxique. (if, rif, les threads réactives, les actions de traces, les variantes trop nombreuses des différentes instructions, ) Mécanismes abandonnés : migration de code, identificateurs d événements et environnement simplifiés, pas de trace, SCv4: 223KB, SCL: 96KB (jar zippé, pas d obfuscateur de code) Nouvelles fonctionnalités introduites : modèle de prog. multi-horloges (synchrone/asynchrone) meilleure intégration avec les threads

Reactive Instructions 6 naryinstruction instruction nothing atoms action

Reactive Instructions 6 seq merge cyclic loop repeat naryinstruction while instruction nothing atoms switch action rswitch

Reactive Instructions 6 stop pause halt suspend naryinstruction actionateoi seq merge cyclic close loop repeat while instruction nothing atoms switch action rswitch

Reactive Instructions 6 stop pause seq halt merge loop suspend cyclic repeat naryinstruction close while instruction actionateoi callback await nothing until when control switch flipflop rswitch atoms action generate

Reactive Instructions 6 stop pause seq halt merge loop suspend cyclic repeat naryinstruction close while instruction actionateoi callback await nothing until when control switch flipflop rswitch atoms run action generate cube freezeable shell

Reactive Instructions 6 stop pause seq halt merge loop suspend cyclic repeat naryinstruction close while actionateoi until instruction callback await nothing when control switch flipflop rswitch emit atoms run action generate cube clock freezeable shell

Exemple de code J2ME 7 import cedric.scl.*; public class SCLDemo extends MIDlet implements CommandListener, Runnable { private Display display; private Machine machine = SC.emptyMachine(); private Command exitcommand = new Command("Exit", Command.EXIT, 1); private Form view = new Form("SCLDemo"); private boolean done = false; private final JavaAction PRINT_HELLO_ACT = new JavaAction(){ public void execute(final Object self, final ReactiveEngine engine){ view.append("hello World!\n"); } }; protected void startapp() throws MIDletStateChangeException { display = Display.getDisplay(this); Program p = SC.loop(SC.seq(SC.await("e"), SC.action(PRINT_HELLO_ACT))); machine.addprogram(p); machine.setminimumtimeofreactions(10); view.addcommand(exitcommand); view.setcommandlistener(this); display.setcurrent(view); new Thread(this).start(); } public void run(){ do{ view.append((i++)+"-: "); } while((!machine.react())&&!done); }...}

Exemple 8

Plan 9 Les SugarCubes au dessus de J2ME Quelques résultats expérimentaux Les SugarCubes et le Multi-clocks Conclusion et perspectives

Le protocole expérimental 10 Utilisation d un émulateur générique J2ME sur une station de travail Objectif des premières mesures : valider le passage à l échelle : réactivité consommation mémoire Développement d une MIDlet qui génère dynamiquement des activités concurrentes fortement synchronisés (période de synchronisation variable Objectif : respect des échéances Implantation réactive et basée sur des threads

Performance and Scalability (1) 11 Tests réalisés sur un émulateur tournant sur une station de travail (HotSpot VM) Threads SCL Activities 9 000 6 750 4 500 2 250 0 10 ms 20 ms 30 ms 40 ms 50 ms

Analyse 12 Résultats très encourageants mais... un air de déjà vu! Performances peu réalistes (10 000 composants pour 50ms ) Consommation mémoire étonnante (plus de 1000 threads allouées)

Analyse 12 Résultats très encourageants mais... un air de déjà vu! Performances peu réalistes (10 000 composants pour 50ms ) Consommation mémoire étonnante (plus de 1000 threads allouées) Supprimer l utilisation du JIT et de Hotspot

Performance and Scalability (2) 13 Tests réalisés sur un émulateur tournant sur une station de travail (mode interprété) Threads SCL Activities 3 500 2 625 1 750 875 0 10 ms 20 ms 30 ms 40 ms 50 ms

Performance and Scalability (3) 14 Tests exécutés sur un Palm Treo 600 avec une JVM : J9-571 (CLDC/MIDP-2) Threads SCL Activities memory full 200 150 100 50 0 10 ms 20 ms 30 ms 40 ms 50 ms

Performance and Scalability (4) 15 Tests exécutés sur un Palm Tungsten E2 avec une JVM : J9-571 (CLDC/MIDP-2) Threads SCL Activities 400 memory full 300 200 100 0 10 ms 20 ms 30 ms 40 ms 50 ms

Analyse 16 Implantation sur IBM J9 : Les threads sont traités en natif Il n y a pas de JIT et SCL (dérivant de SC) fait des choix d implémentation favorisant l utilisation d un JIT résultats encourageants pour ce qui est de l occupation mémoire

Performance and Scalability (5) 17 Tests exécutés sur un Axim 50v avec une JVM : J9-571 (CLDC/MIDP-2) Threads SCL Activities memory full 1 500 1 125 750 375 0 10 ms 20 ms 30 ms

Analyse 18 Implantation sur IBM J9 sur un PDA haut de gamme : Les threads sont toujours traitées en natif Il n y a toujours pas de JIT résultats similaires à ceux sur station de travail

Analyse 18 Implantation sur IBM J9 sur un PDA haut de gamme : Les threads sont toujours traitées en natif Il n y a toujours pas de JIT résultats similaires à ceux sur station de travail La même VM supporte le profil CDC

Plan 19 Les SugarCubes au dessus de J2ME Quelques résultats expérimentaux Les SugarCubes et le Multi-clocks Conclusion et perspectives

Application au jeux 20 Pas de mise en œuvre des threads dans le moteur du jeu (modèle des threads inapproprié) ; existent malgré tout (graphisme, GC,...) Utilisation dans le cas de tâches asynchrones longues : chargement et écriture de données (à travers le réseau, sur un FS ), sons, gestion des entrées/sorties... Une thread animation : while(running){ gameupdate(); gamerender(); paintscreen();... }

Le modèle multi-horloges 21 Fournir un moyen d intégrer les mondes synchrones et asynchrones : faciliter la description d activités rythmées par des horloges différentes et indépendantes (en particulier adresser les difficultés une horloge de base commune du cas synchrone) fournir un mécanisme pour gérer l'asynchronie naturelle du système, par exemple pour les systèmes distribués fournir quelques propriétés synchrones au dessus d une communication asynchrone (donner un sens précis à la simultanéité ou à l absence) fournir un éventail de mécanismes de communication entre asynchrone et synchrone. Objectif : éviter que le composant le ou les plus lents ne pénalisent complètement le système

Le modèle multi-horloges 22 L instruction clock : définit une séquence d instants. Elle contient un programme qui est exécuté au rythme de cette horloge Une horloge fournit un environnement d événements où l absence et la présence des événements ne peuvent être définies que par référence à cette horloge Le statut et les valeurs d un événement ne peuvent être lus que par un programme qui appartient à cette horloge Les événements peuvent être générés en cours d instant par le programme de l horloge ou traité comme des entrées (prises en compte au début de l instant) générés par l environnement ou encore de façon asynchrone par des programmes réactifs exécutés sur d autres horloges

Le modèle multi-horloges 23 C1 C2 e, f j,s s,r,t e, g, i

Le modèle multi-horloges 24 L instruction emit : permet à un composant réactif exécuté sur une horloge c1 d'émettre un événement asynchrone ciblant une horloge c2 (les émissions sont effectuées à la fin de l instant courant de c1) Les événements émis sur une horloge c2 sont traités comme des entrées du prochain instant à exécuter de l horloge c2 (les composants réactifs de l horloge c2 peuvent alors réagir à cet événement) Le composant émetteur voit son exécution suspendue jusqu à ce que l événement émis soit pris en compte par l horloge c2 Propriété importante : si 2 événements sont émis simultanément à partir de l horloge c1 ils seront vus comme étant simultanés par les composants réactifs de l horloge c2

Le modèle multi-horloges 25 C1 Simultanéité préservée e e, f C2 f e, f

Le modèle multi-horloges 26 Applications envisagées : simulations distribués et jeux multi-joueurs : implantation sous forme de zones localement synchrone distribuées sur les différents clients ; besoin de synchronisation relativement fort (synchroniser l ensemble du système n est pas envisageable/recommandé) Exemple : faciliter la re-synchronisation entre des entités répliquées d une application distribuée

Les timers 27 Permettent d exécuter de tâches de manière cyclique à échéance d un compte à rebours schedule() pour une tâche déclenché à un moment donné scheduleatfixedrate() pour une tâche déclenchée périodiquement possibilité de vérifier les échéances : scheduledexecutiontime() Tâches définies par la classe TimerTask Pas suffisamment précis en pratique (gigue), pas de contrôle sur la période

Plan 28 Les SugarCubes au dessus de J2ME Quelques résultats expérimentaux Les SugarCubes et le Multi-clocks Conclusion et perspectives

Conclusion 29 SugarCubes Lite est une première implantation de l approche réactive au dessus de J2ME SCL offre de bonnes performances (mais nécessite encore des travaux importants de reengineering pour tourner efficacement sur une KVM) Le modèle multi-horloges est une piste pour réconcilier le monde synchrone et asynchrone permettant ainsi de prendre en compte des aspects différents d une application interactive dans une approche unifiée

Travaux futurs 30 Diminuer l emprunte mémoire du framework (et dans une moindre mesure sa consommation mémoire à l exécution) Adapter l implantation des SugarCubes Lite au mode interprété de la KVM pour améliorer les performances Étudier d autres moyens de communication entre les systèmes : Refresh Events afin d éliminer silencieusement des informations devenues obsolètes au cours d un échange entre 2 horloges différentes Étudier la notion d horloge distribuées permettant à des composants réactifs distribués de partager une forte synchronisation bien qu étant exécutés sur des horloges de base différentes

Travaux futurs 31 Intégration sur une plate-forme temps réel Java afin de bénéficier de services temporels avancés pour implanter des systèmes temps réels Décliner différentes solutions de tolérance aux pannes