Dyner : un noyeau efficace pour le tissage dynamique d'aspects sur processus natif en cours d'ex cution. Exprimentation d'EAOP sur une application concr.

Slides:



Advertisements
Présentations similaires
Speedup Prediction for Selective Compilation of Embedded Java Programs
Advertisements

GEF 243B Programmation informatique appliquée
Chap. 4 Recherche en Table
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
La machine virtuelle virtuelle utopie et/ou réalité ?
Affichage interactif, bidimensionnel et incrémental de formules mathématiques Hanane Naciri et Laurence Rideau INRIA Sophia Antipolis CARI'2000.
Calculs de complexité d'algorithmes
Introduction : plasticité des IHMs – Page 1 IHM et plasticité 1 IHM et Différents supports Différents utilisateurs Différents environnements Problématique.
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
GEF 243B Programmation informatique appliquée
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
(Classes prédéfinies – API Java)
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Directeur de Thèse : Pr. Witold Litwin
Performances 1 Évolution : Performance. Performances 2 Évolution : Mémoire.
A abstraction b assembleur c nombre binaire d bit e cache f UC g puce h compilateur i famille dordinateurs j contrôle k chemin de données l défaut m dé
Exemple de compilation
Extensibilité Dynamique dans les Caches Web : une Approche par Aspects
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
Initiation à la programmation et algorithmique cours 3
Sélection automatique d’index et de vues matérialisées
wireless sensor networks
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Common Gateway Interface
ALGORITHMES RECURSIFS
Récursivité.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
le profil UML en temps réel MARTE
Rapport de TER 2002 R₫alisation d'un site web dynamique en PHP / MySql
Les algorithmes: complexité et notation asymptotique
Principes de persistance dans les applications orienté objet
Rennes, le 18 septembre 2006 Support du paradigme maître-travailleur dans les applications à base de composants Tâche 2.2 Hinde Bouziane Réunion LEGO.
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Buy Large COOA Etudiants : Zhengyi Cao Mickael Orsolino Vadim Pivak
Veille Technologique : Étudier les avantages et inconvénients du typage statique et du typage dynamique pour des applications interactives Sujet proposé.
PLD GHome H4214 Piccolo Thomas Gu Lei Deville Romain Huang Yachen
IGL301 - Spécification et vérification des exgiences 1 Chapitre 1 Introduction (ref : Bray chapitre 1)
IFT313 Introduction aux langages formels
Programmation concurrente
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 3 Syntaxe et sémantique.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Informatique et Unix Jean-Pierre Gallou
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Tutorat en bio-informatique Le 21 novembre Exercices 2 et 3 (MAT1400) - solutions Chapitre 11.7, Analyse - concepts et contextes vol. 2 27) Cherchez.
Synchronisation Classique
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
Interoperabilité des SI - Urbanisation
Le workflow Encadré par: M . BAIDADA Réalisé par: ATRASSI Najoua
Stage 2A CS80 pour Origin 1/28. 1) Presentation of the internship 2) The Multi-Oscillator 3) Connection-GUI’s API Conclusion Stage 2A CS80 pour Origin.
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Ch. PAUL - Piles et Files à l'aide de listes chainées
Programmation Système et Réseau (sous Linux)
Outil de gestion des cartes grises
ALGORITHMIQUE Recherches : Tris : séquentielle, dichotomique
LES PILES ET FILES.
Présentation Finale Spirit 07 / 03 / 2011 Groupe Vert 1 Equipe Verte.
La programmation système
Programmation Système et Réseau
ETNA – 1ème année Guillaume Belmas –
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
1.1: notions de bases de l’informatique
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
Informatique 1A Langage C 6 ème séance 1. Objectifs de la séance 6  Allocation dynamique de mémoire  Application à la création de tableaux 2.
Transcription de la présentation:

Dyner : un noyeau efficace pour le tissage dynamique d'aspects sur processus natif en cours d'ex cution. Exprimentation d'EAOP sur une application concr te diffuse et concurrente 1/49 ;-)

Problmatique Gnrale " Adaptation d'application (changer des fonctionnalits) " Application dont la continuit du service est une contrainte " Application aux performances critiques

Domaine Applicatif " Cache Web – Le prix d'un cache vari de mani re exponentiel par rapport aux nombres de requetes traits à la seconde – -> Performances importantes – Code Natif (C) " Les donnes sont de + en + dynamique – Raliser une partie des traitement au niveau du cache

Cache et Composant " Les composants supposs tlchargeables sont tous tr s diffrents – Pas possible d'avoir une Interface commune " (voir echec d'ActiveCache et Plugxy) – On a montr que sur un certain type de composant l'insertion de la fonctionalit crosscutait le cache " (Compsants tlchargeables en vues : Les services Web)

Anticipation des acc s et Cache " Exemple simple – Anticipation des acces dans cache web coopratif " Pas anticiper les acces des voisins. " Notion de trace du programme " Vers l'AOP " Contraintes : – Tlcharger à la vole des stratgies d'anticipation des acc s – Ne pas arr ter le cache lors de l'adaptation – Garantir une greffe cohrente et sure

AOP en 4 mots " Points de jonction " Langage de Coupe (enchaînement de fonctions) " Langage d'action " Tissage – BuildTime / LoadTime / RunTime

EAOP (en un peu plus...) " Point de jonction gnr un venement – Cet venement est insr dans un trace – L'venement propage une partie du contexte d'excution " Un moniteur est charg de reprer un squence d'venement – La squence est dfinie par le langage de coupe – L'aspect est activ si le motif est trouv

EAOP par rapport à notre cadre applicatif " Intrins quement non concurrent – une trace d'excution) – Le mcanisme de moniteur central et mal adapt (goulot) " Taille des vnements importantes – en fonction de la taille du contexte a dupliquer " Langage de coupe non ddi

Notre solution " Mod le intrinsequement multi-thread " Langage de coupe clairement identifi – Parser / compilateur – Volontairement le plus simple possible " Tissage à l'excution – Sur code Binaire – Sans arr t du processus hôte On ne g le pas le processus via ptrace

Les Acteurs " Le concepteur du logiciel de base – Annotation de son source " Le concepteur de l'aspect – Ecriture de la coupe – Ecriture de l'insert " L'administrateur du logiciel en cours d'excution – Tissage et de-tissage des aspects.

Exemple d'un pt de vue langage 0: Test: [ 1: int pov(int a,int b) : [ 2: int foo(int a,int b) :[ 3:{ a=a+2; 4:if (a>10) continue_foo(a,b); 5:return -1; 6:} 7:int bar(int a, int b):[ 8:{ printf(«entr e coupe bar»); 9:continue_bar(a,b); 10: debug(1); 11:} 12:] 13:] 14:int bar(int a,int b) :[ 15:{int temp; 16:temp=continue_bar(a,b); 17: debug(2);return temp;} 18:] 19:]] Hookable int var_glob; Hookable int bar(int a,int b){ a=b; printf(«bar %d\n», a); return a;} Hookable int foo(int a,int b) { printf(«foo\n»); bar(a,b+1); return 1;} int pov(int a,int b) { foo(a,b); bar(2,3); return1;} void main(){ pov(1,2);}

Établissement des Liens Schmas simple La trhread est rerout donc dans l'aspect nous avons tout le contexte d'excution du programme

Excution de l'aspect Saut Retour de fonction prevent_propagation_pointcut()){ return int handle_request(char* req) { } // original function code int relay_request(struct * request) { JMP 3 ; NOP ; NOP ; NOP ; Gnr à la compilation du programme de base Gnr à la compilation de l ’ aspect Gnr au tissage Appel de fonction Aspect.so Lgende = relay_request+5 ; // function pointer /* check wether relay_ request handle_request are on the stack */ } if (is_prefetching_request(request)) return NO_NEIGHBOR_HAS_FILE; else returncontinue_relay_request(request); } JUMP crochet int prevent_propagation(struct * request) { int prevent_propagation_pointcut() { relay_request(request) // original function code Processus hôte } save registers restore registers } else { JMP prevent_propagation JUMP relay_request+5i restore registers } Crochet if(aspect_loaded && int continue_relay_request(struct * request) Deux niveaux de D-tissage : Temporaire Permanent

Architecture gnrale " Temps de conception – Prparation du binaire – Compilation de la coupe et de l'aspect " Temps d'excution – Tissage et dtissage de l'aspect " Instrumentation du code " Garder la cohrence lors de l'instrumentation de plusieurs points de jonction – Activation des aspects

Chaîne de compilation - excution Dveloppeur du code de base Administrateur du support d ’ excution Dveloppeur de l ’ aspect extensions ANSI C with GNU 89 (thread en attente sur socket … ) Code de base prtrait Binaire ELF x86 Linux Cache adaptable Librairie partage (.so) ELF x86 Librairie support µDyner Support d ’ instrumentation Source C prtaite Excute Excution Prtraitement Conception et compilation Thread d ’ instrumenta- tion µDyner Processus du cache (processus hôte) Thread du cache Advice et pointcut fonctions Source de politique de prchargement Collections d ’ aspects en µDyner Aspects compils Compile - lie (gcc) language C annotat with hookable Source du cache: code de base Posttraitement Compile lie (gcc) Prtraitement (weave - deweave) Politique de prchargement dploye par commandes shell

Performance du Tisseur •Environnement d'Évaluation • Matriel : P4 1.6 GHz RAM: 256 Mo • Logiciel : – TinyProxy Gcc – O2 kernel linux •Rendre hookable toutes les fonctions et toutes les variables : – ~ 3% Tissage d ’ un aspect vide – Tissage effectu en ~ 266 µs Dont chargement du code de l'aspect (temps minimal) : ~ 199 µs Interruption de l ’ application pour l ’ insertion d ’ un crochet Au pire : 16.5 µs (boucle d ’ attente d ’ active pour l ’ acc s aux variables) –Dlai de retransmission TCP : 250 ms soit + de crochets

Performance du lien •Rappels : Un syst me à aspect permet d ’ attraper un appel de mthode et d ’ appeler la mthode attrape depuis l ’ aspect. Un syst me rflexif permet d ’ attraper un appel de mthode et d ’ appeler la mthode attrape depuis le meta niveau. Dans le cas d ’ une mthode retournant immdiatement, le ratio du temps ncessaire pour effectuer cette tâche sur le temps d ’ un appel direct à cette mthode est un bon indicateur de performance. • Code : f(){} g(){ f(); } f : continue_f(); K(); Coupe

Performance du lien sur l'appel de fonction •Quelques ratios sur un appel vide : µDyner (AOP pour C – rcriture dynamique du code) : 2.2 IguanaJ (MOP pour Java – rcriture dynamique du code JIT) : 24 MetaXa (MOP pour Java – utilisation d ’ une VM modifie) : 28 Prose (AOP pour Java – utilisation des API de dverminage) : 40 Guaranà (MOP pour Java – utilisation d ’ une VM modifie) : 70 • Quelques ratios sur un appel dans tinyproxy : – Surcoût : •Variations moyenne des mesures : ~ 20 %

Travaux connexes • Dyninst Instrumentation dynamique d ’ application native – Base sur les API de dverminage UNIX (ptrace) donc coûteux – Reloge le code instrumente Probl me si l ’ intruction reloge est la cible d ’ un saut Utilisation d ’ heuristiques pour rsoudre ce probl me • Kerninst Instrumentation dynamique du noyau de l ’ OS – Recriture du code Solaris dispose d ’ un espace mmoire fixe pour l ’ OS. Les fonctions de l ’ OS sont rparties dans cette espace (contrainte d ’ alignement). Kerninst utilise ces trous pour allouer des sauts jusqu ’ à pouvoir atteindre un trou suffisamment grand pour contenir un crochet. Les fonctions de l ’ espace utilisateur n ’ ont pas ces contraintes d ’ alignement. Il est rare qu ’ il y ait des « trous » non utiliss dans le segment de code. • Java Aspect Component Syst me à tissage dynamique d ’ aspect pour Java – Recrit le bytecode au chargement Pour chaque objet de base introduit une chaîne d ’ objet d ’ interposition L ’ indirection introduit par la chaîne d ’ objet permet le tissage sur n ’ importe quel objet. Tr s coûteux : ralentit une application d ’ un facteur 5 environ

Etat des travaux en cours " Principalement interess aux technologies pour l'tablissement du lien entre le code de base et l'aspect. – Dfinir un sous-ensemble de crochets – Instrumentation lg re et sans arret du processus " Sans passer par le dvermineur – Activation base sur des mcanismes de bas niveau " (rification de la pile, des acc s aux variables et aux fonctions) " Le langage de coupe est dduit de ces mcanismes de base

Comp. " Orient excution (pas source) " Evenements : point dexcution avec la totalit du contexte dexcution " Coupe : enchainement de certain type devenement -> acc s variable/fonction " Plusieurs aspects sur une meme coupe sont excuts sequentielement pas de // et Seq " On peut avoir un tat par aspect (comme EAOP)

Conclusion " Guid par EAOP, principalement interess aux technologies pour l'tablissement du lien entre le code de base et l'aspect. " On fait le lien au niveau mod le par la trace et au niveau implmentation par rcriture de code. " Travail autour d'un langage de coupe plus volu " Supression du hookable ?