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.


Reply via email to