Section: Software
ProActive
Participants : B. Amedro, F. Baude, D. Caromel, V.-D. Doan, F. Huet [ correspondant ] , E. Isnard, M. Khan, V. Legrand, E. Mathias, P. Naoumenko, F. Perrina, M. Rivera, G. Sigety, F. Viale, F. Bratu, F. Fontenoy, O. Smirnov.
ProActive is a Java library (Source code under GPLv3 license) for parallel, distributed, and concurrent computing, also featuring mobility and security in a uniform framework. With a reduced set of simple primitives, ProActive provides a comprehensive API to simplify the programming of applications that are distributed on a Local Area Network (LAN), on cluster of workstations, Clouds, or on Internet Grids.
The library is based on an Active Object pattern that is a uniform way to encapsulate:
-
a remotely accessible object,
-
a thread,
-
an actor with its own script,
-
a server of incoming requests,
-
a mobile and potentially secure agent.
and has an architecture to inter-operate with (de facto) standards such as:
-
Web Service exportation (Apache Axis2 and CXF),
-
HTTP transport,
-
ssh, rsh, RMI/ssh tunnelling,
-
Globus: GT2, GT3, GT4, gsi, Unicore, ARC (NorduGrid)
-
LSF, PBS, Sun Grid Engine, OAR, Load Leveler
ProActive is only made of standard Java classes, and requires no changes to the Java Virtual Machine, no preprocessing or compiler modification; programmers write standard Java code. Based on a simple Meta-Object Protocol, the library is itself extensible, making the system open for adaptations and optimisations. ProActive currently uses the RMI Java standard library as default portable transport layer, but others such as Ibis or HTTP can be used instead, in an adaptive way.
ProActive is particularly well-adapted for the development of applications distributed over the Internet, thanks to reuse of sequential code, through polymorphism, automatic future-based synchronisations, migration of activities from one virtual machine to another. The underlying programming model is thus innovative compared to, for instance, the well established MPI programming model.
In order to cope with the requirements of large-scale distributed and heterogeneous systems like the Grid, many features have been incorporated into ProActive such as:
-
The deployment framework, which has been standardised by the ETSI, allows the deployment of ProActive, native including MPI applications on almost all Grid/cluster protocol: Windows CCS, Sun Grid Engine, LSF, OAR, PBS, SSH, RSH etc. It also supports all the major virtualization products such as VMware, Xen, KVM and Virtualbox;
-
The communication layer that can rely on RMI, HTTP, IBIS, RMI/ssl or RMI/ssh. In particular, this last protocol can cross firewalls in many cases;
-
Two mechanisms: the ProActive message routing protocol (PAMR), and another based on the use of the ssh proxy command mechanism have been designed to allow ProActive Programming deployment in the context of limited ingoing and outgoing network connections. This is particularly useful in the following cases:
-
GCM component support;
-
The graphical user interface IC2D offers many views of an application such as:
-
The ability to exploit the migration capability of active objects, in network and system management;
-
Object-Oriented SPMD programming model with its API;
-
Distributed and Non-Functional Exceptions handling;
-
Fault-Tolerance and Checkpointing mechanisms;
-
File Transfer capabilities over the Grid;
-
A job scheduler for scheduling many kinds of jobs like Java, ProActive, native, scripts executables, Matlab and Scilab programs, etc.
-
A resource manager able to manage various hosting machines, gained through SSH, PBS, Amazon EC2, GCMD or Virtual Machine.
-
ProActive connectors for remote JMX-based operations and an OSGi compliant version of the ProActive library. This involved the development of a “bundled” version of the library;
-
Remote data access for accessing data stored in a remote data space;
-
MPI code wrapping to deploy MPI application using the GCM deployment;
-
Remote debugging support;
-
Active object and component exposition as web services using Axis2 or CXF;
We have demonstrated on a set of applications the advantages of the ProActive library, and among others we are particularly proud of the following results, showing that portable and transparent Java code can compete with specific optimised approaches:
-
NQueen challenge, where we equalled the world record n=24 (227 514 171 973 736 solutions) in 17 days based on ProActive's P2P infrastructure (300 machines).
-
NQueen challenge, where we get the world record n=25 (2 207 893 435 808 352 solutions) in 6 months based on ProActive's P2P infrastructure using free cycles of 260 PCs.
ProActive is a project of the former ObjectWeb, now OW2 Consortium. OW2 is an international consortium fostering the development of open-source middleware for cutting-edge applications: EAI, e-business, clustering, grid computing, managed services and more. For more information, refer to [8] [47] and to the web pages http://www.objectweb.org and tp://proactive.inria.fr/ which list several white papers.
The following new features have been developed in 2009:
-
Dataspaces for remote data access
-
GCM Deployment now supports all the major virtualization products (VMware, Xen, KVM, Virtualbox)
-
New legacy and MPI code wrapping
-
New Web Service exportation for active objects and components (Apache Axis2 and CXF)
-
Remote debugging support
-
New PAMR (ProActive Message Routing) over SSH communication protocol
-
New RMI over SSL communication protocol, and use of the SSH proxy command
-
Distributed logging framework (log4j)
-
Annotation based static code checking
-
Enhanced HTTP support (Jetty based)