Several Java bindings to the Message Passing Interface (MPI) software have been developed for high-performance parallel Java-based computing with message-passing in the past. None of them however addressed the issue of supporting transparent Java process migration. In this project, we developed a middleware, called M-JavaMPI, that runs on top of the standard JVM to support transparent Java process migration and communication redirection. The middleware allows Java processes to freely and transparently migrate between machines to achieve load balancing and to continue interprocess communication using MPI after migration. In M-JavaMPI, process migration is achieved by capturing execution context and restoring the execution context at the Java bytecode level using the Java Virtual Machine Debugger Interface (JVMDI). Data is captured and restored using the object serialization mechanism. The restorable Java-MPI API provides a unified communication abstraction layer for post-migration interprocess communication. Tests using a 16-node cluster have shown that our mechanism introduces little overhead while considerable performance gain can be achieved through migration.
Ricky K. K. Ma, Cho-Li Wang, and Francis C. M. Lau, ``M-JavaMPI : A Java-MPI Binding with Process Migration Support,'' The Second IEEE/ACM International Symposium on Cluster Computing and the Grid (CCGrid 2002), Berlin, Germany. (PDF) (PPT)
G-JavaMPI (A Grid version of M-JavaMPI)