| % |
| % Licensed to the Apache Software Foundation (ASF) under one |
| % or more contributor license agreements. See the NOTICE file |
| % distributed with this work for additional information |
| % regarding copyright ownership. The ASF licenses this file |
| % to you under the Apache License, Version 2.0 (the |
| % "License"); you may not use this file except in compliance |
| % with the License. You may obtain a copy of the License at |
| % |
| % http://www.apache.org/licenses/LICENSE-2.0 |
| % |
| % Unless required by applicable law or agreed to in writing, |
| % software distributed under the License is distributed on an |
| % "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| % KIND, either express or implied. See the License for the |
| % specific language governing permissions and limitations |
| % under the License. |
| % |
| |
| \subsection{\varResourceManager~(\varRM, also known as the \varScheduler)} |
| |
| There is one \varResourceManager~per \varDUCC~cluster. |
| |
| The duties of the \varResourceManager~are: |
| \textit{ |
| \input{part5/c01-RM.tex} |
| } |
| |
| The \varResourceManager~provides essential functionality for operation of the |
| \varDUCC~system. |
| It is configurable and tunable. |
| It is also plug-replaceable. |
| |
| The \varResourceManager~both publishes and receive reports. |
| The \varResourceManager~receives \varOrchestrator~publications comprising |
| Jobs, Reservations, and Services as well as |
| \varAgent~publications comprising inventory and metrics. |
| The \varResourceManager~publication occurs at regular intervals, each |
| representing at the time of its publication the desired allocation |
| of resources. |
| |
| The \varResourceManager~considers various factors to make assignments, including: |
| \begin{description} |
| \item supply of available nodes; |
| \item memory size of each available node; |
| \item demand for resource in terms of memory size and class of service comprising Jobs, Reservations and Services; |
| \item the most recent previous assignments and desirability for continuity; |
| \end{description} |
| |
| The \varOrchestrator~is the primary consumer of the \varResourceManager~publication |
| which it uses to bring the cluster into compliance with the allocation assignments. |
| |
| The \varResourceManager~adheres to the \varIScheduler~interface. |
| Algorithms adhering to this interface are eligible for replacing |
| the \varDUCC~supplied one. |
| |
| \subsubsection{Job Manager Converter} |
| |
| The Job Manager Converter module receives \varOrchestrator~publications and |
| updates its internal state with new, changed, and removed map entries |
| comprising Jobs, Reservations and Services. |
| |
| \subsubsection{Node Stability} |
| |
| The Node Status module evaluates the health of the nodes within the cluster |
| for consideration during resource scheduling. Any node deemed unhealthy is |
| removed from the collection of available resources until such time as it |
| is once again deemed healthy. |
| |
| \subsubsection{Node Status} |
| |
| The Node Status module receives \varAgent~publications and |
| updates its internal state with new, changed, and removed node status entries. |
| |
| \subsubsection{Resource Manager} |
| |
| The \varResourceManager~performs the following: |
| |
| \begin{description} |
| \item receive resource availability reports from \varAgents; |
| \item receive resource need requests the \varOrchestrator; |
| \item employ a scheduling algorithm at discrete time intervals to: |
| \begin{description} |
| \item consider the resource supply; |
| \item consider the most recent allocation set; |
| \item consider new, changed and removed resource demands; |
| \item assign a resource to a request; |
| \item remove a resource from a request; |
| \item publish current allocation set; |
| \end{description} |
| \end{description} |
| |
| \subsubsection{\varScheduler} |
| |
| The \varScheduler~runs at discrete time intervals. |
| It assembles information about available nodes in the cluster. |
| Each node, based upon its memory size is partitioned into zero or more \varShares. |
| Each request (Job, Reservation and Service) is assessed as to the number of |
| \varShares~required based upon user-specified memory size. |
| In addition, each request is assessed with respect to the user-specified class-of-service. |
| |
| The \varScheduler~considers the most recent previous allocations along with changes |
| to supply and demand. It then produces a new allocation set which the |
| \varResourceManager~publishes as directions to the \varOrchestrator. |
| |