ARC Project Documentation

The software

Overview

    Anonymous Remote Computing (ARC) is a programming paradigm for parallel and distributed computing on workstation clusters. It attempts to adapt itself to dynamically changing load patterns by utilizing the computation power of the neighboring machines in the network.

Components in ARC Installation

The ARC Kernel


The Kernel is organized into following 5 executable processes.

1. Join process:
    The join  process is not an RPC server. This is started when a new machine wants to join as an ARC participant. It is also started when the machine that had joined earlier fails and wants to rejoin the system. (A failure of the co-ordinator process on the machine is considered to be a failure of the machine as far as ARC computation is concerned.)

    There should be only one instance of the join process at anytime on a machine. The co-ordinators are distinguished based on the IP addresses of their host machines. Join process exits after creating the RPC coordinator server.

2. Coordinator process:
    This is an RPC server and it is started automatically by join process. This process coordinates all activities for a machine: such as fault tolerance, load adaptability, heterogeneous ARC executions, accepting and executing ARC functions and returning and accepting results. All these are bundled as a group of RPC services. Before the coordinator starts accepting requests, it joins the ARC system by making a broadcast from within an initialization RPC call made by the join process.

    The last coordinator joined becomes the leader. The role of the leader is to allocate a new id to a newly subscribing coordinator. Once a new coordinator joins, it becomes the new leader.

3. Monitor process : This process is started by the coordinator during its initialization from within an initialization RPC call by the join process. The main purpose of the monitor process is to detect the failure of coordinator.
4. Leave process: This process is not a RPC server and it is started whenever the co-ordinator leaves the ARC system. This can be considered as the graceful exit of the coordinator from the ARC ring. The leave process stops the coordinator and the monitor process.

5. ARC function executor process: This process is started by a coordinator for the execution of the ARC task received.
 

General Kernel Configurations



How to Run the Server



The User Library

    The user library is linked with user parallel programs and its purpose it to provide abstraction to user programs.

The Parser

    The programs written by users do not contain too much of implementation details parser converts the programs
 

Location of source code


The ARC Kernel

    Kernel source code is located in "arc/kernel": Within this directory, there are sub directories for each of the kernel components, such as co-ordinator, join process, monitor process.

The ARC Parser

     The user writes his program (.arc file) without worrying about the RPC invocation and task distribution details. It is the job of the parser to convert this program into a C program. The parser source can be found in "arc/parser"

The user library
    The user library provides API for the user program to interact with the coordinator. It is located in "arc/usr"

Example Programs

    There are some examples programs present in "arc/examples".
 

List of files in ARC Package
 
Kernel files:
join.c _loadTable.h generator.c defn.h
loadtable.c userInteraction_get_locks_available.c admin.c unsubscribe.c
coordinator.c _join.h Coordinator.h LockReqList.h
monitor.c failure.c LockList.h msgq.h
LockList.c LockReqList.c LockFunctions.c initialize.c
Table.c userInteraction_get_lock_inf.c userInteraction_misc.c userInteraction_postRIB.c
exeser depositLock.c removeLock.c
User Library:
arcGlob.c rpclib.c
Parser Files:
lex.yy.c parserFunc.cpp genFunc.cpp
parser.y stretchArray.cpp main.cpp

 


People involved in the project:

Students who have worked on this project: Yamini Sharma, Kalpesh Kapoor, Aruna L., Amit Soni, Satyashil Awadhare, Mayuresh Phadke, Satish Umale .

ARC is a paradigm for distributed computing. This documentation provides a designer's perspective on the ARC implementation.