Distributed & Fault-Tolerant Computing (discontinued) - University Collaborations

Carnegie Mellon University
       Ongoing   Priya Narasimhan
Deepti Srivastava
Tudor Dumitras
   Asit Dan
Daniela Rosu
Coordinated Live Upgrades with Performance and Availability Guarantees in Large Distributed Systems : The objective of this project is to develop and design system mechanisms that exploit information on system topology and service dependencies to enable the coordinated live upgrade of distributed services while meeting performance and resilience objectives set forth by business goals. To ensure minimal disruption on the application’s performance and resilience, the algorithm aims to coordinate the overall system-wide upgrade, at runtime (hence the term “live upgrade”), with little manual intervention, through a sequence of piece-wise, local upgrades at each service in the upgrade-ripple path.
  ·  Project Page

Columbia University
       Ongoing   Jason Nieh
   David Olshefski
Measuring and Controlling Client Perceived Response Time
  ·  Project Page

Imperial College of Science, Technology and Medicine
       Ongoing   Emil Lupu
   Seraphin Calo
, Jorge Lobo
Policy Analysis and Refinement
  ·  Project Page
  ·  Distributed Software Engineering Group

Royal Institute of Technology (KTH, Sweden)
       Ongoing   Rolf Stadler
   Nikos Anerousis
Giovanni Pacifici
Alaa Youssef
Scalable, self-organizing middleware in support of web applications
  ·  Project Page

Technion - Israel Institute of Technology
       Ongoing   Assaf Schuster
Konstantin Shagin
   Michael Factor
JavaSplit is a portable runtime environment for distributed execution of standard multithreaded Java programs on standard workstations. One unique feature of JavaSplit is its resilience to failures of participating workstations. This makes it is suitable for non-dedicated environments, in which a workstation may abruptly stop executing its part of a distributed computation. JavaSplit gains augmented computational power and increased memory capacity by distributing the threads and objects of an application among the available machines. Unlike previous works, which either forfeit Java portability by using a nonstandard Java Virtual Machine (JVM) or compromise transparency by requiring user intervention in making the application suitable for distributed execution, JavaSplit automatically executes standard multithreaded Java on any heterogeneous collection of Java-enabled machines. Each machine carries out its part of the computation using nothing but its local standard (unmodified) JVM. Neither the programmer nor the person submitting the program for execution needs to be aware of JavaSplit or its distributed nature.