You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2013/07/25 20:44:54 UTC
svn commit: r1507088 -
/uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part5/ducc-pops.tex
Author: degenaro
Date: Thu Jul 25 18:44:53 2013
New Revision: 1507088
URL: http://svn.apache.org/r1507088
Log:
UIMA-2864 DUCC POPs
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part5/ducc-pops.tex
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part5/ducc-pops.tex
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part5/ducc-pops.tex?rev=1507088&r1=1507087&r2=1507088&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part5/ducc-pops.tex (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part5/ducc-pops.tex Thu Jul 25 18:44:53 2013
@@ -4,7 +4,9 @@
\newcommand{\varDUCC}{\text{DUCC}}
\newcommand{\varOS}{\text{OS}}
\newcommand{\varJava}{\text{Java}}
+\newcommand{\varJVM}{\text{JVM}}
\newcommand{\varLinux}{\text{Linux}}
+\newcommand{\varSpring}{\text{Spring}}
\newcommand{\varUIMA}{\text{UIMA}}
\newcommand{\varUnstructuredInformationManagementArchitecture}{\text{Unstructured Information Management Architecture}}
\newcommand{\varUIMAAS}{\text{UIMA-AS}}
@@ -121,6 +123,8 @@
\newcommand{\varPendingAssigned}{\textit{PendingAssigned}}
\newcommand{\varNotPending}{\textit{NotPending}}
+\newcommand{\varAlienDetected}{\texttt{alien detected}}
+
% uima
\newcommand{\varCollectionReader}{\textit{Collection Reader}}
@@ -881,166 +885,233 @@
\textit{
\input{part5/c01-Agent.tex}
}
+
+ The \varAgent~is subdivided into several responsibility areas:
+
+ \begin{itemize}
+ \item Core
+ \item Config
+ \item Deploy
+ \item Event
+ \item Exceptions
+ \item Launcher
+ \item Metrics Collectors
+ \item Monitor
+ \item Processors
+ \end{itemize}
+
+ \subsubsection{Core}
- The Logging module facilitates the recording to persistent storage of noteworthy
- events occurring during the \varAgent~lifetime. Noteworthiness is configurable
- as various levels, such as \varINFO, \varDEBUG~and \varTRACE.
+ The \varAgent~publishes information about the state of the
+ \varNodeMachineComputer~it controls.
+ It also receives publications which it interprets to control
+ processes deployed thereon.
+ It also monitors activity on the \varNodeMachineComputer~and
+ insures that only sanctioned processes are running.
+
+ The \varAgent~is normally launched at \varDUCC~system
+ start-up time.
+ However, \varAgents~may be started/stopped independently over time.
+
+ \varDUCC~is only able to deploy user submitted applications to a
+ \varNodeMachineComputer~upon which there exists an active \varAgent.
+
+ \subsubsection{Config}
+
+ \begin{itemize}
+ \item Agent Configuration
+
+ The \varAgent configures itself according to the
+ \varDuccProperties~file. Aspects include:
+
+ \begin{itemize}
+ \item launcher.thread.pool.size
+ \item launcher.process.stop.timeout
+ \item rogue.process.exclusion.filter
+
+ Processes in this list are exempt for rogue process detection
+ and termination.
+
+ \item rogue.process.user.exclusion.filter
+
+ Users in this list are exempt for rogue process detection
+ and termination.
- \subsubsection{Core}
+ \end{itemize}
+
+ \end{itemize}
+
+ \subsubsection{Deploy}
\begin{itemize}
- \item NodeAgent;
+ \item Managed UIMA Service
- This is the main thread for the \varAgent. It is responsible for starting, configuring
- and ending the \varDUCC~framework duties on a \varNodeMachineComputer.
+ The module is the \varAgent-managed integration between
+ \varUIMAAS~and the user supplied application code which is
+ deployed thereto.
+ \end{itemize}
+
+ \subsubsection{Event}
+
+ \begin{itemize}
+ \item Event Listener
+
+ The module handles various publication events:
\begin{itemize}
- \item Determine node name, IP address and JMX URL. Record same to configured state directory,
- utilized by \varWebServer for ease of use display to users/administrators.
- \item Determine \varOS~page size.
- \item Determine \varOS~clock rate.
- \item Determine number of \varDUCC~shares.
- \item Manage use of privileged operations via appealing to \varDuccling.
- \item Take down processes for which \varJob~has been de-allocated or ended.
- \item Start up processes for which \varJob~has been allocated.
- \item Handle \varDUCC-reservations.
- \item Handle low swap space on node events.
- \item Employ Rogue Process Detector.
- \end{itemize}
+ \item Process Start
+
+ A notification from the \varProcessManager~to start a user submitted
+ process constrained to a \varResourceManager~allocated number of shares.
+
+ \item Process Stop
+
+ A notification from the \varProcessManager~to stop a user submitted
+ process.
+
+ \item Process Modify
+
+ A notification from the \varProcessManager~to modify a user submitted
+ process.
+
+ \item Process Purge
+
+ A notification from the \varProcessManager~to purge a user submitted
+ process.
+
+ \item Job State
+
+ A notification from the \varOrchestrator~comprising the authoritative
+ state of the entire \varDUCC-managed collection of entities:
+ \varJobs, \varReservations~and \varServices.
+
+ \end{itemize}
+
+ \end{itemize}
+
+ \subsubsection{Launcher}
- \item NodeAgentInfo;
+ The modules comprising the Launcher package are are tasked with
+ starting user processes on the \varAgent-managed \varNodeMachineComputer.
+ The modules are:
+
+ \begin{itemize}
+ \item CGroups Manager
- Representation of information compiled by the \varAgent:
+ This module provides functionality to partition the \varAgent-managed
+ \varNodeMachineComputer~in shares, each share with limits on one
+ or more aspects, including but not limited to memory and swap space.
- \begin{itemize}
- \item Agent State: INITIALIZING, READY, STOPPED, UNREACHABLE, FAILED
- \item Agent Jmx port.
- \item Node IP address.
- \item Node Hostname.
- \item Node CPUs.
- \item \varOS~Name.
- \item \varOS~Version.
- \item \varOS~Architecture.
- \item \varJava~Vendor.
- \item \varJava~Version.
- \end{itemize}
+ The CGroups Manager essentially starts, maintains, and stops instant
+ virtual machines in correspondence with \varResourceManager~allocated
+ shares into which user submitted processes are launched.
- \item NodeMetricsGenerator;
- \item ProcessLifecycleController;
- \item ProcessReaperTask;
- \item RogueProcessReaper;
-
- This module is responsible for examining \varDuccProperties~to
- extract various rogue processes handling configuration
- information and applying accordingly.
+ \item Command Executor
- Relevant configuration information comprises:
- \begin{itemize}
- \item ducc.agent.rogue.process.reaper.script;
- \item ducc.agent.rogue.process.purge.delay;
- \item ducc.agent.rogue.process.kill;
- \end{itemize}
+ This module is the base class that provides functionality to
+ launch a user specified process within the
+ \varResourceManager~allocated share.
- \end{itemize}
-
- \subsubsection{Deploy}
+ \item \varDUCC~Command Executor
+
+ This module launches a user specified process within the
+ \varResourceManager~allocated share.
+ The process may be constrained by a \varLinuxControlGroup~and
+ may be spawned as the submitting \varUser.
+
+ \item \varJVM~Args Parser
+
+ The \varJVM~Args Parser module extracts user specified \varJVM~arguments
+ for use in building an \varAgent-launchable subprocess comprising
+ the user specified executable code.
+
+ \item Launcher
+
+ The Managed Process module provides virtual \varAgent~capability.
+
+ This module comprises a method used to launch multiple Agents
+ on the same physical machine.
+ It allows for the scale up Agents on a single machine to simulate load.
+ Each Agent instance assumes a given name and IP address.
+
+ \item Managed Process
+
+ The Managed Process module manages a state machine for each
+ \varAgent-managed user process. The states comprise:
+
+ \begin{itemize}
+ \item Starting
+ \item Initializing
+ \item Ready
+ \item Failed
+ \item Stopped
+ \end{itemize}
+
+ \item Process Stream Consumer
+
+ The Process Stream Consumer module captures and redirects user process output
+ to a log file.
+
+ \end{itemize}
- \begin{itemize}
- \item AbstractManagedService;
- \item ManagedService;
- \item ServiceAdapter;
- \item ServiceStateNotificationAdapter;
- \item ManagedUimaService;
- \item ProcessEventListener;
- \item UimaAsServiceConfiguration;
- \end{itemize}
+ \subsubsection{Metrics Collectors}
- \subsubsection{Lifecycle}
+ The modules comprising the Metrics Collectors package observe, calculate
+ or otherwise gather specific metrics. Metrics collected are relative to
+ these main categories:
+
+ \begin{itemize}
+ \item Garbage Collection Statistics
+ \item Node CPU, Node CPU Usage, Node CPU Utilization
+ \item Node Load Average
+ \item Node Memory Info
+ \item Node Users
+ \item Process CPU Usage
+ \item Process Major Faults
+ \item Process Resident Memory
+ \item Process Swap Usage
+ \end{itemize}
- The \varAgent~is responsible for receiving \varProcessManager~publications
- and appropriately launching and terminating \varDUCC-managed processes.
- And if enabled and available, to employ \varLinuxControlGroups~to assure
- that user code does not exceed various limits in accordance with fair
- sharing of the \varNodeMachineComputer.
-
- \begin{itemize}
- \item CGroups Manager;
- \item Command Executor;
- \item \varDUCC~Command Executor;
- \item JVM Args Parser;
- \item Launcher;
- \item Managed Process;
- \item Managed Service;
- \end{itemize}
+ \subsubsection{Monitor}
+
+ The modules comprising the Monitor package observe various states and
+ trigger actions when specific events occur.
- \subsubsection{Exceptions}
-
- \begin{itemize}
- \item NodeException;
- \item NodeInitializationException;
- \end{itemize}
-
- \subsubsection{Rogue Process Detector}
-
- Optionally by configuration, the \varAgents~will detect and terminate
- \varRogue~processes.
- \varRogue~processes are unsanctioned processes that exist on the \varAgent-managed
- \varNodeMachineComputer.
-
- Normally only known \varOS~processes, \varDUCC~framework and \varDUCC-managed
- processes are sanctioned.
- Exceptions to the rule can be configured.
-
- \subsubsection{Node Inventory}
-
- Gather and publish Node Inventory at regular intervals, comprising:
-
\begin{itemize}
- \item \varDUCC~assigned process identity;
- \item node identity;
- \item process identity;
- \item process state;
- \item resource state;
- \item allocation/de-allocation state;
- \item process initialization time;
- \item process run time;
- \item process memory utilization info;
- \item process swap utilization info;
- \item process CPU utilization info;
- \item process java utilization info;
- \item process CGroup info;
- \item process end reason;
- \item process end code;
+ \item \varAgent~Monitor
- \end{itemize}
-
- \subsubsection{Node Metrics}
-
- Gather and publish Node Metrics at regular intervals, comprising:
-
- \begin{itemize}
- \item users;
- \item node identity;
- \item CPU info;
- \item memory info;
- \end{itemize}
-
- \subsubsection{Collectors}
-
- Various collectors compile Process and Node metrics:
-
- \begin{itemize}
- \item node memory;
- \item node users;
- \item node load average;
- \item node CPU;
- \item node load average;
- \item process garbage collection;
- \item process memory and fault;
- \item process swap;
- \item process CPU
- \end{itemize}
-
+ When the \varAgent~detects problems with the network, broker, or ping
+ functions it terminates all \varAgent~deployed processes.
+
+ \item Rogue Process Detector
+
+ The \varAgent~detects aliens processes, those not expected for running
+ the \varOS~or \varDUCC~or user processes deployed by \varDUCC.
+ According to policy, the \varAgent~may take one or more actions:
+ \begin{itemize}
+ \item log an \varAlienDetected~event
+ \item send notification to subscribers of alien detection events
+ \item with root privilege, signal the alien process to terminate
+ \end{itemize}
+
+ \end{itemize}
+
+ \subsubsection{Processors}
+
+ The modules comprising the Processors package assemble information for
+ consideration when carrying out the \varAgent~duties as well as for publication
+ to other interested \varDUCC~daemons. Information collected are relative to
+ these main categories:
+
+ \begin{itemize}
+ \item Linux Node Metrics
+ \item Linux Process Metrics
+ \item Node Inventory
+ \item Node Metrics
+ \item Process Lifecycle
+ \item Process Metrics
+ \end{itemize}
+
\subsection{\varJobDriver (\varJD)}
There is one \varJobDriver per \varJob.