Vishwa 2.0: Dynamic Configuration of P2P Grid Middleware
High performance applications have varied requirements in terms of CPU, memory, network bandwidth etc. Application execution speed largely depends upon the middleware configuration. So, we need to have a middleware that can be configured depending on the application requirements. Such a middleware would enable efficient utilization of grid resources.
Vishwa 2.0 extends the existing Vishwa, which is a peer-to-peer scalable and reconfigurable grid computing middleware. It enriches the middleware with methodology & constructs for capturing application-level requirements. Thus it allows dynamic configuration of the middleware for applications built on top of Vishwa, a two-layered architecture. It provides easy and efficient Java-based programming environment for writing both SPMD & MPMD kind of applications. The key aspects of this work include a network class loader that loads necessary classes on demand over the network and a dynamic grid scheduler. This work also enables a customized way of specifying node capability metric.
The features of this new implementation are as follows
- New implementation is in Java(Update: Tutorial on running non-java(C,C++ etc.) tasks in Vishwa)
- Problem-based formation of structured overlay
- Easy to understand API’s for writing grid applications
- Dynamic scheduler
- Dynamic class loader
The following figure shows the prototype model of our system. The application interacts with the middleware through the programming constructs. Initially the application contacts one of the nodes in the unstructured layer referred as source node, for submitting the task. This node then creates the structured overlay based on application-specific requirements (viz. type of nodes, number of nodes, scheduler type etc). It then chooses a node in the structured overlay (based on taskId) and designates it as the task manager. It then submits the task to the task-manger. The task manager is responsible for efficient execution of the application on structured overlay irrespective of node failures. Finally the results of task execution are sent back to the client application.
A beginner’s introduction to Vishwa usage is available at “Getting Started”. A Vishwa programming tutorial for beginners is available at “Programming Vishwa”. Instructions for executing non-java applications on Vishwa grid is explained in “Executing non-java programs in Vishwa”. For a quick overview of steps involved, refer “Instructions Summary”.