Sujet de Master ALD 2006-2007

Requêtes temporelles dans WildCAT

Objectif du stage

De plus en plus, les applications s’exécutent dans des contextes variés et dynamiques, qui évoluent de façon imprévisible. Or, certains éléments de ce contexte peuvent avoir une influence déterminante sur le fonctionnement de l’application. Ainsi, la quantité de mémoire disponible sur un serveur pourra avoir un impact sur son temps de réponse si il devient nécessaire de “swapper” temporairement certaines pages mémoires sur le disque pour répondre à une requête. Les applications qui sont capables de réagir aux évolutions de leur contexte d’exécution sont dites sensibles au contexte (context-aware). De telles applications doivent pouvoir : découvrir les éléments présents dans le contexte et leurs caractéristiques et détecter les changements et évolutions du contexte qui sont significatives pour elle (bien entendu, quels changements sont ou non significatifs dépend de chaque application).

De nombreux systèmes de monitoring ad hoc existent pour répondre à ces besoins dans des domaines précis. Depuis quelques années on voit apparaître des systèmes plus génériques, indépendants des technologies d’acquisition de données brutes, mais qui permettent d’intégrer ces technologies hétérogènes en offrant une vision plus abstraite et homogène à l’utilisateur. WildCAT, développé au sein de l’équipe OBASCO, est un tel système. WildCAT offre à l’utilisateur une vision hiérarchique et dynamique du contexte, et permet à la fois de décourvir cette structure en l’interrogeant de façon synchrone (ex : “Quelle est la charge de ce serveur ?”) et d’être notifié lorsque les changements qui intéressent l’application se produisent (ex : “Préviens-moi lorsque cette charge dépasse 10 ?”).

A l’heure actuelle, WildCAT ne permet de connaître que l’état instantané du contexte : le système n’a pas de mémoire. Cela limite énormément sa capacité à raisonner sur le contexte puisqu’on ne peut pas détecter de tendances ou d’évolutions au cours du temps. Ainsi, le système est capable de prévenir l’application lorsque la charge dépasse la valeur 10, mais l’application n’a aucun moyen de savoir si ce dépassement est dû à une perturbation ponctuelle, un pic de charge temporaire ou une tendance à plus long terme, à moins de stocker et d’analyser elle-même les valeurs successives de la charge.

L’objectif de ce stage est d’étendre WildCAT pour supporter des requêtes et des notifications “temporelles”, c’est-à-dire sensibles à l’évolution du contexte au cours du temps afin de permettre à l’utilisateur de découvrir et de détecter non plus seulement les changements ponctuels du contexte, mais aussi de raisonner sur son évolution au cours du temps.

Travail à réaliser

  1. Puisqu’on veut pouvoir raisonner sur le passé du contexte et non plus seulement sur son état actuel, la première tâche consistera à étendre WildCAT pour qu’il puisse se souvenir des états intermédiaires par lequel le contexte est passé.
  2. Une fois ces données préservées, la seconde partie du travail consistera à étendre l’interface de WildCAT pour permettre à l’utilisateur de les utiliser de façon appropriée. Plus précisément, il s’agit d’étendre l’API de WildCAT et son langage de requêtes (basé sur des chemins similaires à ceux d’un système de fichier) pour pouvoir :
    1. désigner la valeur (resp. la séquence de valeurs) d’un (ensemble d’) élément(s) du contexte à un instant passé (resp. au cours d’un intervalle de temps passé) ;
    2. manipuler ces (ensembles de) valeurs en leur appliquant des opérateurs appropriés (ex : moyenne, min/max, dépassement de seuil (avec ou sans hystérésis), dérivée/intégrale, etc.). Lorsque l’utilisateur désire être notifié d’une condition exprimée de façon complexe, le système devra ré-évaluer continuellement la valeur de l’expression correspondante au fur et à mesure que le contexte évolue. Il est important que l’évaluation de ces expressions se fasse de façon incrémentale et non pas en recalculant toute l’expression à chaque nouvelle mesure.

Références

[1] WildCAT: a generic framework for context-aware applications, David, P.-C. and Ledoux, T., in Proceeding of MPAC’05, the 3rd International Workshop on Middleware for Pervasive and Ad-Hoc Computing, Grenoble, France, november 2005.
[2] Semantic Streams: a Framework for Declarative Queries and Automatic Data Interpretation, Whitehouse, K; and Zhao, F. and Liu, J., Microsoft Research, Technical Report MSR-TR-2005-45, apr. 2005
[3] Comparison of Representative Grid Monitoring Tools, Balaton, Z. and Kacsuk, P. and Podhorszki, N. and Vajda, F., Laboratory of Parallel and Distributed Systems (SZTAKI), Technical Report LPDS-2/2000, 2000
[4] A Survey on Context-Aware Systems, Baldauf, M. and Dustdar, S., Technical University of Vienna, Technical Report TUV-1841-2004-24, nov. 2004
[5] Context awareness in Amit, Adi, A. and Biger, A. and Botzer, D. and Etzion, O. and Sommer, Z., in Proceedings of the Autonomic Computing Workshop, Fifth Annual International Workshop on Active Middleware and Services (AMS’03), pp. 160-166, jun. 2003
[6] Astrolabe: A Robust and Scalable Technology for Distributed System Monitoring, Management, and Data Mining, Van Renesse, R. and Birman, K. P. and Vogels, W., in ACM Transactions on Computer Systems 21.2, pp. 164-206, may 2003
[7] Implementing Probes for J2EE Cluster Monitoring, Cecchet, E. and Elmeleegy, H. and Layaida, O. and Quéma, V., OOPSLA 2004 Workshop on Component And Middleware Performance, oct. 2004
[8] Monitoring Streams – A New Class of Data Management Applications, Carney, D. and Çetintemel, U. and Cherniak, M. et al., in Proceedings of the 28th Very Large Data Bases Conference (VLDB 2002), 2002
[9] TAG: a Tiny AGgregation Service for Ad-Hoc Sensor Networks, Madden, S. R. and Franklin, M. J. and Hellerstein, J. M. and Hong, W., in 5ht Symposium on Operating System Design and Implementation (OSDI 2002), dec. 2002
[10] Region streams: Functional macroprogramming for sensor networks, Newton, R. and Welsh, M., in Proceedings of the First International Workshop on Data Management for Sensor Networks (DMSN), Toronto, Canada, aug. 2004