Analyse de la démographie des objets dans les systèmes Java temps-réel



Documents pareils
Gestion hybride de la mémoire dynamique dans les systèmes Java temps-réel

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

La technologie Java Card TM

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

as Architecture des Systèmes d Information

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Business Process Execution Language

La carte à puce. Jean-Philippe Babau

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

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

Java - la plateforme

Système de Gestion de Fichiers

Surveiller et contrôler vos applications à travers le Web

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Rapport d activité. Mathieu Souchaud Juin 2007

Formula Negator, Outil de négation de formule.

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Vulgarisation Java EE Java EE, c est quoi?

La dernière base de données de Teradata franchit le cap du big data grâce à sa technologie avancée

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

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

X2BIRT : Mettez de l interactivité dans vos archives

Master Informatique Aix-Marseille Université

Projet Active Object

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

TP1. Outils Java Eléments de correction

Machine virtuelle Java pour Palm TX

Machines Virtuelles. et bazard autour. Rémi Forax

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Services Réseaux - Couche Application. TODARO Cédric

données en connaissance et en actions?

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

Les RPV (Réseaux Privés Virtuels) ou VPN (Virtual Private Networks)

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Cahier des charges (CDC)

Évaluation et implémentation des langages

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Impact des robots d indexation sur le cache de second niveau de SPIP IMBERTI Christophe - SG/SPSSI/CP2I/DO Ouest 06/06/2012 mis à jour le 05/07/2012

Plate-forme Cloud CA AppLogic pour les applications d entreprise

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

DG-ADAJ: Une plateforme Desktop Grid

Dafoe Présentation de la plate-forme UIMA

Analyse de performance, monitoring

Solutions informatiques (SI) Semestre 1

Cours de Génie Logiciel

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

Instrumentation de code Java

Introduction aux Machines Virtuelles avec VMKit

Les solutions centre de données virtuel et Infrastructure-service de Bell

Plan de notre intervention 1. Pourquoi le test de charge? 2. Les différents types de tests de charge 1.1. Le test de performance 1.2.

Programmes des classes préparatoires aux Grandes Ecoles

ETUDE ET IMPLÉMENTATION D UNE CACHE L2 POUR MOBICENTS JSLEE

Article 2 : Conseils et meilleures pratiques pour gérer un cloud privé

Pentaho Business Analytics Intégrer > Explorer > Prévoir

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

Ordonnancement temps réel

Comment optimiser l utilisation des ressources Cloud et de virtualisation, aujourd hui et demain?

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

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

IRL : Simulation distribuée pour les systèmes embarqués

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Introduction à ORACLE WAREHOUSE BUILDER Cédric du Mouza

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

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

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE

Je catalogue, tu FRBRises, il/elle googlise. L évolution des catalogues et les bibliothécaires Vendredi 29 mars 2013 Manufacture des tabacs

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

1 Actuate Corporation de données. + d analyses. + d utilisateurs.

Conception et contrôle des SMA tolérants aux fautes

Associations Dossiers pratiques

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

Conditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit.

Plateforme de capture et d analyse de sites Web AspirWeb

Annexe : La Programmation Informatique

Les technologies du Big Data

Initiation à JAVA et à la programmation objet.

Vérification formelle de la plate-forme Java Card

Druais Cédric École Polytechnique de Montréal. Résumé

Introduction au langage C

Cours d initiation à la programmation en C++ Johann Cuenin

Conception et Intégration de Systèmes Critiques

Présentation du PL/SQL

Trois nouveaux formulaires sont donc nécessaires : Pour l affichage de la liste, un formulaire de sortie WEB_Liste associé à la table des [Films] ;

Le moteur de workflow JBPM

Présentation Alfresco

Thème 3 Conception et vérification d architectures de systèmes sur puce

RAPPORT DE CONCEPTION UML :

Magento. Pratique du e-commerce avec Magento. Christophe Le Bot avec la contribution technique de Bruno Sebarte

Prise en compte des ressources dans les composants logiciels parallèles

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

Programmation d'applications sur PDA

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Transmission d informations sur le réseau électrique

SNMP for cloud Jean Parpaillon. SNMP4cloud - 1

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

VMware ESX/ESXi. 1. Les composants d ESX. VMware ESX4 est le cœur de l infrastructure vsphere 4.

SGDN. Projet: JAVASEC

Introduction à la B.I. Avec SQL Server 2008

Transcription:

Analyse de la démographie des objets dans les systèmes Java temps-réel Nicolas BERTHIER Laboratoire VERIMAG Responsables du stage : Christophe RIPPERT et Guillaume SALAGNAC le 29 septembre 26 1 Introduction et problématique 1.1 Contexte Bien qu il ait été initialement destiné au développement sur systèmes embarqués, le langage Java est aujourd hui bien plus utilisé pour concevoir des applications pour serveurs ou stations de travail, que pour réaliser des programmes ou des systèmes pour les plates-formes contraintes. Les différentes implantations de l environnement d exécution Java standard nécessitent en général des quantités de ressources (i.e. mémoire, puissance de calcul, etc.) très supérieures à ce qui est disponible dans les systèmes embarqués contraints comme les cartes à puce ou les capteurs par exemple. Des versions allégées de l environnement d exécution Java standard ont été proposées [Che, Sun2] pour permettre l exécution de programmes Java sur ces systèmes, mais elles offrent cependant beaucoup moins de services et compliquent le travail du développeur d applications (par exemple, l environnement Java Card ne permet pas l allocation dynamique de mémoire ou le chargement dynamique de classes). 1.2 JITS et la gestion de la mémoire dynamique L architecture JITS (pour Java In The Small) [Biz2] a été développée 1 pour permettre le déploiement sur les systèmes très contraints d applications réalisées en Java avec l API standard (J2SE). Elle doit donc pouvoir fournir un environnement d exécution Java complet incluant des outils permettant d assurer la gestion de la mémoire, et ainsi de prendre en charge l allocation dynamique des objets et la libération automatique de la mémoire occupée. Cette gestion de la mémoire est actuellement assurée par différents types de ramasse-miettes (par comptage de références, marquage et nettoyage, etc.), mais ces mécanismes ne sont pas adaptés aux contraintes imposées par les systèmes temps-réel. En effet, ils ont un coût non négligeable et très variable, provocant ainsi des temps de pause non déterministes. Ceci représente un inconvénient majeur dans le cas des applications temps-réel, où il est nécessaire de pouvoir prédire le temps d exécution des instructions. 1.3 La gestion de la mémoire en régions L équipe dans laquelle j ai effectué mon stage propose un autre type de mécanisme [NRSY6] basé sur un regroupement des objets alloués, après analyse statique du programme. Chaque groupe d objets ainsi créé constitue une région qui, lors de sa destruction, provoque la libération en bloc de la mémoire occupée par son contenu. Cela permettrait de gérer la mémoire sans utiliser de ramasse-miettes, donc sans occasionner de surcoût imprévisible. C est dans le but de prédire l efficacité des régions résultantes qu une étude de la démographie des objets alloués par les applications Java a été réalisée. 1 JITS est une plate-forme développée au sein du projet POPS à Lille (http ://www.lifl.fr/pops) 1

1.4 Travail réalisé Cette étude a été faite empiriquement en instrumentant la machine virtuelle de JITS afin d obtenir les données disponibles sur les objets alloués, puis en analysant celles-ci afin de mettre en avant des informations pertinentes. Cette méthode a l avantage d être relativement simple à mettre en oeuvre puisque la machine virtuelle utilisée permet d ajouter des méta-données aux instances de chaque objet de l application exécutée. Des résultats intéressants ont ainsi pu être obtenus, permettant de mettre en avant certaines propriétés des applications analysées. Après une présentation détaillée de la méthode employée dans cette étude seront résumés et commentés quelques résultats obtenus. 2 Analyse de la démographie des objets L analyse de la vie des objets alloués par les applications Java s est faite en instrumentant la JJVM (pour Java Java Virtual Machine), une machine virtuelle implémentée en Java permettant notamment d expérimenter relativement aisément les outils de la machine virtuelle native. Cette étude s est décomposée en deux parties distinctes : la première a consisté à recueillir les informations disponibles sur chacun de ces objets ; la seconde étape était destinée à résumer ces données afin de les rendre plus explicites. 2.1 Extraction des informations sur la vie de chaque objet Les informations concernant le cycle de vie des objets alloués par une application ont été obtenues en instrumentant la JJVM de façon à extraire les données concernant la création et la mort de ces objets. Les instructions allouant de la mémoire ont donc été identifiées, ainsi que celles étant susceptible de provoquer la mort d un objet (i.e. de supprimer ou modifier la dernière référence vers cet objet ; qu il ne soit plus accessible). Pour chacune de ces dernières, un ramasse-miettes de type marquage et nettoyage instrumenté est exécuté. Il est alors possible d identifier, pour chaque objet, le moment de sa création et celui de sa mort ; on peut donc obtenir pour ces deux événements le nombre de bytecodes qui ont été exécutés depuis le lancement de l application (indication temporelle), ainsi que l état de la pile d exécution à ces deux moments. Cet état de la pile d exécution a été nommé un contexte, et correspond à une description de cette pile, composée de frames (chacune correspondant à un appel de méthode). 2.2 Analyse des informations L ensemble des informations concernant la naissance et la mort des objets concernés constituant une grande quantité de données, une étape d analyse statistique a été ajoutée afin de les synthétiser. Le but de ce travail étant d identifier des caractéristiques des sites d allocation d une application, des regroupements par site de création ont été effectués sur ces données. Ce traitement génère alors des statistiques, pour chaque site de création, sur le cycle de vie des objets qu il a alloués (e.g. durée de vie moyenne, plage de temps pendant laquelle ces objets ont été créés, plage de temps pendant laquelle ces objets sont morts, nombre d objets créés, etc.). Il est en outre possible d effectuer les mêmes regroupements par site de mort des objets. Ces informations sont très utile pour comparer la date de mort d une région créée avec celle des objets qu elle contient. Cela pourrait aussi permettre de déterminer les objets qui meurent dans la méthode, ou même dans la boucle où ils ont été créés. 3 Résultats expérimentaux 3.1 Analyse du benchmark BiSort Ce processus d analyse a été effectué sur plusieurs applications, ayant chacune des comportements différents. L une d elles va être présentée ici : il s agit d un programme faisant partie de la suite de 2

benchmarks JOlden 2, qui ont l avantage d inclure des méthodes récursives ou encore d allouer dynamiquement beaucoup de mémoire, aspects qui constituent des particularités très intéressantes puisque nécessairement supportées par un environnement Java complet. Cette application alloue un arbre composé d un nombre arbitraire d objets, puis trie cet arbre. Il est de plus possible de faire afficher diverses informations comme le temps d exécution des opérations ou encore l arbre manipulé à différents moments du processus. Les graphes des figures 1 de la présente page et 2 page suivante montrent les résultats obtenus dans les deux cas (La valeur time est le nombre de bytecodes exécutés depuis la première allocation par l application). 7 Object lives by allocation site, without verbose output 7 6 6 5 5 time 4 3 4 3 population 2 2 1 1 s1 s2 site s3 Number of objects Lifespans (average) Deaths Creations sites d allocation s1 Value.createTree :26 s2 java.lang.jmethod.builddescriptor :21 s3 BiSort.parseCmdLine :52 FIG. 1 Représentation des caractéristiques des différents sites d allocation du benchmark BiSort, sans affichage 2 http ://www-ali.cs.umass.edu/dacapo/benchmarks.html 3

4 35 3 Object lives by allocation site, with verbose output 4 35 3 time 25 2 25 2 population 15 15 1 1 5 5 s1 s2 s3 s4 s5 s6 s7 s8 s9 site s1 s11 s12 s13 s14 s15 s16 s17 Number of objects Lifespans (average) Deaths Creations sites d allocation s1 BiSort.main :229 s2 Value.inOrder :28 s3 BiSort.main :196 s4 java.lang.double.tostring :12 s5 Value.createTree :26 s6 java.lang.integer.tostring :14 s7 java.lang.integer.tostring :26 s8 java.lang.double.tostring :35 s9 BiSort.main :24 s1 java.lang.stringbuffer.ensurecapacity_unsynchronized :4 s11 BiSort.main :263 s12 java.lang.jmethod.builddescriptor :21 s13 java.lang.stringbuffer.<init> :31 s14 java.lang.string.<init> :127 s15 java.lang.stringbuffer.tostring :11 s16 BiSort.main :297 s17 BiSort.parseCmdLine :52 FIG. 2 Représentation des caractéristiques des différents sites d allocation du benchmark BiSort, avec affichage 4

RÉFÉRENCES On remarque qu apparaissent différents types de sites d allocation. Par exemple, la méthode Value.createTree est appelée récursivement pour construire les noeuds de l arbre initial. Les objets qu elle alloue (les noeuds de l arbre) ont une durée de vie conséquente et sont en nombre élevé par rapport à ceux construits par les autres sites d allocation. De plus, on peut constater que tous ces objets meurent en même temps, à la fin de l exécution. En revanche, l activation de l affichage d informations introduit d autres types de sites. En effet, on peut constater que les méthodes utilisée pour l affichage créent généralement beaucoup d objets à durée de vie très courte (e.g. java.lang.integer.tostring ou java.lang.string.<init> (constructeur)). 3.2 Commentaires D après les résultats présentés précédemment, on peut remarquer que le grand nombre d objets composant l arbre aurait provoqué un allongement du temps d une éventuelle exécution d un ramassemiettes de type marquage et nettoyage. En revanche la création d une région (à taille variable, puisque le nombre de nœuds de l arbre n est à priori pas connu à l avance) regroupant l arbre entier serait certainement très bénéfique, puisque ne comportant que des objets devenant inaccessibles en même temps. En outre, pour ce qui est des sites de création d objets à durée de vie très courte, une région pourrait être créée (éventuellement dans la pile d exécution) de manière à encapsuler un maximum d objets ayant la même durée de vie. Pour cela, une analyse du site de mort des objets concernés pourrait permettre de déterminer une région optimale. Enfin, une méthode pour prédire l efficacité des régions créées après l analyse statique serait de comparer le cycle de vie des objets (obtenu empiriquement) créés dans une même région, afin de déterminer si la durée de vie de celle-ci diffère de celle de son contenu (i.e. si beaucoup d objets morts vont rester longtemps dans une région encore en vie). 4 Conclusion et perspectives Le travail qui a été réalisé a permis d aboutir à une technique d analyse empirique de la démographie des objets d une application Java. Elle permet d obtenir une synthèse du cycle de vie de ces objets, et de déterminer des caractéristiques de chaque site d allocation d une application ; ces propriétés peuvent alors être utilisées dans le but de prédire l efficacité des régions créées après l analyse statique du programme. En revanche, l aspect empirique de cette étude limite son champ d application. En effet, l exécution d un programme temps-réel dépend souvent d évènements extérieurs, et il devient alors difficile d obtenir des résultats pertinents par l intermédiaire d une simulation sans créer de scénarios typiques d exécution. Cette analyse peut cependant être une bonne approche pour prédire l efficacité des régions obtenues après une analyse statique. Enfin, une étude supplémentaire pourrait permettre de déterminer la possibilité de combiner une gestion de la mémoire en régions, avec un ramasse-miettes plus efficace là où ces dernières poseraient problème (e.g. utilisation d un ramasse-miettes par comptage de références associé au mécanisme des régions). Références [Biz2] Gabriel Bizzotto. JITS : Java In The Small. Master s thesis, Université de Lille 1, 22. [Che] Zhiqun Chen. Java Card Technology for Smart Cards : Architecture and Programmer s Guide. Addison Wesley, 2. [NRSY6] Chaker Nakhli, Christophe Rippert, Guillaume Salagnac, and Sergio Yovine. Efficient Region-Based Memory Management for Resource-limited Real-Time Embedded Systems. In Proceedings of "ICOOOLPS 26", 26. [Sun2] Sun Microsystems. The CLDC Hotspot Implementation Virtual Machine, 22. http://java.sun.com/products/cldc/wp/cldc_hi_whitepaper.pdf. 5