La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Extensibilité Dynamique dans les Caches Web : une Approche par Aspects Marc Segura-Devillechaise Jean-Marc Menaud Julia Lawall Gilles Muller Ecole des.

Présentations similaires


Présentation au sujet: "Extensibilité Dynamique dans les Caches Web : une Approche par Aspects Marc Segura-Devillechaise Jean-Marc Menaud Julia Lawall Gilles Muller Ecole des."— Transcription de la présentation:

1 Extensibilité Dynamique dans les Caches Web : une Approche par Aspects Marc Segura-Devillechaise Jean-Marc Menaud Julia Lawall Gilles Muller Ecole des Mines de Nantes OBASCO, EMN/INRIA Datalogisk Institut University of Copenhagen ** * * * CFSE3

2 Extensibilité Dynamique dans les Caches Web Plan : Problématique de lextensibilité Les connecteurs comme des aspects Expérimentation et évaluation dans Squid Conclusion

3 Un cache Web ClientCacheServeur Espace de stockage 3? Espace de stockage 3 Contraintes Efficacité Continuité du service

4 Contexte de létude Limitation : un cache ne sait traiter quun certain nombre de types de documents Adapter les fonctionnalités du cache en fonction des flux dinformation à traiter Objectif de ladaptation : Améliorer les performances

5 Notre problématique La fonctionnalité est dépendante du flux en cours Lensemble des fonctionnalités est indénombrable Tension entre développement des fonctionnalités et développement du cache Impossible danticiper toutes les fonctionnalités au moment de la conception du cache Comment Concevoir/Déployer/Exécuter un cache adapté (intégrant la fonctionnalité) au flux de données en cours

6 Une Solution Puisque lon ne peut pas anticiper à la conception du cache linterface nécessaire : La produire dynamiquement au moment du déploiement de la fonctionnalité

7 Extensibilité Dynamique dans les Caches Web Plan : Problématique générale Les connecteurs comme des aspects Expérimentation et évaluation dans Squid Conclusion

8 Notre Approche Développement indépendant du cache Développer la fonctionnalité de manière pseudo-indépendante Offrir un module et une interface Développer un connecteur pour établir une liaison entre le cache et linterface de la fonctionnalité. Concentrer tous les aspects transversaux et spécifiques au logiciel de base dans ce même et unique module. ConnecteurFonctionnalité

9 0: #include Tax.h 1: 2: require void withdraw(int); 3: 4: Test: [ 5: int main() : [ 6: int payinterest(double b) :[ 7:int deposit(int a):[ 8:{ if (a>10) 9:continue_deposit(a); 10:else withdraw(a); 11:} 12:] 13:] 14:int balance(int a) :[ 15:{int temp; 16:temp=continue_balance(a,b); 17: return temp;} 18:] 19:]] int bal; CreateBankAccount(int amt) { bal=amt; } int balance() { return bal; } int payinterest(double rate) { int temp; temp = balance()*(rate/100); return deposit(temp); } int deposit(int amt) { return bal = bal + amt; } void withdraw(int amt) { bal = bal - amt; } La Conception du connecteur

10 Déploiement des fonctionnalités Intégration du connecteur et de sa fonctionnalité sur source Arrêt de squid 30s Temps de compil. de Squid sur un P4 2,4 Ghz : 1 m 30s Notre solution : Intégration dynamique sans arrêt du processus dun ou de plusieurs connecteurs/modules sur code natif

11 Principe c : c: 55 push %ebp d: 89 e5 mov %esp,%ebp f: 83 ec 18 sub $0x18,%esp : 8b mov 0x8(%ebp),%eax : 8b 55 0c mov 0xc(%ebp),%edx : f8 mov %eax,0xfffffff8(%ebp) b: fc mov %edx,0xfffffffc(%ebp) e: e8 e3 ff ff ff call : 50 push %eax : db fildl (%esp,1) : 8d lea 0x4(%esp,1),%esp b: dd 45 f8 fldl 0xfffffff8(%ebp) e: dd fldl 0x a4: de f9 fdivrp %st,%st(1) 80483a6: de c9 fmulp %st,%st(1) 80483a8: d9 7d f2 fnstcw 0xfffffff2(%ebp) 80483ab: 66 8b 45 f2 mov 0xfffffff2(%ebp),%ax 80483af: b4 0c mov $0xc,%ah 80483b1: f0 mov %ax,0xfffffff0(%ebp) 80483b5: d9 6d f0 fldcw 0xfffffff0(%ebp) 80483b8: db 5d f4 fistpl 0xfffffff4(%ebp) 80483bb: d9 6d f2 fldcw 0xfffffff2(%ebp) 80483be: 83 ec 0c sub $0xc,%esp 80483c1: ff 75 f4 pushl 0xfffffff4(%ebp) 80483c4: e call 80483ce 80483c9: 83 c4 10 add $0x10,%esp 80483cc: c9 leave 80483cd: c3 ret int balance() { return bal; } int payinterest(double rate) { int temp; temp = balance()*(rate/100); return deposit (temp); } int deposit(int amt) { return bal = bal + amt; } void withdraw(int amt) { bal = bal - amt; }

12 Tissage : 1 chargement de laspect – allocation du crochet 2 réécriture du code de base 3 mettre aspect_loaded à vrai Saut Retour de fonction int payinterest { } // original function code int deposit(int amount) { Généré à la compilation de l aspect Généré au tissage Appel de fonction Légende if(pointcut != TRUE) continue_deposit(amount,account); else advice(amount,account); } int advice(float amount) { CODE return continue_deposit(amount); } int unAspect(float amount) { deposit(100,account) // code Processus hôte } } else { JMP unAspect JUMP deposit } Crochet if(aspect_loaded ==TRUE) void * continue_deposit = deposit; Aspect

13 Comment lier laspect au programme de base ? Saut Retour de fonction int payinterest { } // original function code int deposit(int amount) { Généré à la compilation de l aspect Généré au tissage Appel de fonction Légende if(pointcut != TRUE) continue_deposit(amount,account); else advice(amount,account); } int advice(float amount) { CODE return continue_deposit(amount); } int unAspect(float amount) { deposit(100,account) // code Processus hôte } } else { JMP unAspect JUMP deposit } Crochet if(aspect_loaded ==TRUE) void * continue_deposit = deposit; Aspect

14 Exécution des fonctionnalités Tissage et détissage Sans interruption de service Efficacité de lintégration Sécurité de lintégration Serveur de confiance Maîtriser la cohabitation des fonctionnalités Vérification dexclusivité lors de la création dinterface

15 Extensibilité Dynamique dans les Caches Web Plan : Problématique générale Les connecteurs comme des aspects Expérimentation et évaluation dans Squid Conclusion

16 Evaluation Conception Rapport de 1 à 7 pour le développement dune fonctionnalité Déploiement Tissage inférieur à 30 µs (sur Celeron 600) Exécution Performance du lien 2,2 Performance de lintégration : surcoût de 1,2 %

17 Conclusion Le connecteur comme glue entre fonctionnalité et logiciel de base. Architecture pour le développement daspect en C et pour leurs déploiements sur un code natif en cours dexécution. Tisseur efficace et travaillant sur des binaires non préparés Première expérimentation des outils sur Squid et lanticipation des accès

18 Travaux futurs Autres expérimentation en cours : Création dynamique dinterface RPC (passage à SOAP …) Conception daspect sur le Tisseur lui même (Pb de bootstrap) Sécurité du code téléchargé Support du langage C++ Extraction dinterfaces dans un modèle de composant orienté système


Télécharger ppt "Extensibilité Dynamique dans les Caches Web : une Approche par Aspects Marc Segura-Devillechaise Jean-Marc Menaud Julia Lawall Gilles Muller Ecole des."

Présentations similaires


Annonces Google