.. _dynrm architecture: Architecture ============ DynRM uses a modular and graph-based architecture faciliating integration, interoperability and extensibility. The following figure gives a high-level overview of the DynRM architecture: .. image:: ../images/architecture.png *************************** DynRM System Representation *************************** DynRM uses a graph-based system representation: * **Topology Graph:** The topology graph contains system components (such as nodes, cores, ...) as vertices and relations between components (such as containment) as edges. When only considering containment relations, the topology graph is a tree. * **Task Graphs:** The Task Graphs represent user submissions, i.e. a set of one or more jobs/tasks (vertices) possibly with dependencies (edges). This representation therefore also covers workflows. * **PSet Graphs:** The PSet Graphs consists of Process Sets (vertices) and Process Set Operations (edges). The PSet Graphs establish a mapping between the Task Graphs and the Topology Graph and is the basis of the DPP-based approach for dynamic resources. The resource management is then based on relation between these graphs: * **Applications:** The dynamic execution structure is expressed by applications through *Dynamic Process Management (DPM)* based on PSets and (expressed support for) PsetOps, i.e. the Task Graph is mapped to a dynamically evolving PSet Graph. * **Resource Manager:** The dynamic association of processes with system resources is expressed by the resource manager through *Dynamic Resource Allocation (DRA)*, i.e. the Pset graph is dynamically extended and mapped to the Topology Graph. * **Optimization information** (constraints, mapping, performance models) is associated with the vertices and edges of the PSet graph to guide the DRA decisions on executing PSetOps and corresponding DRA. ******************** DynRM Modular Design ******************** DynRM uses a modular design inpired by the Modular Component Architecture (MCA) used in the Open-MPI, OpenPMIx and PRRTE projects: List of Modules: * Resource Manager: Provides resource mananagement functions * Base * Callback: Provides functions for callback/rpc mechanisms * Base * PMIx * Event Loop: Provides functions for Managing Event Loops * Base * Asyncio * Logger: Provides functions for logging events * Node * SetOp * Set * Task * Policy * Submission: Provides functions for submitting jobs and job mixes * Base * ElastiSim * System: Provides functions for interacting with system management software * PRRTE * ElastiSim * TopologyCreation: Provides functions for creating a topology graph from a certain representation * Default * ElastiSim * TaskGraphCreation: Provides funtions for converting submissions to task graphs * Default * ElastiSim * Policy: Provides a scheduling policy * DiscreteSteepestAscend * EasyBackfilling * FirstFitFirst * DMRPolicy * Graph/Vertex/Edge: Provides functions for managing graphs/vertices/edges * Base * VertexModel: Provides Models for Vertices * PSetModel: Provides Models for Psets * Amdahl * Linear * Constant * InverseAmdahl * EdgeModel: Provides Models for Edges * PSetOpModel: Provides Models for PsetOps * ADD * SUB * GROW * SHRINK * REPLACE * LAUNCH * SUB * TERMINATION * UNION * DIFFERENCE * INTERSECTION