Reproducible testing of distributed software with middleware virtualization and simulation

P2P Grids are Grids organized into P2P networks where participant exchange computing time so as to complete computational tasks. Evaluating the performance of scheduling algorithms enables one to deploy those that are efficient. Performance is often evaluated experimentally or through simulation because these algorithms (typically heuristics) are too complex to model analytically. Testing the implementation of P2P Grid middleware before it is deployed is also important: Reproducing configurations or conditions that lead to unexpected outcomes is thus valuable. A P2P Grid environment exhibits multiple sources of failure and is typically dynamic and uncontrollable. Reproducing even basic behavior of Grid nodes in a controllable and repeatable manner is thus exceedingly difficult. Such lack of control over the environment is a major challenge in the software engineering of P2P Grid middleware [7]. Simulators have been proposed to evaluate the performance of scheduling algorithms, but are often limited in scope, reusability and accuracy, i.e. they rely on simplified models. We introduce a software engineering pattern - that we call code once, deploy twice - to both reduce the distance between simulated and implemented algorithms and reproduce, at will, Grid configurations and environments: A simulator implementation of a Grid architecture is built by virtualizing its middleware implementation. An immediate benefit is that most of the code can be reused between both implementations; only communications between Grid nodes, multithreading within Grid nodes and actual task execution are coded differently. As a derived benefit, most of the code of the middleware can be tested within the controlled environment of the simulator, before it is deployed as-is. Another benefit is high simulation accuracy. We describe the implementation of a P2P Grid following the code once, deploy twice pattern, that we believe is also relevant to other Grid types (certainly Volunteer Grids [5, 4] and Desktop Grids [22], and possibly Globus-based Grids [3]).

[1]  Kaizar Amin,et al.  Grid Computing for the Masses: An Overview , 2003, GCC.

[2]  Ian T. Foster,et al.  The Anatomy of the Grid: Enabling Scalable Virtual Organizations , 2001, Int. J. High Perform. Comput. Appl..

[3]  Sébastien Jodogne,et al.  Scheduling data-intensive bags of tasks in P2P grids with bittorrent-enabled data distribution , 2007, UPGRADE '07.

[4]  Douglas C. Schmidt,et al.  Skoll: A Process and Infrastructure for Distributed Continuous Quality Assurance , 2007, IEEE Transactions on Software Engineering.

[5]  Nazareno Andrade,et al.  Labs of the World, Unite!!! , 2006, Journal of Grid Computing.

[6]  David P. Anderson,et al.  BOINC: a system for public-resource computing and storage , 2004, Fifth IEEE/ACM International Workshop on Grid Computing.

[7]  Henri Casanova,et al.  SimGrid: A Generic Framework for Large-Scale Distributed Experiments , 2008, Tenth International Conference on Computer Modeling and Simulation (uksim 2008).

[8]  Francisco Vilar Brasileiro,et al.  Bridging the High Performance Computing Gap: the OurGrid Experience , 2007, Seventh IEEE International Symposium on Cluster Computing and the Grid (CCGrid '07).

[9]  Rahul Agarwal,et al.  Detecting Potential Deadlocks with Static Analysis and Run-Time Monitoring , 2005, Haifa Verification Conference.

[10]  Nazareno Andrade,et al.  Relative autonomous accounting for peer‐to‐peer Grids , 2007, Concurr. Comput. Pract. Exp..

[11]  Jarek Nabrzyski,et al.  Grid scheduling simulations with GSSIM , 2007, 2007 International Conference on Parallel and Distributed Systems.

[12]  Alexander Verbraeck,et al.  Single-threaded specification of process-interaction formalism in Java , 2004, Proceedings of the 2004 Winter Simulation Conference, 2004..

[13]  Satoshi Matsuoka,et al.  Performance Evaluation Model for Scheduling in Global Computing Systems , 2000, Int. J. High Perform. Comput. Appl..

[14]  Martin Quinson GRAS: a Research and Development Framework for Grid and P2P Infrastructures , 2006 .

[15]  Francisco Vilar Brasileiro,et al.  Improving Automated Testing of Multi-threaded Software , 2008, 2008 1st International Conference on Software Testing, Verification, and Validation.

[16]  J. Banks,et al.  Discrete-Event System Simulation , 1995 .

[17]  Henri Casanova,et al.  The SIMGRID Project Simulation and Deployment of Distributed Applications , 2006, 2006 15th IEEE International Conference on High Performance Distributed Computing.

[18]  Francisco Vilar Brasileiro,et al.  Multi-environment software testing on the grid , 2006, PADTAD '06.

[19]  Kavitha Ranganathan,et al.  Decoupling computation and data scheduling in distributed data-intensive applications , 2002, Proceedings 11th IEEE International Symposium on High Performance Distributed Computing.

[20]  Cyril Briquet,et al.  Description of a Lightweight Bartering Grid Architecture , 2006 .

[21]  Tobias Hoßfeld,et al.  Efficient simulation of large-scale p2p networks: packet-level vs. flow-level simulations , 2007, UPGRADE '07.

[22]  Ian T. Foster,et al.  GangSim: a simulator for grid scheduling studies , 2005, CCGrid 2005. IEEE International Symposium on Cluster Computing and the Grid, 2005..

[23]  Rajkumar Buyya,et al.  GridSim: a toolkit for the modeling and simulation of distributed resource management and scheduling for Grid computing , 2002, Concurr. Comput. Pract. Exp..

[24]  Gilles Fedak,et al.  The Computational and Storage Potential of Volunteer Computing , 2006, Sixth IEEE International Symposium on Cluster Computing and the Grid (CCGRID'06).