thesis

Injection de fautes dans les systèmes distribués

Defense date:

Jan. 1, 2008

Edit

Institution:

Paris 11

Disciplines:

Authors:

Abstract EN:

In large scale distributed systems, the occurrence of faults is unavoidable. Being able to control faults (such as the crash of a process) is an important tool to deploy reliable distributed systems. In this thesis, we present FAIL (for Fault Injection Language), a language that permits to elaborate complex fault scenarios easily. It is possible to design probabilistic scenarios (for quantitative tests) as well as deterministic reproduciple ones. We then present FAIL-FCI (FAIL Cluster Implementation), our fault injector, that consists in a compiler, a runtime library, and a middleware platform for distributed fault-injection. FCI can be interfaced with various programming languages and does not require source code modification. We also present various tests we conducted on several distributed applications.

Abstract FR:

Dans un réseau constitué de plusieurs milliers d’ordinateurs, l’apparition de fautes est inévitable. Etre capable de tester le comportement d’un programme distribué dans un environnement où l’on peut contrôler les fautes (comme le crash d’un processus) est une fonctionnalité importante pour le déploiement de programmes fiables. Dans cette thèse, nous présentons FAIL (pour FAult Injection Language), un langage qui permet d’élaborer des scénarios de fautes complexes relativement facilement, tout en déchargeant l’utilisateur de l’écriture de code de bas niveau. En outre, il est possible de construire des scénarios de fautes probabilistes (pour des tests quantitatifs) ou déterministes et reproductibles (pour étudier le comportement de l’application dans des cas particuliers). Ensuite, nous présentons FCI (FAIL Cluster Implementation), notre injecteur de fautes, qui consiste en un compilateur, une bibliothèque d’exécution et une plate-forme pour l’injection de fautes dans des applications distribuées. FCI est capable de s’interfacer avec de nombreux langages de programmation sans nécessiter la modification de leur code source. Nous présentons également les tests que nous avons conduit sur différentes applications distribuées.