blob: 0e7d80cf49c133bfe1e920cf10ec0d810f55eafa [file] [log] [blame]
%
% 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.