Dynamic conguration management in a graph-oriented Distributed Programming Environment
|
|
|
- Irene Norris
- 10 years ago
- Views:
Transcription
1 Science of Computer Programming 48 (2003) Dynamic conguration management in a graph-oriented Distributed Programming Environment Jiannong Cao a;, Alvin Chan a, Yudong Sun a, Kang Zhang b a Software Development and Management Lab, Department of Computing, The Hong Kong Polytechnic University, Hung Hom, Kowloon, Hong Kong b Department of Computer Science, The University of Texas at Dallas, Richardson, TX , USA Received 11 April 2001; received in revised form 11 July 2002; accepted 27 August 2002 Abstract Dynamic conguration is a desirable property of a distributed system where dynamic modication and extension to the system and the applications are required. It allows the system conguration to be specied and changed while the system is executing. This paper describes a software platform that facilitates a novel approach to the dynamically congurable programming of parallel and distributed applications and systems. This platform is based on a graph-oriented model and it provides support for constructing recongurable distributed programs. We describe the design and implementation of a dynamic conguration manager for the graph-oriented distributed programming environment. The requirements and services for dynamic reconguration are identied. The architectural design of a dynamic conguration manager is presented, and a parallel virtual machine-based prototypical implementation of the manager, on a local area network of workstations, is described. c 2003 Elsevier Science B.V. All rights reserved. 1. Introduction Programming on a distributed system for high-performance computing has been recognized as a much more dicult task than programming on a centralized system. In addition to important techniques such as task scheduling, remote invocation, interprocess communication and synchronization, conguration management of a distributed system has attracted much attention from researchers in recent years [5,11,16,17,27,28]. Corresponding author. Tel.: ; fax: addresses: [email protected] (J. Cao), [email protected] (A. Chan), [email protected] (Y. Sun), [email protected] (K. Zhang) /03/$ - see front matter c 2003 Elsevier Science B.V. All rights reserved. doi: /s (02)
2 44 J. Cao et al. / Science of Computer Programming 48 (2003) The software of a distributed system is constructed from collections of functional components that are bound together to interact and cooperate with each other. The software conguration of a distributed system is performed by the instantiation and binding of software components as well as through the allocation of components to hardware systems [18,30]. The consolidation of software components is an inherent characteristic of a distributed system that oers a exible environment to make modications and extensions to the system. Computers can be added to a distributed system when they are required. Similarly, software components can be recongured exibly within the system. For example, system reconguration is required for various purposes, such as the dynamic creation and replacement of instances of software components, evolution of a system with new functionality, and fault tolerance. There are two approaches to system conguration management: static or dynamic. In the static approach, a distributed application is built statically by loading the system components onto the hosts in a distributed system. All system components should be congured at the same time. If a modication is required, the system must rst be stopped, the conguration is then respecied, and nally the system is rebuilt. ADA [1] is an example of a programming language that is limited to static conguration management. This limitation is found because the component and conguration programming are not separated. Dynamic conguration management refers to the ability to change a system s con- guration while the system is running. When reconguration is required, a request is submitted to the conguration manager. The system conguration will be updated accordingly at run-time. Unlike the static approach, the entire system does not need to be rebuilt and only the part involved in the reconguration is modied. Thus, dynamic conguration management allows a new conguration to be adopted on-line, while part of the system may continue to execute. This exibility is denitely a desirable property for a large distributed system, especially when it would be either infeasible or uneconomic to shut down the entire application or system in order to change part of it. In this paper, we study dynamic conguration management in a graph-oriented distributed programming environment. We describe an integrated software platform, called distributed implementation of graphs (DIG) [7], which is based on a graph-oriented programming model. It provides a structural abstraction for recongurable distributed applications. As a tool for distributed programming, DIG provides a high-level logical graph construct and a collection of software facilities that support graph-oriented distributed programming. Graphs have been used in some programming languages as distributed data structures [10,29,32]. In contrast, in our model, graphs are used mainly as a distributed program structure, which consists of a collection of programming primitives that directly support computation and communication in a distributed program. Graphs can be used for naming, grouping, and conguring distributed tasks. They can also be used as a distributed computing framework for implementing uniform message passing and process coordination. Graph-oriented programming allows a programmer to concentrate on the logic of the application without having to be concerned with the low-level details associated with implementing and maintaining the underlying communication and coordination [8].
3 J. Cao et al. / Science of Computer Programming 48 (2003) The graph-oriented model, underlying the DIG environment, facilitates a novel approach to dynamic conguration management. The management mechanism, which is presented in this paper, provides a collection of programming primitives that can be invoked from a graph-oriented distributed application to dynamically modify and extend its structure and functionality. Dynamic conguration activities can be initiated by any distributed process in the system. Dynamic conguration is achieved by executing a sequence of primitives (which is called a conguration plan). A dynamic conguration manager is responsible for validating the conguration plan and coordinating the distributed processes to execute the plan. The rest of this paper is organized as follows. Section 2 discusses the research that is related to dynamic conguration management of distributed systems. Section 3 briey describes the graph-oriented distributed programming model. Section 4 presents the dynamic conguration management in the graph-oriented model. Section 5 describes the dynamic conguration manager and its prototypical implementation. Section 6 concludes the paper with a discussion of future work. 2. Related work The most important issues in dynamic reconguration include the properties of a program, the programming languages used and the underlying supporting environment, which facilitates arbitrary and unpredictable dynamic changes to distributed applications and systems. There has been much discussion about whether the description of the conguration should be included in the program or whether there should be a separate language to describe this aspect. Most existing programming systems integrate the description of the logical program structure into the programming languages (e.g., ADA [1], CSP [13,31], and SR [2,3]). Consequently, the interconnections among the program components are embedded at the programming level; hence, they do not support unpredictable changes in the conguration. Although some programming languages do support dynamic interconnections by allowing name passing [2] and some permit the dynamic creation of software components [1], they do not have any provision for accommodating unpredicted interconnections and unknown component types [19]. The distributed programming language and associated system that is called ARGUS [6] permits a large degree of dynamic reconguration. However, it does not enforce sucient separation between the component programming and the conguration. The statements about the conguration are embedded in the component programs. Such an approach makes it dicult to validate changes in the conguration. The conguration programming approaches [4,5,14,15,17,22,25,30] use conguration languages and associated environments to describe, construct and manage distributed software. They are based on the idea of separating the activities associated with component programming and the system conguration. They advocate having a dedicated conguration language that is separate from the language for component programming. Conguration languages specify the structure of a system as a set of components and their interconnections. Early systems [4,20] provide structuring mechanisms but they
4 46 J. Cao et al. / Science of Computer Programming 48 (2003) lack eective mechanisms for describing dynamic changes. They usually do not have the capability to program the conguration. The reconguration in these systems requires either a user s intervention or some additional mechanisms. The CONIC toolkit [24] provides two languages: a programming language that is used to program the functional modules and a conguration language that is used to specify the static con- guration of the system. It also allows the specication of the mapping of the logical structure to the physical structure. The conguration language is a declarative language that is used only to describe the structure of a system. It is dicult to specify an unpredicted (not preplanned) reconguration [23]. Although CONIC supports on-line reconguration by allowing the submission of a new conguration, it cannot be used for some kinds of reconguration. For example, it cannot be used in fault tolerant systems because this kind of reconguration requires the intervention of an operator. Conguration languages have been extended to describe dynamic changes in the con- guration. Darwin is a conguration language that is used for structuring parallel and distributed programs that are deployed in the REX environment [24]. It is an extension of the CONIC environment, which is described above. In addition to representing the static structures of software and hardware, Darwin is able to represent structures that undergo dynamic changes. Durra is a language for describing structures that is used for developing real-time distributed programs [4]. It provides a conguration language that can specify the preplanned reconguration of a system, which depends on the current conguration and the occurrence of certain events (usually in temporal expressions). A preplanned reconguration is specied by a temporal expression and a set of pairs of congurations that consist of an expected conguration and a new conguration. The system assumes that the expected conguration matches the current conguration of the system when the temporal expression is satised. As the conditions for a reconguration are specied in temporal expressions, it is not possible to specify more sophisticated conditions for a reconguration. Above all, the mechanism for specifying the reconguration becomes very cumbersome once the system allows a large number of possible congurations. Dynamic reconguration raises several issues in conguration management that are related to the preservation of the consistency and integrity of applications [18,26,23]. To ensure that a change is performed in a safe manner, which results in a consistent state for the modied system, the conguration management system needs to determine a safe reconguration in which a component has to be aware of the fact that it is being recongured. In Surgeon [15], with certain restrictions, software components can be prepared to perform a reconguration that involves replacement and replication. ARGUS [6] can support the replacement of a module without much participation from an application. 3. The graph-oriented distributed programming model Distributed implementation of graphs (DIG) is an integrated software platform that is based on a graph-oriented distributed programming model to provide support for
5 J. Cao et al. / Science of Computer Programming 48 (2003) constructing recongurable distributed programs. In a graph-oriented distributed model, a distributed program is dened as a collection of local programs (LPs) that can execute on multiple processors. The LPs represent the parallel computations. The communication between LPs is via message passing. A graph-oriented distributed program is dened as a logical graph, G(V; E), where V is a nite set of vertices and E is a nite set of edges. Each edge of the graph links a pair of vertices in V. A graph is directed if each edge is unidirectional. A graph is weighted if every edge is associated with a weight value. A graph is associated with a distributed program, which consists of a collection of LPs at the vertices with the messages that pass along the edges of the graph. Each vertex is bound to an LP and each edge denotes the relationship between a pair of LPs. The graph can represent a logical structure that is independent of the real structure of a distributed system, which can be used to reect the properties of the underlying system. For example, the weight on each edge may denote the cost or delay in sending a message from one site to another site within the system. A DIG-based program consists of a collection of LPs, which are built using the graph construct, and a main program. A graph construct consists of a directed conceptual graph (DGraph), an LP-to-vertex mapping, and an optional vertex-to-processor mapping. A graph construct is specied as follows: A conceptual graph: in which vertices represent the LPs of a distributed program and edges represent the relationships between LPs. A LP-to-vertex mapping: showing the binding of LPs to the vertices. An optional vertex-to-processor mapping: specifying the mapping of the logical graph to the processors of the underlying system. If this mapping is omitted, the run-time system will automatically decide the mapping. Using the graph construct that is dened above, an application programmer can create an instance of a graph construct using the following steps: Step 1: DGraph template declaration and instantiation. A DGraph is a template for a logical graph that is dened in the model. It denes a construct as a conceptual graph describing the logical relationships between LPs, and it instantiates a graph instance and associates a name with the instance. The structure of a DGraph is a general type of logical graph, which is described as a list of vertices connected with edges. The language description (given below) denes the structure of a DGraph in Backus Naur Form. DGraph-template ::= DGraph DGraph-name = {{ set-of -vertices }; { list-of -edges }} set-of -vertices ::= range-of -vertices vertex-list range-of -vertices ::= vertex no :: vertex no vertex-list ::= vertex-list ; vertex no vertex no list-of -edges ::= list-of -edges ; {vertex no; vertex no} e A DGraph is the type identier denoting the denition of a graph construct. The DGraph-name is an identier of a graph construct. The vertex no is an integer identier of a vertex.
6 48 J. Cao et al. / Science of Computer Programming 48 (2003) Step 2: DIG mapping. Map LPs to the conceptual vertices of a graph and the vertices to the underlying processors. The LP-to-vertex mapping is dened as a set of (vertex no, LP no) pairs. LV -mapping ::= LVMAP LV -map-name = { vertex-lp-pair } vertex-lp-pair ::= vertex-lp-pair ; { vertex no ; LP no } e LVMAP is the type identier of an LP-to-vertex mapping. LV-map-name is the name of a mapping instance. The LP named in LP no is mapped to the vertex identied by vertex no. The vertex-to-processor mapping is optional in the graph construct, which is specied by a set of (vertex no, processor no) pairs, in a similar form to the LP-to-vertex mapping. VP-mapping ::= VPMAP VP-map-name = { vertex-processor-pair } vertex-processor-pair ::= vertex-processor-pair ; { vertex no ; processor no } e VPMAP is the type identier of a vertex-to-processor mapping. VP-map-name is the name of a mapping instance. The vertex named in vertex no is mapped to the processor identied by processor no. Step 3: DIG construct binding. Given the declaration of a graph construct and its mappings, a graph instance can be created by binding the mappings to the graph. The CreateDIG function is used for this purpose. CreateDIG (DGraph-name; LV -map-name; VP-map-name; DIG-instance-name); DIG-instance-name is the identier of a le that species all of the information about the newly created instance. This information is useful in establishing the operating context for the LPs. LV-map-name is the name of an LP-to-vertex mapping and VPmap-name is the name of a vertex-to-processor mapping. The local operating context is created by SetUpLocalDIG (DGraph-name; DIG-instance-name; myvid); The myvid argument is the identier of an instance of an LP. As a result of a call to the SetUPLocalDIG function, a local representation of the distributed instance of a conceptual graph is created and the information required by the communication protocols is generated. Programming based on a graph-oriented model includes creating the graph construct and writing program code for the LPs using the graph primitives. A programmer can rst dene a graph construct that species the structure of a distributed program and then write code for the LPs. The programmer has enough exibility to exploit the semantics of the graph construct to deal with dierent aspects of distributed programming in an identical way. In this way, the programmer is saved from the burden of writing dedicated program codes for implementing message passing and task mapping,
7 J. Cao et al. / Science of Computer Programming 48 (2003) Coordinator 0 Coordinator (a) (b) Fig. 1. A graph of a hypercube and its spanning tree. and he=she can concentrate on designing the structure and the logic of the distributed program instead. The following example explains the basic approach for using our graph-oriented distributed programming model. Our example is the computation of a global sum that is based on a hypercube, as shown in Fig. 1(a). The hypercube is specied as the graph construct that is given below: (1) Conceptual graph: DGraph hypercube = {{0::7}; {{0; 1}; {0; 2}; {0; 4}; {1; 3}; {1; 5}; {2; 3}; {2; 6}; {3; 7}; {4; 5}; {4; 6}; {5; 7}; {6; 7}} }; This declaration denes a graph construct named hypercube. The rst component of the denition, {0:::7}, species all vertices in the graph. The second component species all edges, where each edge is dened as a pair of adjacent vertices. (2) LP-to-vertex mapping: LVMAP LVM = {{0; Coordinator }; {1; Participant }; {2; Participant }; {3; Participant }; {4; Participant }; {5; Participant }; {6; Participant }; {7; Participant }} }; This declaration species a mapping that is named LVM, which maps between the vertices and the LPs. In our example, there are two types of LPs: the Coordinator receives and distributes the global sum, and the Participant calculates and submits the partial sums for a vertex and then collects the nal global sum from the Coordinator. One approach to compute the global sum is based on deriving a spanning tree from the hypercube, as shown in Fig. 1(b), and then performing the calculation based on that tree [7]. This is an ecient algorithm because the number of messages that are
8 50 J. Cao et al. / Science of Computer Programming 48 (2003) sent between the processes is the minimum. The following text describes the program codes of the Coordinator and Participant. Coordinator() { float global sum; MESSAGE message, re message; int myvid; SetUpLocalDIG(hypercube, GlobalSum, myvid); SpanningTree(hypercube, myvid, hypercube st); PrepareMessage(message, myvid, GLOBALSUM, No Data); SendToChildren(hypercube st, message); global sum = my value; while (ReceiveFromChildren(hypercube st, re message, PARTIALSUM )) global sum = global sum + remessage.data; PrepareMessage(message, myvid, RESULT GLOBALSUM, global sum); BroadcastMessage(hypercube st, message); } Participant () { float partial sum, global sum; MESSAGE message, re message; int myvid; SetUpLocalDIG(hypercube, GlobalSum, myvid); partial sum = my value; ReceiveMessage(hypercube st, re message, GLOBALSUM ); If (!IsLeaf(hypercube st, myvid) ) { PrepareMessage(message, myvid, GLOBALSUM, No Data); SendToChildren(hypercube st, message); While (ReceiveFromChildren(hypercube st, re message, PARTIALSUM )) partial sum = partial sum + remessage.data; } PrepareMessage(message, myvid, PARTIALSUM, partial sum); SendToParent(hypercube st, message); ReceiveMessage(hypercube st, re message, RESULT GLOBALSUM ); global sum = re message.data; } The spanning tree can be derived automatically using the SpanningTree() primitive in the Coordinator, which is then implemented by the underlying support system of the DIG model. Each LP starts by creating a local operating context for its computation.
9 J. Cao et al. / Science of Computer Programming 48 (2003) This is done by calling the primitive SetUpLocalDIG(DGraph-name, DIG-instancename, myvid). Each LP has a unique identier called myvid. The myvid identier is bound to a processor ID in the vertex-to-processor mapping. The PrepareMessage() primitive is used to compose a message by assigning it the ID of the sender, a message type and some other parameters. A call to SendToChildren() with a given message causes that message to be sent over every edge emanating from a given vertex. Receive- FromChildren() collects the messages from all edges emanating from a given vertex; one message is collected per edge. The vertex-to-processor mapping, VPM, can also be specied in the graph construct. This mapping is optional. However, if it is missing, a default mapping will be generated. Given the conceptual graph and the LP-to-vertex mapping, the function CreateDIG(hypercube, LVM, GlobalSum ) can be called to combine the graph declaration and the mapping and produce an instance, called GlobalSum, of the graph construct. A rich set of primitives is provided for performing various operations on the graphs. The operations on the graphs can be categorized into several classes [8], including communication among the vertices, subgraph generation, graph update and query. Using the graph-oriented model, a programmer can simply invoke such operations and base the calculation on the resulting subgraph and use of the primitives (such as Send- ToChildren, ReceiveFromChildren, SendToParent, and ReceiveFromParent). The program code that is shown here is based on the C language. However, the programming language, which is used to encode the graph construct, is not important. Our model is applicable to other programming languages. The realization of a graph-oriented model depends on the DIG, which provides a logical abstraction of the underlying operations. Also, the following functions need to be implemented: Distribution of a graph: This is the representation of a graph in a distributed environment. A graph can be either directed or undirected. The distribution of a graph can be implemented on the processors in three ways: centralized, partitioned, and replicated. Implementations of the operations on the graph will vary for dierent forms of distribution of the graph. Mapping: This is the method for mapping a graph to the underlying processors of a network. If a user species the mapping, the solution is straightforward. Otherwise, the run-time system will need to explore task-scheduling techniques to map the graph to the processors so that it makes ecient use of resources and=or speeds up the computations of the system. Operationson a graph: These are the required operations on a graph and the distributed implementation of those operations needs to be designed. Our graph-oriented programming model supports message passing and other useful inter-process communication (IPC) abstractions (such as ports, binding and group communication) that are used in many existing systems. In addition to the graph-oriented communications, the model also allows a programmer to exploit the graph construct to deal with other aspects of distributed computing. For example, a graph can be modied dynamically to reect the reconguration of the system. In the rest of this paper, we focus on the properties and operations in our model for the dynamic conguration of a system.
10 52 J. Cao et al. / Science of Computer Programming 48 (2003) Dynamic conguration management in the graph-oriented model 4.1. Dynamic conguration model With DIG, a programmer can construct a distributed program using a logical graph. Both the structure of the graph and the structure of the underlying distributed system can be changed dynamically. Furthermore, the mapping of LPs to physical processors can also be changed dynamically. In this section, we describe the model in DIG for dynamic conguration. A dynamic conguration model species the methodology for dynamic reconguration and the required properties of the system components and the conguration system. The dynamic conguration model is actually built on the graph-oriented programming model and it provides special primitives and functions for conguration. To achieve dynamic reconguration, the design of software components, the programming language and the supporting environment must possess special properties [19,23]. The term software component refers to a part of the software of a distributed system. A component type is the program code that is executed by a component instance [23]. Many component instances may be created from a particular component type. A component encapsulates its local data and functions, and it can communicate with other components through well-dened interfaces. In our conguration model, the instances of software components correspond to the LPs that are described as part of the graph-oriented programming model. The components can be coded in a conventional programming language such as C. The DIG system is implemented as a set of library routines for a conventional programming language. An LP has a format that consists of the statements of the language and additional DIG functions. The invocation of a function that is implemented by an LP is done by passing messages that contain the specied function name. The systems that can accommodate reconguration usually have the properties of modularity and context independence. Context independence means that all interactions of a software component with its environment are explicitly described in the interface of that component [18]. In particular, the information about the conguration should be separated from the components. A software component is required to be context independent to ensure uniformity in its behavior in dierent congurations. This separation of the congurative information from the components of the system provides exibility for the software reconguration being manipulated at run-time, thereby minimizing the inuence on the components uniformity. Therefore, when a change in the conguration occurs, the components do not need to stop execution, and only the separate congurative information has to be updated. In the following text, this congurative information is referred to as conguration specication. The components should support modularity of the software. That is, the components can be written and compiled independently. All of the statements in the program code within a component should only refer to local objects and not refer to any shared objects, since such a reference would limit the exibility of adding and removing components. The direct naming of component modules and communication entities must be avoided in any component, since it would limit the exibility of the reconguration.
11 J. Cao et al. / Science of Computer Programming 48 (2003) Instead, the names of components and communication entities should be specied in the conguration specication. Otherwise, when reconguration is needed, a programmer would have to stop an application and then edit the program code and compile it, thus making dynamic reconguration impossible. A conguration specication is usually written in a special language called the con- guration language, which is also used to write the specication for a reconguration of a system. This language should also allow the specication of unplanned recongurations to be made while the system is executing. The graph-oriented distributed programs exhibit the properties that are described above. Based on the graph-oriented model, our approach to dynamic reconguration is to incorporate the conguration specication into the program design, eliminating the dependency of the code on the congurative information. Both the software components and their conguration are specied using a conventional programming language that is extended with library primitives. The conguration specication contains the denition of the context, a description of the interconnections among LPs and the optional allocation of the LPs to processors. Reconguration is also described using the same language. The modularity of the specication [19] is achieved by the logical graph construct. The communication and synchronization between the LPs are programmed in terms of the logical graph (using functions such as SendToChildren, ReceiveFrom- Children, SendToParent, and ReceiveFromParent) rather than by indicating the explicit identiers of the LPs. For dynamic reconguration, this approach allows the IPC interface (each provided at a particular vertex) to be decoupled from the actual LPs that respond to the messages. Each LP at a vertex refers internally to its peers during communication using only local names that will remain unchanged under dierent con- gurations of the system. Furthermore, the mapping of a logical vertex to a physical processor is performed by the underlying support system and the mapping is transparent to an application. Dynamic conguration occurs for two main reasons: operational and evolutionary requirements [23]. The requirement for operational changes, such as dynamic expansion of worker processes (e.g., in a tree structure) in a master slave paradigm, can be programmed into a distributed program because this requirement is indicated at the time the program is designed (see the rst example in Section 5.2). However, evolutionary changes, such as expanding or adding new functionality or handling load imbalance and faults, cannot be predicted when a program is developed. The main dierence between the two requirements lies in whether the conguration specication of a distributed program has to be modied at run-time to reect the reconguration of the system. For the operational requirement, the conguration specication remains unchanged, whereas for the evolutionary requirement, the operations for conguration must be applied to the original specication to change its contents and also applied to change the distributed program. Our model supports both operational and evolutionary changes. We have anticipated an incremental dynamic conguration process that can deal with an arbitrary unpredicted modication and an extension to the functionality without rebuilding the entire system. In DIG, a reconguration can be specied as a structural modication to the system by specifying the replacement, addition and reconnection of components. For
12 54 J. Cao et al. / Science of Computer Programming 48 (2003) example, we could expand the size of the hypercube dynamically by adding more vertices to the logical graph and by binding appropriate instances of the LPs to the vertices. The following primitives are provided for dynamic conguration: 1. int AddVertex(int vertex no, char graph name); // add a vertex to a graph. 2. int DelVertex(int Vertex no, char graph name); // delete a vertex from a graph. 3. int AddEdge(int start vertex, int end vertex, char graph name); // add an edge between two vertices in a graph. 4. int DelEdge(int start vertex, int end vertex, char graph name); // delete the edge between two vertices from a graph. 5. int MapLptoVertex(int LP no, int vertex no, char graph name); // map a local program to a vertex. 6. int UnMapLptoVertex(int LP no, int vertex no, char graph name); // remove the mapping of a local program to a vertex in a graph. 7. int MapVertextoHost(int vertex no, char hostname); // map a vertex to a processor. 8. int UnMapVertextoHost(int vertex no, char hostname); // remove the mapping of a vertex to a host. In evolutionary changes, the sequence of operations to change a system can be applied progressively. Accordingly, the state of the conguration has to be considered and modeled. The operations must be specied in the context of the conguration states, which can be maintained in a (conguration) database by the dynamic reconguration manager A framework for dynamic conguration management Because of the varied relationships among the interactions of the components and the requirements for consistency, a dynamic conguration management system is needed to support the required dynamic changes to distributed applications and systems. Fig. 2 shows our framework for dynamic reconguration. The shaded area shows the workow of the dynamic reconguration on a distributed system. The requests for reconguration are sent to the validation module, which checks the validity of the requests. The validation module needs to inquire about the congurative information that is maintained in the conguration specication database. If the sequence of requests is valid, the recon- guration module will update the corresponding graph construct and the conguration specication. An essential component of dynamic conguration management is dynamic recon- guration manager, which is responsible for validating a reconguration plan and for coordinating the distributed processes to execute the plan. The manager maintains a database of the congurative information associated with the distributed programs. Initially, when a distributed program is constructed, the dynamic reconguration manager reads and checks the content of the conguration specication and then builds the graph construct accordingly. Multiple instances of a graph construct can coexist where each one is associated with its own conguration specication. During the execution of a distributed program, the manager is ready to accept requests for reconguration that are specied in a reconguration plan and then validate and process the plan.
13 J. Cao et al. / Science of Computer Programming 48 (2003) Reconfiguration Request Validated Request Validation Current Configurative Information Graph-Oriented Configuration Specification Database Reconfiguration Update the Graph Construct and Configuration Specification Graph Constructs Fig. 2. The dynamic reconguration framework. Fig. 3 shows the component modules of the dynamic reconguration manager. The communication module is responsible for the interactions between the initiating program component and the LPs. It receives the requests for reconguration and returns the processing status to the appropriate module of the calling program after the recon- guration has nished. The conguration specication module reads the congurative information from the conguration database and updates the conguration specication in the database according to the reconguration that was performed. The validation module performs the validation operations for the requests, as described in Fig. 2. This validation includes checking for the existence of a vertex or an edge that is planned to be deleted, maintaining a causal ordering among the requested changes, etc. The following primitives have been provided for validation: 1. boolean IsGraphExist(char graph name); // check whether a specifiedgraph exists 2. boolean IsVertexExist(int vertex no, char graph name); // check whether a vertex exists in a graph 3. boolean IsMaxVertexExist(char graph name); // check whether a maximum number of vertices already exist in a graph. 4. boolean IsEdgeExist(int start vertex, int end vertex, char graph name); // check whether an edge exists in a graph.
14 56 J. Cao et al. / Science of Computer Programming 48 (2003) Configuration Specification Module Read in Configuration Spec. & Build Graph Contructs Update Configuration Spec. Reconfiguration Module Accept valid change requests Update Graph Constructs Validation Module Validate requests Communication Module Receive requests Send processing result Operation dispatcher Reconfiguration Requests Fig. 3. Component modules of the dynamic reconguration manager. 5. boolean IsLPtoVertexExist(int LP no, int vertex no, char dgraph instance name); // check whether a LP to vertex mapping exists in a graph instance. 6. boolean IsInsExist(int LP no, char dgraph instance name); // check whether a LP instance exists in a graph instance. 7. boolean IsInsMapped(int LP no, char dgraph instance name); // check whether a LP instance is mappedto a vertex in a graph. 8. boolean IsMaxInsExist(char dgraph instance name); // check whether a maximum number of LP instances already exist in a graph.
15 J. Cao et al. / Science of Computer Programming 48 (2003) boolean IsVertexValid(int vertex no); // check whether a vertex has a validid ranging from zero to a maximum number. 10. boolean IsInsValid(int LP no); // check whether a LP instance has a validid ranging from zero to a maximum number. 11. boolean IsVertexMapped(int vertex no, char dgraph instance name); // check whether a vertex has been mappedto a processor. After the validation, the reconguration module executes the valid reconguration and updates the graph construct. An important requirement of the reconguration management process is to ensure that a dynamic change is performed in a safe manner to maintain a consistent state for the modied system. Standard consistency constraints, which are independent of the application, can be built into the validation module of the reconguration manager. However, it is believed, in general, that the consistency cannot be preserved without the support of the application programs that form the base-level components [17]. Therefore, the consistency constraints cannot simply be added as a management facility to an existing distributed system. We will not discuss this issue further in this paper. 5. A prototypical implementation We have implemented a prototype of the graph-oriented distributed programming model [8]. This implementation is on top of a parallel virtual machine (PVM) [12] over a network of SUN workstations. The graph construct is provided to the programmers as a library of C routines. A distributed representation of a directed graph is used [9]. Each graph is assigned an identier that is unique within the entire system, which is used to invoke the operations on the graph. Multiple graphs can coexist in the system and be run in parallel. DIG does not attempt to completely hide the message-passing paradigm at the level of program. A programmer still has a message-passing view of the system. However, this is an abstract view that is dened in terms of the edges in a logical graph. The programs that are based on the DIG model are bound to the vertices of a graph and integrated with the distributed graph operations and inter-vertex communications A central-server-based implementation Based on the prototypical implementation of DIG, a prototype of the graph-oriented dynamic conguration management platform has been developed. A PVM is used as a virtual machine-conguration platform and as the communication library in the implementation of our example DIG model. A kernel of the DIG runtime system is run at each site on top of a PVM, as shown in Fig. 4. Programs can simply call DIG functions to interface with our platform using the daemons of a PVM. A PVM provides a unied framework for developing parallel programs in an ecient and straightforward manner. It provides an abstraction for representing a collection of heterogeneous computer systems as a single virtual parallel machine. Moreover,
16 58 J. Cao et al. / Science of Computer Programming 48 (2003) Central Config Server Graph-oriented Progamming Primitives DIG Runtime PVM SUN OS 4.2 Fig. 4. The implementation architecture. Fig. 5. Infrastructure of the dynamic reconguration management. it handles message routing, data conversion and task scheduling across a network of heterogeneous computers. The user can write a collection of cooperative processes (called tasks) to access the resources of a PVM using a library of standard interface routines. The tasks on a PVM have arbitrary control that allows tasks to start or stop and it also allows computers to be added or deleted from the virtual machine at any time during the execution of an application. These properties make a PVM a useful tool for developing our graph-oriented distributed programming platform. In addition, with our platform being implemented on top of a PVM, it is also easy to port our platform to dierent hardware environments. The prototype of the dynamic reconguration management process is implemented in a client-server infrastructure. Fig. 5 depicts this client-server infrastructure. The central server maintains the conguration specication of graph instances. The validation
17 J. Cao et al. / Science of Computer Programming 48 (2003) Stub Function Central Server AddVertex(1, GRAPH_1) Identify the central server; t Wait for request; Receive the message; Look up message header; TIME Put the code of adding a vertex to the message header; Marshal arguments in the message; Send message to the central server; t Identify the operation; Select and call Do_AddVertex(); Do_AddVertex unmarshals arguments and calls AddNode(1, GRAPH_1); Wait for result; Receive the message; t+i Add the vertex to the graph ; Unmarshal the result message; Update graph construct and configuration specification; Return the result to user program; Marshal the result into a message; t+i Send the result message to stub; Fig. 6. The interaction between a client s stub function and a central server. and execution of a reconguration plan is performed as a client-server process, where the central server receives the requests from the program modules of a distributed application and initiates the reconguration. The invocation of the reconguration functions on the central server is implemented using the primitives provided by a PVM. The central server blocks and waits for the incoming requests when it is in idle. When a reconguration is initiated, a function call is made to a stub function, which in turn invokes the management function at the central server. When a reconguration is completed, the server sends the result back to the stub function. Fig. 6 illustrates the interaction between the requesting program and the central server for a reconguration operation that involves adding a vertex to a graph.
18 60 J. Cao et al. / Science of Computer Programming 48 (2003) main main child (a) (b) Fig. 7. The process of creating the binary tree Sample applications The graph-oriented method for dynamic reconguration is powerful enough to model and implement various types of parallel and distributed programs. One of the popular parallel programming paradigms is called tree computing. In this paradigm, local processes in a parallel program are spawned dynamically and associated with a tree-like structure. The establishment of this tree structure results from the parent child relationships between the processes. Such a tree-computing model is suitable for applications with an unpredictable workload (i.e., the total workload of a program is unknown before execution). One sample application of tree computing is the Split-Sort-Merge algorithm. In this parallel sorting algorithm, one process contains a list of entities that are to be sorted and it spawns a second process and sends it half of the list. After the two sublists have been sorted separately, the rst process is then responsible for merging the two sublists to produce the nal sorted list. This split and merge process can be carried out recursively at dierent component processes. The spawning procedure continues until a tree with an appropriate depth is formed. Then, each process sorts its own sublist and a merge phase follows in which the sorted sublists are transmitted upwards along the tree branches with the intermediate merges being done at each appropriate node. In this example, the main program is responsible for calling the primitives for graphoriented reconguration to create an initial graph construct of the binary tree. Another type of local program is the child process, which may create vertices dynamically for the binary tree by sending requests for reconguration to the central server to change the conguration of the system during execution. The execution ow of the Split-Sort- Merge program is as follows. The main() program calls create binary tree( conf spec, binary tree ), where conf spec is the le containing the conguration specication and binary tree is the name of the graph construct that is built using the information from conf spec. Fig. 7(a) shows the initial graph that is described by conf spec. As the main program executes, vertex 1 is added to the tree. An instance of the LP called child is added and mapped to vertex 1, which is then mapped to a host. An edge is added from vertex 0 to vertex 1. Now, a tree with two vertices has been created, as shown in Fig. 7(b).
19 J. Cao et al. / Science of Computer Programming 48 (2003) # GRAPH NAME : binary_tree [VERTEX] 0,1,2,3,4,5,6 [EDGE] 0,1;0,2;1,3;1,4;2,5;2,6 [LP] 0,main;1,child;2,child;3,child;4,child;5,child;6,child [LPtoVERTEX] 0,0;1,1;2,2;3,3;4,4;5,5;6,6 [VERTEXtoHOST] 0,lisa;1,marge;2,homer;3,maggie;4,orion;5,mecury;6,aries Fig. 8. Conguration specication for the binary tree. main 0 child 1 2 child child child child child Fig. 9. The logical structure of the binary tree. The main program continues to add vertex 2. At the same time, the child that is bound to vertex 1 begins its execution, which will add two more vertices, 3 and 4, to the logical graph. The process continues until the list that is to be sorted at each vertex is short enough. In this example, a two-level binary tree composed of 7 nodes and 7 LPs is created. Fig. 8 shows the content of the nal le for the conguration specication and Fig. 9 shows the logical structure of the binary tree. This example shows an operational change in the conguration. The same principle is also suitable for performing an evolutionary change. Let us consider another example, the distributed optimization problem (DOP). The objective of a discrete optimization problem is to nd an optimal solution from a nite or innite (countable) set of solutions that satisfy the specied constraints. Problems in various elds can be categorized as DOPs, for example, planning and scheduling problems, the optimal layout of very large-scale integration chips, robot motion planning, test-pattern generation for digital circuits, logistics and control [21]. DOPs are usually solved by search algorithms that evaluate a set of candidate solutions to nd one that satises the problem-specic criteria. In most DOPs, the solution set is so vast that it is not feasible to enumerate
20 62 J. Cao et al. / Science of Computer Programming 48 (2003) Terminal vertex (no successor) 0 Non-terminal vertex Fig. 10. The graph structure of a DOP. through all candidates to determine the optimal solution. Thus, the solution space of a DOP problem can be represented as a tree. The DOP problem is solved by nding an optimal solution along a path in the tree. The tree can be expanded dynamically by generating new nodes at the ends of the existing branches to represent new candidate solutions during the search. Each new node that is generated leads to an unexplored part of the search space. The expansion and search of the solution space continues on the tree until an optimal solution has been found. In the parallel search of DOPs, the search space is distributed onto multiple processes. Each process searches a subtree that can be expanded at run-time without any interaction with the other processes. Since the search space is generated dynamically, it is dicult to estimate the size of the search space before execution. Hence, it is impossible to partition the search space evenly among the processes in advance. DOPs can be represented in our DIG model. The dynamic reconguration of the model enables the evolution of the tree to reect the dynamic expansion of the search space. This is an evolutionary change. Fig. 10 shows the graph construct (i.e., a tree) of a DOP. In the tree, the root (vertex 0) initially holds the whole search space. If the initial workload is high, the root node can generate new vertices to do parallel search on the subspaces. During the search, the workload on any vertex may become high due to the expansion of the search space. An overloaded vertex can spawn a new vertex to process part of the subspace. A new vertex is then bound to a new process that runs on an additional processor to perform the search on the subspace. The tree will
21 J. Cao et al. / Science of Computer Programming 48 (2003) not be expanded further when the workload on each vertex stays at a reasonable level (i.e., below a threshold). In Fig. 10, eventually 18 vertices are generated to perform the parallel search in the solution space. In addition to the dynamic expansion of a graph, the workload can be scheduled among the processes dynamically. When a process runs out of work, it can also request extra work from another process that has an unexplored subspace. The requesting process submits a request for more work to the dynamic reconguration manager. The manager examines the status of all processes and transfers a portion of an unexplored subspace from an appropriate process to the requesting process. If an optimal solution is found or the whole solution space is exhausted, the computation terminates on all processes. 6. Conclusions In this paper, we have described a graph-oriented model, called distributed implementation of graphs (DIG), for programming distributed applications. We have discussed dynamic conguration management in the proposed distributed programming environment. We have also described the design of a graph-oriented dynamic reconguration manager and presented a prototypical implementation on a parallel virtual machine. Examples of distributed programs have been constructed to illustrate implementations of the DIG model. We believe that the proposed framework provides a novel approach to programming recongurable distributed applications and systems. It is a powerful system for modeling the dynamic features of various kinds of distributed and parallel programs. Some important issues have not been addressed in our work. For example, the ability to compose a system hierarchically from the component interfaces is the main underlying principle of the system conguration and reconguration. The recursive building of a binary tree in the split-sort-merge program demonstrates the hierarchical construction of a graph structure. The synchronization of the dynamic reconguration operations on a logical graph is essential to ensure the consistency of the application. The synchronized interaction between a client stub and a central server in the prototypical implementation demonstrates this capability of our model. Even so, a more comprehensive mechanism is required to support system-wide synchronization. In our future work, we are now investigating the issues associated with ensuring safe and consistent transitions of the states of the system during the reconguration. For example, determining the reconguration region, checking the states of the local programs (LPs) and transferring the states from an old version of an LP to a new one, and the transparent update of the conguration specication while the system continues execution. Acknowledgements This research was partially supported by a grant from the University Grant Council of Hong Kong. We would like to thank Mr. K.W. Yu for helping us in the implementation of the prototype.
22 64 J. Cao et al. / Science of Computer Programming 48 (2003) References [1] ADA, Reference Manual for the Ada Programming Language, Proposed Standard Document, USA Deparment of Defence, July [2] G.R. Andrews, The distributed programming language SR-mechanisms, design and implementation, Software: Practice Experience 12 (8) (1982) [3] G. Andrews, R. Olsson, M. Con, I. Elsho, K. Nilsen, T. Purdin, G. Townsend, An overview of the SR language and implementation, ACM Trans. Programming Languages Systems 10 (1) (1988) [4] M. Barbacci, D. Doubleday, M. Gardner, R. Lichota, C. Weinstock, Durra: a task-level description language reference manual, Technical Report, 1991, available from documents/91.reports/91.tr.018.html. [5] T. Batista, N. Rodriguez, Dynamic reconguration of component-based applications, in: Proc. 5th Internat. Symp. on Software Engineering for Parallel and Distributed Systems, Limerick, Ireland, June 2000, pp [6] T. Bloom, B. Day, Reconguration and module replacement in Argus: theory and practice, IEE Software Eng. J. 8 (2) (1993) [7] J. Cao, L. Fernando, K. Zhang, DIG: a graph-based construct for programming distributed systems, in: Proc. 2nd Int. Conf. on High Performance Computing, New Delhi, India, December 1995, pp [8] J. Cao, L. Fernando, K. Zhang, Programming distributed systems based on graphs, in: M. Orgun, E. Ashcroft (Eds.), Intensional Programming I, World Scientic, Singapore, 1996, pp [9] J. Cao, Y. Liu, L. Fang, L. Xie, Portable runtime support for graph-oriented parallel and distributed programming, in: H. Sudborough, B. Monien, D. Hsu (Eds.), Proc. Internat. Symp. on Architectures, Algorithms, and Networks (ISPAN 2000), IEEE Computer Society Press, Dallas, USA, December 7 9, 2000, pp [10] N. Carriero, D. Gelernter, J. Leichter, Distributed data structures in Linda, in: Proc. 13th ACM Symp. on Principle of Programming Languages, St. Petersburg, FL, 1986, pp [11] G. Coulson, G. Blair, M. Clarke, N. Parlavantzas, The design of a congurable and recongurable middleware platform, Distributed Comput. J. 15 (2) (2002) [12] Al Geist, A. Beguelin, J. Dongarra, W. Jiang, R. Manchek, V. Sunderam, PVM: Parallel Virtual Machine a User s Guide and Tutorial for Networked Parallel Computing, MIT Press, Cambridge, MA, London, England, [13] C.A.R. Hoare, Communicating sequential processes, Commu. ACM 21 (8) (1978) [14] C. Hofmeister, J. Purtilo, Dynamic reconguration in distributed systems: adapting software modules for replacement, in: Proc. 13th Internat. Conf. on Distributed Computing Systems, Pittsburgh, PA, USA, May 25 28, 1993, pp [15] C. Hofmeister, E. White, J. Purtilo, Surgeon: a packager for dynamically recongurable distributed applications, IEE Software Eng. J. 8 (2) (1993) [16] G.R.R. Justo, P.R.F. Cunha, Programming distributable system with conguration languages, in: Proc. Internat. Workshop on Congurable Distributable System, London, UK 1992, pp [17] J. Kramer, Conguration programming a framework for the development of distributed systems, in: Proc. IEEE Internat. Conf. on Computer Systems and Software Engineering (CompEuro 90), Israel, May, 1990, pp [18] J. Kramer, Congurable distributed systems, editorial, in: Special Issue on Dynamic Reconguration, Software Engineering Journal, March [19] J. Kramer, J. Magee, Dynamic conguration for distributed system, IEEE Trans. Software Eng. 11 (4) (1985) [20] J. Kramer, J. Magee, K. Ng, Graphical conguration programming, IEEE Comput. 22 (10) (1989) [21] V. Kumar, A. Grama, A. Gupta, G. Karypis, Chapter 8 Search algorithms for discrete optimization problems, in: Introduction to Parallel Computing: Design and Analysis of Algorithms, Benjamin/ Cummings, Menlo Park, CA, 1994, pp [22] R. LeBlanc, A. Maccabe, The design of a program language based on connectivity networks, in: Proc. 4th Internat. Conf. Distributed Computing Systems, October 1982.
23 J. Cao et al. / Science of Computer Programming 48 (2003) [23] J. Magee, Chapter 18 Conguration of distributed systems, in: M. Sloman (Ed.), Network and Distributed Systems Management, Addison-Wesley, Reading, MA, 1994, pp [24] J. Magee, N. Dulay, J. Kramer, Structuring parallel and distributed programs, IEE Software Eng. J. 8 (2) (1993) [25] J. Magee, J. Kramer, M. Sloman, Constructing distributed system in Conic, IEEE Trans. Software Eng. 15 (6) (1989) [26] K. Moazami-Goudarzi, Consistency preserving dynamic reconguration of distributed systems, Ph.D, Thesis, Imperial College London, March [27] P. Oreizy, R. Taylor, On the role of software architectures in runtime system reconguration, IEE Proc.-Software 145 (5) (1998) [28] G. Papadopoulos, F. Arbab, Conguration and dynamic reconguration of components using the coordination paradigm, Future Generation Comput. Systems 17 (8) (2001) [29] D. Peleg, Distributed data structures: a complexity-oriented view, in: J. Leeuwen, N. Santoro (Eds.), Proc. 4th Internat. Workshop on Distributed Algorithms, Lecture Notes in Computer Science, vol. 486, Springer, Berlin, 1990, pp [30] N. Rodriguez, R. Ierusalimschy, R. Cerqueira, Dynamic conguration with CORBA components, in: R. Cole, R. Schlichting (Eds.), Proc. 4th Internat. Conf. on Congurable Distributed Systems, IEEE Computer Society Press, Silver Spring, MD, May 1998, pp [31] A.W. Roscoe, The Theory and Practice of Concurrency, Prentice-Hall, Englewood Clis, NJ, [32] B.K. Totty, Experimental analysis of data management for distributed data structures, M.S. Thesis, Department of Computer Science, University of Illinois at Urbana-Champaign, 1992.
Chapter 4 Multi-Stage Interconnection Networks The general concept of the multi-stage interconnection network, together with its routing properties, have been used in the preceding chapter to describe
CHAPTER 2 MODELLING FOR DISTRIBUTED NETWORK SYSTEMS: THE CLIENT- SERVER MODEL
CHAPTER 2 MODELLING FOR DISTRIBUTED NETWORK SYSTEMS: THE CLIENT- SERVER MODEL This chapter is to introduce the client-server model and its role in the development of distributed network systems. The chapter
16.1 MAPREDUCE. For personal use only, not for distribution. 333
For personal use only, not for distribution. 333 16.1 MAPREDUCE Initially designed by the Google labs and used internally by Google, the MAPREDUCE distributed programming model is now promoted by several
Architecture bits. (Chromosome) (Evolved chromosome) Downloading. Downloading PLD. GA operation Architecture bits
A Pattern Recognition System Using Evolvable Hardware Masaya Iwata 1 Isamu Kajitani 2 Hitoshi Yamada 2 Hitoshi Iba 1 Tetsuya Higuchi 1 1 1-1-4,Umezono,Tsukuba,Ibaraki,305,Japan Electrotechnical Laboratory
COMP5426 Parallel and Distributed Computing. Distributed Systems: Client/Server and Clusters
COMP5426 Parallel and Distributed Computing Distributed Systems: Client/Server and Clusters Client/Server Computing Client Client machines are generally single-user workstations providing a user-friendly
Tools Page 1 of 13 ON PROGRAM TRANSLATION. A priori, we have two translation mechanisms available:
Tools Page 1 of 13 ON PROGRAM TRANSLATION A priori, we have two translation mechanisms available: Interpretation Compilation On interpretation: Statements are translated one at a time and executed immediately.
Middleware Lou Somers
Middleware Lou Somers April 18, 2002 1 Contents Overview Definition, goals, requirements Four categories of middleware Transactional, message oriented, procedural, object Middleware examples XML-RPC, SOAP,
Chapter 2: Remote Procedure Call (RPC)
Chapter 2: Remote Procedure Call (RPC) Gustavo Alonso Computer Science Department Swiss Federal Institute of Technology (ETHZ) [email protected] http://www.iks.inf.ethz.ch/ Contents - Chapter 2 - RPC
Lesson 4 Web Service Interface Definition (Part I)
Lesson 4 Web Service Interface Definition (Part I) Service Oriented Architectures Module 1 - Basic technologies Unit 3 WSDL Ernesto Damiani Università di Milano Interface Definition Languages (1) IDLs
Principles and characteristics of distributed systems and environments
Principles and characteristics of distributed systems and environments Definition of a distributed system Distributed system is a collection of independent computers that appears to its users as a single
Agenda. Distributed System Structures. Why Distributed Systems? Motivation
Agenda Distributed System Structures CSCI 444/544 Operating Systems Fall 2008 Motivation Network structure Fundamental network services Sockets and ports Client/server model Remote Procedure Call (RPC)
Software development process
OpenStax-CNX module: m14619 1 Software development process Trung Hung VO This work is produced by OpenStax-CNX and licensed under the Creative Commons Attribution License 2.0 Abstract A software development
Client/Server Computing Distributed Processing, Client/Server, and Clusters
Client/Server Computing Distributed Processing, Client/Server, and Clusters Chapter 13 Client machines are generally single-user PCs or workstations that provide a highly userfriendly interface to the
Thesis work and research project
Thesis work and research project Hélia Pouyllau, INRIA of Rennes, Campus Beaulieu 35042 Rennes, [email protected] July 16, 2007 1 Thesis work on Distributed algorithms for endto-end QoS contract
How To Understand The Concept Of A Distributed System
Distributed Operating Systems Introduction Ewa Niewiadomska-Szynkiewicz and Adam Kozakiewicz [email protected], [email protected] Institute of Control and Computation Engineering Warsaw University of
SYSTEMS AND SOFTWARE REQUIREMENTS SPECIFICATION (SSRS) TEMPLATE. Version A.4, January 2014 FOREWORD DOCUMENT CONVENTIONS
SYSTEMS AND SOFTWARE REQUIREMENTS SPECIFICATION (SSRS) TEMPLATE Version A.4, January 2014 FOREWORD This document was written to provide software development projects with a template for generating a System
Introduction CORBA Distributed COM. Sections 9.1 & 9.2. Corba & DCOM. John P. Daigle. Department of Computer Science Georgia State University
Sections 9.1 & 9.2 Corba & DCOM John P. Daigle Department of Computer Science Georgia State University 05.16.06 Outline 1 Introduction 2 CORBA Overview Communication Processes Naming Other Design Concerns
Distributed Dynamic Load Balancing for Iterative-Stencil Applications
Distributed Dynamic Load Balancing for Iterative-Stencil Applications G. Dethier 1, P. Marchot 2 and P.A. de Marneffe 1 1 EECS Department, University of Liege, Belgium 2 Chemical Engineering Department,
Topology-based network security
Topology-based network security Tiit Pikma Supervised by Vitaly Skachek Research Seminar in Cryptography University of Tartu, Spring 2013 1 Introduction In both wired and wireless networks, there is the
How to Design and Maintain a Secure ICS Network
Whitepaper How to Design and Maintain a Secure ICS Network Support IEC 62443 Compliance with SilentDefense ICS Authors Daniel Trivellato, PhD - Product Manager Industrial Line Dennis Murphy, MSc - Senior
An Algebra for Feature-Oriented Software Development
An Algebra for Feature-Oriented Software Development Sven Apel 1, Christian Lengauer 1, Don Batory 2, Bernhard Möller 3, and Christian Kästner 4 1 Department of Informatics and Mathematics, University
CHAPTER 1: OPERATING SYSTEM FUNDAMENTALS
CHAPTER 1: OPERATING SYSTEM FUNDAMENTALS What is an operating? A collection of software modules to assist programmers in enhancing efficiency, flexibility, and robustness An Extended Machine from the users
The Role of Computers in Synchronous Collaborative Design
The Role of Computers in Synchronous Collaborative Design Wassim M. Jabi, The University of Michigan Theodore W. Hall, Chinese University of Hong Kong Abstract In this paper we discuss the role of computers
JadexCloud - An Infrastructure for Enterprise Cloud Applications
JadexCloud - An Infrastructure for Enterprise Cloud Applications Lars Braubach, Alexander Pokahr, and Kai Jander Distributed Systems and Information Systems Computer Science Department, University of Hamburg
The Data Grid: Towards an Architecture for Distributed Management and Analysis of Large Scientific Datasets
The Data Grid: Towards an Architecture for Distributed Management and Analysis of Large Scientific Datasets!! Large data collections appear in many scientific domains like climate studies.!! Users and
Introduction Object-Oriented Network Programming CORBA addresses two challenges of developing distributed systems: 1. Making distributed application development no more dicult than developing centralized
Application Centric Infrastructure Object-Oriented Data Model: Gain Advanced Network Control and Programmability
White Paper Application Centric Infrastructure Object-Oriented Data Model: Gain Advanced Network Control and Programmability What You Will Learn This document discusses application centric infrastructure
It is the thinnest layer in the OSI model. At the time the model was formulated, it was not clear that a session layer was needed.
Session Layer The session layer resides above the transport layer, and provides value added services to the underlying transport layer services. The session layer (along with the presentation layer) add
Customer Bank Account Management System Technical Specification Document
Customer Bank Account Management System Technical Specification Document Technical Specification Document Page 1 of 15 Table of Contents Contents 1 Introduction 3 2 Design Overview 4 3 Topology Diagram.6
Infrastructure that supports (distributed) componentbased application development
Middleware Technologies 1 What is Middleware? Infrastructure that supports (distributed) componentbased application development a.k.a. distributed component platforms mechanisms to enable component communication
Expanding the CASEsim Framework to Facilitate Load Balancing of Social Network Simulations
Expanding the CASEsim Framework to Facilitate Load Balancing of Social Network Simulations Amara Keller, Martin Kelly, Aaron Todd 4 June 2010 Abstract This research has two components, both involving the
Parallelization: Binary Tree Traversal
By Aaron Weeden and Patrick Royal Shodor Education Foundation, Inc. August 2012 Introduction: According to Moore s law, the number of transistors on a computer chip doubles roughly every two years. First
Software Quality Factors OOA, OOD, and OOP Object-oriented techniques enhance key external and internal software quality factors, e.g., 1. External (v
Object-Oriented Design and Programming Deja Vu? In the past: Structured = Good Overview of Object-Oriented Design Principles and Techniques Today: Object-Oriented = Good e.g., Douglas C. Schmidt www.cs.wustl.edu/schmidt/
Objectives. Distributed Databases and Client/Server Architecture. Distributed Database. Data Fragmentation
Objectives Distributed Databases and Client/Server Architecture IT354 @ Peter Lo 2005 1 Understand the advantages and disadvantages of distributed databases Know the design issues involved in distributed
programming languages, programming language standards and compiler validation
Software Quality Issues when choosing a Programming Language C.J.Burgess Department of Computer Science, University of Bristol, Bristol, BS8 1TR, England Abstract For high quality software, an important
A Java-based system support for distributed applications on the Internet
A Java-based system support for distributed applications on the Internet D. Hagimont 1, D. Louvegnies 2 SIRAC Project INRIA, 655 av. de l Europe, 38330 Montbonnot Saint-Martin, France Abstract: We have
Managing large sound databases using Mpeg7
Max Jacob 1 1 Institut de Recherche et Coordination Acoustique/Musique (IRCAM), place Igor Stravinsky 1, 75003, Paris, France Correspondence should be addressed to Max Jacob ([email protected]) ABSTRACT
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Chapter 1 - Web Server Management and Cluster Topology
Objectives At the end of this chapter, participants will be able to understand: Web server management options provided by Network Deployment Clustered Application Servers Cluster creation and management
System Interconnect Architectures. Goals and Analysis. Network Properties and Routing. Terminology - 2. Terminology - 1
System Interconnect Architectures CSCI 8150 Advanced Computer Architecture Hwang, Chapter 2 Program and Network Properties 2.4 System Interconnect Architectures Direct networks for static connections Indirect
1 Organization of Operating Systems
COMP 730 (242) Class Notes Section 10: Organization of Operating Systems 1 Organization of Operating Systems We have studied in detail the organization of Xinu. Naturally, this organization is far from
The Service Availability Forum Specification for High Availability Middleware
The Availability Forum Specification for High Availability Middleware Timo Jokiaho, Fred Herrmann, Dave Penkler, Manfred Reitenspiess, Louise Moser Availability Forum [email protected], [email protected],
A Comparison of Distributed Systems: ChorusOS and Amoeba
A Comparison of Distributed Systems: ChorusOS and Amoeba Angelo Bertolli Prepared for MSIT 610 on October 27, 2004 University of Maryland University College Adelphi, Maryland United States of America Abstract.
An Active Packet can be classified as
Mobile Agents for Active Network Management By Rumeel Kazi and Patricia Morreale Stevens Institute of Technology Contact: rkazi,[email protected] Abstract-Traditionally, network management systems
An Interactive Visualization Tool for the Analysis of Multi-Objective Embedded Systems Design Space Exploration
An Interactive Visualization Tool for the Analysis of Multi-Objective Embedded Systems Design Space Exploration Toktam Taghavi, Andy D. Pimentel Computer Systems Architecture Group, Informatics Institute
An Empirical Study and Analysis of the Dynamic Load Balancing Techniques Used in Parallel Computing Systems
An Empirical Study and Analysis of the Dynamic Load Balancing Techniques Used in Parallel Computing Systems Ardhendu Mandal and Subhas Chandra Pal Department of Computer Science and Application, University
Client/Server and Distributed Computing
Adapted from:operating Systems: Internals and Design Principles, 6/E William Stallings CS571 Fall 2010 Client/Server and Distributed Computing Dave Bremer Otago Polytechnic, N.Z. 2008, Prentice Hall Traditional
A Typing System for an Optimizing Multiple-Backend Tcl Compiler
The following paper was originally published in the Proceedings of the Fifth Annual Tcl/Tk Workshop Boston, Massachusetts, July 1997 A Typing System for an Optimizing Multiple-Backend Tcl Compiler Forest
International journal of Engineering Research-Online A Peer Reviewed International Journal Articles available online http://www.ijoer.
RESEARCH ARTICLE ISSN: 2321-7758 GLOBAL LOAD DISTRIBUTION USING SKIP GRAPH, BATON AND CHORD J.K.JEEVITHA, B.KARTHIKA* Information Technology,PSNA College of Engineering & Technology, Dindigul, India Article
Chapter Outline. Chapter 2 Distributed Information Systems Architecture. Middleware for Heterogeneous and Distributed Information Systems
Prof. Dr.-Ing. Stefan Deßloch AG Heterogene Informationssysteme Geb. 36, Raum 329 Tel. 0631/205 3275 [email protected] Chapter 2 Architecture Chapter Outline Distributed transactions (quick
Communication Networks. MAP-TELE 2011/12 José Ruela
Communication Networks MAP-TELE 2011/12 José Ruela Network basic mechanisms Network Architectures Protocol Layering Network architecture concept A network architecture is an abstract model used to describe
SAN Conceptual and Design Basics
TECHNICAL NOTE VMware Infrastructure 3 SAN Conceptual and Design Basics VMware ESX Server can be used in conjunction with a SAN (storage area network), a specialized high speed network that connects computer
TD 271 Rev.1 (PLEN/15)
INTERNATIONAL TELECOMMUNICATION UNION STUDY GROUP 15 TELECOMMUNICATION STANDARDIZATION SECTOR STUDY PERIOD 2009-2012 English only Original: English Question(s): 12/15 Geneva, 31 May - 11 June 2010 Source:
Fault Localization in a Software Project using Back- Tracking Principles of Matrix Dependency
Fault Localization in a Software Project using Back- Tracking Principles of Matrix Dependency ABSTRACT Fault identification and testing has always been the most specific concern in the field of software
High Performance Cluster Support for NLB on Window
High Performance Cluster Support for NLB on Window [1]Arvind Rathi, [2] Kirti, [3] Neelam [1]M.Tech Student, Department of CSE, GITM, Gurgaon Haryana (India) [email protected] [2]Asst. Professor,
MULTI-AGENT SYSTEM FOR DECENTRALIZED COMPUTER NETWORK MANAGEMENT Krzysztof Cetnarowicz Jaros law Kozlak Institute of Computer Science, AGH - University of Mining and Metallurgy Al. Mickiewicza 30, 30-059
Chapter 1: Key Concepts of Programming and Software Engineering
Chapter 1: Key Concepts of Programming and Software Engineering Software Engineering Coding without a solution design increases debugging time - known fact! A team of programmers for a large software development
Virtual Machines. www.viplavkambli.com
1 Virtual Machines A virtual machine (VM) is a "completely isolated guest operating system installation within a normal host operating system". Modern virtual machines are implemented with either software
COMMMUNICATING COOPERATING PROCESSES
COMMMUNICATING COOPERATING PROCESSES The producer-consumer paradigm A buffer of items can be filled by the producer and emptied by the consumer. The producer and the consumer must be synchronized: the
Communication. Layered Protocols. Topics to be covered. PART 1 Layered Protocols Remote Procedure Call (RPC) Remote Method Invocation (RMI)
Distributed Systems, Spring 2004 1 Introduction Inter-process communication is at the heart of all distributed systems Communication Based on low-level message passing offered by the underlying network
Department of Computer and Information Science, Ohio State University. In Section 3, the concepts and structure of signature
Proceedings of the 2nd International Computer Science Conference, Hong Kong, Dec. 1992, 616-622. 616 SIGNATURE FILE METHODS FOR INDEXING OBJECT-ORIENTED DATABASE SYSTEMS Wang-chien Lee and Dik L. Lee Department
A Tool for Multimedia Quality Assessment in NS3: QoE Monitor
A Tool for Multimedia Quality Assessment in NS3: QoE Monitor D. Saladino, A. Paganelli, M. Casoni Department of Engineering Enzo Ferrari, University of Modena and Reggio Emilia via Vignolese 95, 41125
Binary search tree with SIMD bandwidth optimization using SSE
Binary search tree with SIMD bandwidth optimization using SSE Bowen Zhang, Xinwei Li 1.ABSTRACT In-memory tree structured index search is a fundamental database operation. Modern processors provide tremendous
Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification
Introduction Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification Advanced Topics in Software Engineering 1 Concurrent Programs Characterized by
Configuration Management Models in Commercial Environments
Technical Report CMU/SEI-91-TR-7 ESD-9-TR-7 Configuration Management Models in Commercial Environments Peter H. Feiler March 1991 Technical Report CMU/SEI-91-TR-7 ESD-91-TR-7 March 1991 Configuration Management
Goldberg, D. E. (1989). Genetic algorithms in search, optimization, and machine learning. Reading, MA:
is another objective that the GA could optimize. The approach used here is also adaptable. On any particular project, the designer can congure the GA to focus on optimizing certain constraints (such as
Component visualization methods for large legacy software in C/C++
Annales Mathematicae et Informaticae 44 (2015) pp. 23 33 http://ami.ektf.hu Component visualization methods for large legacy software in C/C++ Máté Cserép a, Dániel Krupp b a Eötvös Loránd University [email protected]
Minimizing the Eect of Clock Skew. Via Circuit Retiming 1. Technical Report 93-5-04. May, 1992
Minimizing the Eect of Clock kew Via Circuit Retiming 1 Brian Lockyear and Carl Ebeling Department of Computer cience and Engineering University of Washington eattle, Washington 98195 Technical Report
EVALUATION. WA1844 WebSphere Process Server 7.0 Programming Using WebSphere Integration COPY. Developer
WA1844 WebSphere Process Server 7.0 Programming Using WebSphere Integration Developer Web Age Solutions Inc. USA: 1-877-517-6540 Canada: 1-866-206-4644 Web: http://www.webagesolutions.com Chapter 6 - Introduction
Hong Chen Claudio A. Ca~nizares Ajit Singh. University ofwaterloo. Waterloo, ON, Canada N2L 3G1. [email protected]
North American Power Symposium (NAPS), San Luis Obispo, California, October 1999. Web-based Computing for Power System Applications Hong Chen Claudio A. Ca~nizares Ajit Singh University ofwaterloo Department
Fault Tolerance in Hadoop for Work Migration
1 Fault Tolerance in Hadoop for Work Migration Shivaraman Janakiraman Indiana University Bloomington ABSTRACT Hadoop is a framework that runs applications on large clusters which are built on numerous
SCALABILITY AND AVAILABILITY
SCALABILITY AND AVAILABILITY Real Systems must be Scalable fast enough to handle the expected load and grow easily when the load grows Available available enough of the time Scalable Scale-up increase
Remote Sensitive Image Stations and Grid Services
International Journal of Grid and Distributed Computing 23 Remote Sensing Images Data Integration Based on the Agent Service Binge Cui, Chuanmin Wang, Qiang Wang College of Information Science and Engineering,
1. Introduction MINING AND TRACKING EVOLVING WEB USER TRENDS FROM LARGE WEB SERVER LOGS. Basheer Hawwash and Olfa Nasraoui
MINING AND TRACKING EVOLVING WEB USER TRENDS FROM LARGE WEB SERVER LOGS Basheer Hawwash and Olfa Nasraoui Knowledge Discovery and Web Mining Lab Dept. of Computer Engineering and Computer Science University
WORKFLOW ENGINE FOR CLOUDS
WORKFLOW ENGINE FOR CLOUDS By SURAJ PANDEY, DILEBAN KARUNAMOORTHY, and RAJKUMAR BUYYA Prepared by: Dr. Faramarz Safi Islamic Azad University, Najafabad Branch, Esfahan, Iran. Workflow Engine for clouds
interactive automatic (rules) automatic (patterns) interactive REP ENVIRONMENT KERNEL
AN APPROACH TO SOFTWARE CHANGE MANAGEMENT SUPPORT Jun Han Peninsula School of Computing and Information Technology Monash University, McMahons Road, Frankston, Vic 3199, Australia phone: +61 3 99044604,
Architecture Design & Sequence Diagram. Week 7
Architecture Design & Sequence Diagram Week 7 Announcement Reminder Midterm I: 1:00 1:50 pm Wednesday 23 rd March Ch. 1, 2, 3 and 26.5 Hour 1, 6, 7 and 19 (pp.331 335) Multiple choice Agenda (Lecture)
Big Data with Rough Set Using Map- Reduce
Big Data with Rough Set Using Map- Reduce Mr.G.Lenin 1, Mr. A. Raj Ganesh 2, Mr. S. Vanarasan 3 Assistant Professor, Department of CSE, Podhigai College of Engineering & Technology, Tirupattur, Tamilnadu,
SIMULATION OF LOAD BALANCING ALGORITHMS: A Comparative Study
SIMULATION OF LOAD BALANCING ALGORITHMS: A Comparative Study Milan E. Soklic Abstract This article introduces a new load balancing algorithm, called diffusive load balancing, and compares its performance
Chapter 3. Enterprise Campus Network Design
Chapter 3 Enterprise Campus Network Design 1 Overview The network foundation hosting these technologies for an emerging enterprise should be efficient, highly available, scalable, and manageable. This
Generating Test Cases from UML Specications by Aynur Abdurazik and Je Outt ISE-TR-99-09 May, 1999 Information and Software Engineering George Mason University Fairfax, Virginia 22030 Unlimited Distribution.
Verifying Semantic of System Composition for an Aspect-Oriented Approach
2012 International Conference on System Engineering and Modeling (ICSEM 2012) IPCSIT vol. 34 (2012) (2012) IACSIT Press, Singapore Verifying Semantic of System Composition for an Aspect-Oriented Approach
Stream Processing on GPUs Using Distributed Multimedia Middleware
Stream Processing on GPUs Using Distributed Multimedia Middleware Michael Repplinger 1,2, and Philipp Slusallek 1,2 1 Computer Graphics Lab, Saarland University, Saarbrücken, Germany 2 German Research
The C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
Lecture 1: Introduction
Programming Languages Lecture 1: Introduction Benjamin J. Keller Department of Computer Science, Virginia Tech Programming Languages Lecture 1 Introduction 2 Lecture Outline Preview History of Programming
Parallel Databases. Parallel Architectures. Parallelism Terminology 1/4/2015. Increase performance by performing operations in parallel
Parallel Databases Increase performance by performing operations in parallel Parallel Architectures Shared memory Shared disk Shared nothing closely coupled loosely coupled Parallelism Terminology Speedup:
A Reputation Replica Propagation Strategy for Mobile Users in Mobile Distributed Database System
A Reputation Replica Propagation Strategy for Mobile Users in Mobile Distributed Database System Sashi Tarun Assistant Professor, Arni School of Computer Science and Application ARNI University, Kathgarh,
