11 research outputs found

    Experiences Implementing Efficient Java Thread Serialization, Mobility and Persistence

    Get PDF
    Today, mobility and persistence are important aspects of distributed computing- . They have many fields of use such as load balancing, fault tolerance and dynamic reconfiguration of applications. In this context, Java provides many useful mechanisms for the mobility of code via dynamic class loading, and the mobility or persistence of data via object serialization. However, Java does not provide any mechanism for the mobility/persistence of computation (i.e., threads). We designed and implemented a new mechanism, called , that is used to build thread mobility or thread persistence. Therefore, a running Java thread can, at an arbitrary state of its execution, migrate to a remote machine where it resumes its execution, or be checkpointed on disk for possible subsequent recovery. With our services, migrating a thread is simply performed by the call of our primitive, and checkpointing/recovering a thread is performed by the call of our and primitives. Several projects have recently addressed the issue of Java thread serialization, e.g., Sumatra, Wasp, JavaGo, Brakes, JavaGoX, Merpati. Some of them have attempted to minimize the overhead incurred by the thread serialization mechanism on thread performance, but none of them has been able to completely avoid this overhead. We propose a generic Java thread serialization mechanism that does not impose any performance overhead on serialized threads. This is achieved thanks to the use of type inference and dynamic de-optimization techniques. In this paper, we describe the design and implementation details of our thread serialization prototype in Sun Microsystems' JDK. We report on experiments conducted with our prototype, present a comparative performance evaluation of the main thread serialization techniques, and confirm the elimination of the performance overhead with our thread serialization mechanism. Document type: Repor

    Experiences Implementing Efficient Java Thread Serialization, Mobility and Persistence

    Get PDF
    Today, mobility and persistence are important aspects of distributed computing- . They have many fields of use such as load balancing, fault tolerance and dynamic reconfiguration of applications. In this context, Java provides many useful mechanisms for the mobility of code via dynamic class loading, and the mobility or persistence of data via object serialization. However, Java does not provide any mechanism for the mobility/persistence of computation (i.e., threads). We designed and implemented a new mechanism, called , that is used to build thread mobility or thread persistence. Therefore, a running Java thread can, at an arbitrary state of its execution, migrate to a remote machine where it resumes its execution, or be checkpointed on disk for possible subsequent recovery. With our services, migrating a thread is simply performed by the call of our primitive, and checkpointing/recovering a thread is performed by the call of our and primitives. Several projects have recently addressed the issue of Java thread serialization, e.g., Sumatra, Wasp, JavaGo, Brakes, JavaGoX, Merpati. Some of them have attempted to minimize the overhead incurred by the thread serialization mechanism on thread performance, but none of them has been able to completely avoid this overhead. We propose a generic Java thread serialization mechanism that does not impose any performance overhead on serialized threads. This is achieved thanks to the use of type inference and dynamic de-optimization techniques. In this paper, we describe the design and implementation details of our thread serialization prototype in Sun Microsystems' JDK. We report on experiments conducted with our prototype, present a comparative performance evaluation of the main thread serialization techniques, and confirm the elimination of the performance overhead with our thread serialization mechanism

    An Optimizing Java Translation Framework for Automated Checkpointing and Strong Mobility

    Get PDF
    Long-running programs, e.g., in high-performance computing, need to write periodic checkpoints of their execution state to disk to allow them to recover from node failure. Manually adding checkpointing code to an application, however, is very tedious. The mechanisms needed for writing the execution state of a program to disk and restoring it are similar to those needed for migrating a running thread or a mobile object. We have extended a source-to-source translation scheme that allows the migration of mobile Java objects with running threads to make it more general and allow it to be used for automated checkpointing. Our translation scheme allows serializable threads to be written to disk or migrated with a mobile agent to a remote machine. The translator generates code that maintains a serializable run-time stack for each thread as a Java data structure. While this results in significant run-time overhead, it allows the checkpointing code to be generated automatically. We improved the locking mechanism that is needed to protect the run-time stack as well as the translation scheme. Our experimental results demonstrate an speedup of the generated code over the original translator and show that the approach is feasible in practice

    Experiences implementing efficient java thread serialization, mobility and persistence

    Get PDF
    Today, mobility and persistence are important aspects of distributed computing. They have many fields of use such as load balancing, fault tolerance and dynamic reconfiguration of applications. In this context, Java provides many useful mechanisms for the mobility of code via dynamic class loading, and the mobility or persistence of data via object serialization. However, Java does not provide any mechanism for the mobility/persistence of computation (i.e., threads). We designed and implemented a new mechanism, called Java thread serialization, that is used to build thread mobility or thread persistence. Therefore, a running Java thread can, at an arbitrary state of its execution, migrate to a remote machine where it resumes its execution, or be checkpointed on disk for possible subsequent recovery. With our services, migrating a thread is simply performed by the call of our go primitive, and checkpointing/recovering a thread is performed by the call of our store and load primitives. Several projects have recently addressed the issue of Java thread serialization, e.g., Sumatra, Wasp, JavaGo, Brakes, JavaGoX, Merpati. Some of them have attempte

    Architecture de découverte des services web géolocalisés dans les réseaux mobiles de prochaine génération

    Get PDF
    Définition et concepts de base -- Éléments de la problématique -- Objectifs de recherche -- Esquisse méthodologique -- Principales contributions et originalité -- Plan de la thèse -- Découverte et distribution des services -- Synthèse des requis et défis de recherche -- Architecture de découverte de services géolocalisés proposée -- Principaux requis de l'architecture proposée -- Principes de l'architecture proposée -- Architecture du système GLWSA -- Formalisme mathématique du système GLWSA -- Implémentation du système GLWSA -- Architecture fonctionnelle du système GLWSA -- La couche des services publiés synchrones et d'écoute des messages asynchrones -- La couche de gestion des services -- La couche des classes de base -- La persistance dans le système GLWSA -- Extension du protocole MLP : MLPe -- Évaluation de l'architecture et résultats -- Évaluation des requis fonctionnels -- Évaluation de la collecte des donnés dynamiques de QoS

    An Autonomic Cross-Platform Operating Environment for On-Demand Internet Computing

    Get PDF
    The Internet has evolved into a global and ubiquitous communication medium interconnecting powerful application servers, diverse desktop computers and mobile notebooks. Along with recent developments in computer technology, such as the convergence of computing and communication devices, the way how people use computers and the Internet has changed people´s working habits and has led to new application scenarios. On the one hand, pervasive computing, ubiquitous computing and nomadic computing become more and more important since different computing devices like PDAs and notebooks may be used concurrently and alternately, e.g. while the user is on the move. On the other hand, the ubiquitous availability and pervasive interconnection of computing systems have fostered various trends towards the dynamic utilization and spontaneous collaboration of available remote computing resources, which are addressed by approaches like utility computing, grid computing, cloud computing and public computing. From a general point of view, the common objective of this development is the use of Internet applications on demand, i.e. applications that are not installed in advance by a platform administrator but are dynamically deployed and run as they are requested by the application user. The heterogeneous and unmanaged nature of the Internet represents a major challenge for the on demand use of custom Internet applications across heterogeneous hardware platforms, operating systems and network environments. Promising remedies are autonomic computing systems that are supposed to maintain themselves without particular user or application intervention. In this thesis, an Autonomic Cross-Platform Operating Environment (ACOE) is presented that supports On Demand Internet Computing (ODIC), such as dynamic application composition and ad hoc execution migration. The approach is based on an integration middleware called crossware that does not replace existing middleware but operates as a self-managing mediator between diverse application requirements and heterogeneous platform configurations. A Java implementation of the Crossware Development Kit (XDK) is presented, followed by the description of the On Demand Internet Computing System (ODIX). The feasibility of the approach is shown by the implementation of an Internet Application Workbench, an Internet Application Factory and an Internet Peer Federation. They illustrate the use of ODIX to support local, remote and distributed ODIC, respectively. Finally, the suitability of the approach is discussed with respect to the support of ODIC

    Agents mobiles coopérants pour les environnements dynamiques

    Get PDF
    A partir de l'étude de la mobilité dans les paradigmes de programmation pour les systèmes distribués et des différents architectures réseaux, et principalement celles sans-fils, nous avons pu identifier le problème de la gestion des unités mobiles (PDA, smartphone, ...) lorsque l'on souhaite les intégrer dans Internet. Leurs déplacements introduisent un fort dynamisme matériel qui ne permet plus d'utiliser les techniques classiques d'un internet et d'obtenir un système gérant globalement la localisation de toutes les unités. Cette absence de gestion globale remet en cause les méthodes classiques de conception fondées sur un système offrant une représentation stable de l'environnements. Dans ce contexte, nous avons étudié la conception basée sur les agents mobiles, programmes se déplaçant de site en site de manière autonome, afin de démontrer leur utilité dans des environnements dynamiques à l'échelle d'Internet, et ce, en l'absence d'un système capable de gérer la localisation globale. ABSTRACT : From the study of programming paradigms used in distributed systems and recent network architectures, especially wireless ones, we distinguish the problem of mobile unit management (PDA, smartphone, ...) when they are involved in the Internet. Their mobility introduces a high physical dynamism which leads to reconsider design patterns used in an intranet. Such systems do not allow to provide a global view of the distribution. This absence of global view implies to revisit classical design approaches based upon a system supplying a stable context representation. Therefore, we have studied a design approach based upon mobile agents, namely programs moving from site to site in an autonomous way. We demonstrate their usefulness in such dynamic environments at large scale in the Internet, in which there exits non global location service

    Investigating communicating sequential processes for Java to support ubiquitous computing

    Get PDF
    Ubiquitous Computing promises to enrich our everyday lives by enabling the environment to be enhanced via computational elements. These elements are designed to augment and support our lives, thus allowing us to perform our tasks and goals. The main facet of Ubiquitous Computing is that computational devices are embedded in the environment, and interact with users and themselves to provide novel and unique applications. Ubiquitous Computing requires an underlying architecture that helps to promote and control the dynamic properties and structures that the applications require. In this thesis, the Networking package of Communicating Sequential Processes for Java (JCSP) is examined to analyse its suitability as the underlying architecture for Ubiquitous Computing. The reason to use JCSP Networking as a case study is that one of the proposed models for Ubiquitous Computing, the ?-Calculus, has the potential to have its abstractions implemented within JCSP Networking. This thesis examines some of the underlying properties of JCSP Networking and examines them within the context of Ubiquitous Computing. There is also an examination into the possibility of implementing the mobility constructs of the ?-Calculus and similar mobility models within JCSP Networking. It has been found that some of the inherent properties of Java and JCSP Networking do cause limitations, and hence a generalisation of the architecture has been made that should provide greater suitability of the ideas behind JCSP Networking to support Ubiquitous Computing. The generalisation has resulted in the creation of a verified communication protocol that can be applied to any Communicating Process Architecture

    Agents mobiles natifs pour systèmes embarqués

    Get PDF
    L’objectif de ce projet de recherche est de développer une technologie d’agents mobiles pour systèmes embarqués. Dans un premier temps, une plateforme d’agents mobiles pour systèmes embarqués homogènes est réalisée et, ensuite dans un deuxième temps, une application d’informatique diffuse qui exploite la mobilité du contexte d’exécution est mise en œuvre pour valider cette plateforme. La mobilité d’un agent est définie comme suit: son exécution est interrompue sur le nœud courant, appelé nœud source, ensuite les données représentant l’état de l’agent sont transférées du nœud source vers un nœud destination et enfin, arrivé au nœud destination, son exécution se poursuit là où elle avait été interrompue sur le nœud de départ. Cette opération, appelée migration du contexte d’exécution, est intégrée aux fonctionnalités d’un noyau temps réel, permettant ainsi la mobilité d’agents logiciels au sein d’une grappe de systèmes embarqués homogènes. Les applications visées par le projet relèvent du domaine de l’informatique diffuse et plus particulièrement de son application à l’espace intelligent
    corecore