Author: challngr
Date: Thu Jun 27 17:06:28 2013
New Revision: 1497449

URL: http://svn.apache.org/r1497449
Log:
UIMA-2682 Documentation updates.

Modified:
    
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part1/overview.tex
    
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/cli/ducc-services.tex
    
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/ducc-uguide.tex
    
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-properties.tex
    
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-ws-security.tex
    
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/install.tex

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part1/overview.tex
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part1/overview.tex?rev=1497449&r1=1497448&r2=1497449&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part1/overview.tex
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part1/overview.tex
 Thu Jun 27 17:06:28 2013
@@ -184,7 +184,12 @@
 
         \item[Job Lifetime Management and Orchestration] DUCC includes an 
Orchestrator to manage the
           lifetimes of all entities in the system.
-          
+
+        \item[Node Sharing] DUCC allocates processes from one or more users on 
a node, each with a specified
+          amount of memory.  DUCC's preferred mechanism for constraining 
memory use is Linux
+          Control Groups, or CGroups.  For nodes that do not suport CGroups, 
DUCC agents monitor
+          RAM use and kill processes that exceed their share size by a 
settable fudge factor.
+
         \item[DUCC Agents] DUCC Agents manage each node's local resources and 
all
           processes started by DUCC. Each node in a cluster has exactly one 
Agent. The Agent
           \begin{itemize}

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/cli/ducc-services.tex
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/cli/ducc-services.tex?rev=1497449&r1=1497448&r2=1497449&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/cli/ducc-services.tex
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/cli/ducc-services.tex
 Thu Jun 27 17:06:28 2013
@@ -72,6 +72,14 @@
        information until it is {\em unregistered}.  Once registered, a service 
may be
        started, stopped, etc.
 
+       The {\em register} options are logically divided into two classes:
+       \begin{enumerate}
+         \item ``Meta'' options which define how the Service Manager manages 
the service, and
+         \item Options which describe the service itself.  These optinos are 
analagous to
+           those used to submit a job.
+       \end{enumerate}
+
+       The ``meta'' options include:
        \begin{description}
            \item[$--$register {[specification file] [options]}] The 
specification file is optional.  If
              specified, it has the same contents as described for the 
\hyperref[sec:cli.service-submit]{{\em
@@ -83,11 +91,216 @@
              
            \item[$--$instances {[n]}] This specifies the number of instances 
to start when the service
              is started.  If not specified, the default is 1.
-             
-           \item[Other keywords] These are the same as described for 
\hyperref[sec:cli.service-submit]{{\em
-                 ducc\_service\_submit}}
+                         
        \end{description}
 
+       The options describing the service include:
+    \begin{description}
+
+        \item[$--$classpath] The CLASSPATH used for the service, if the 
service is a
+          \hyperref[sec:services.types]{UIMA-AS services}.  If not specified, 
the CLASSPATH used
+          by the {\em ducc\_service\_submit} command is used.
+          
+        \item[$--$classpath\_order {[UserBeforeDucc | DuccBeforeUser]} ] When 
DUCC deploys a process,
+          set the user-supplied classpath before DUCC-supplied classpath, or 
the reverse.  This is
+          only valid for  \hyperref[sec:services.types]{UIMA-AS services}.
+          
+        \item[$--$debug ]
+          Enable debugging messages. This is primarily for debugging DUCC 
itself. 
+          
+        \item[$--$description {[text]}] The text is any quoted string used to 
describe the job. It is
+          displayed in the Web Server.
+
+          Note: When used as a CLI option, the description string must usually 
be quoted to protect
+          it from the shell.
+    
+        \item[$--$environment {[env vars]}] Blank-delimited list of 
environment variable
+          assignments for the service. Example:
+          \begin{verbatim}
+--environment TERM=xterm DISPLAY=:1.0
+          \end{verbatim}
+             
+          Additional entries may be copied from the user's environment based 
on the setting of
+          ducc.submit.environment.propagated in the global DUCC configuration 
ducc.properties.
+
+          Note: When used as a CLI option, the environment string must usually 
be
+          quoted to protect it from the shell.
+          
+        \item[$--$help ] This prints the usage text to the console.
+
+        \item[$--$jvm {[path-to-java]}] This specifies the JVM to use for 
+          \hyperref[sec:services.types]{UIMA-AS services}. If not
+          specified, the same JVM used by the Agents is used.  
+
+          Note: The path must be the full path the the Java executable (not 
+          simply the JAVA\_HOME environment variable.).  Example:
+\begin{verbatim}
+--jvm /share/jdk1.6/bin/java 
+\end{verbatim}
+
+
+        \item[$--$jvm\_args {[list]} ]        
+          This specifes extra JVM arguments to be provided to the server 
process for
+          \hyperref[sec:services.types]{UIMA-AS services}. It is a blank 
delimited 
+            list of strings. Example: 
+\begin{verbatim}
+--jvm_args -Xmx100M -Xms50M
+\end{verbatim}
+
+          Note: When used as a CLI option, the argument string must usually be 
quoted to protect
+          it from the shell.
+    
+          \item[$--$log\_directory {[path-to-log directory]}] This specifies 
the path to the directory for
+            the individual service instance logs. If not specified, the 
default is \$HOME/ducc/logs. Example:
+\begin{verbatim}
+--log_directory /home/bob 
+\end{verbatim}
+        
+        Within this directory DUCC creates a subdirectory for each job, using 
the numerical 
+        ID of the job. The format of the generated log file names as described
+        \hyperref[chap:job-logs]{here}.
+        
+        Note: Note that $--$log\_directory specifies only the path to a 
directory where 
+        logs are to be stored. In order to manage multiple processes running 
in multiple 
+        machines DUCC, sub-directory and file names are generated by DUCC and 
may 
+        not be directly specified. 
+
+      \item[$--$process\_DD {[DD descriptor]}] 
+        This specifies the UIMA Deployment Descriptor for 
\hyperref[sec:services.types]{UIMA-AS services}.
+
+      \item[$--$process\_executable {[program-name]}] For 
\hyperref[sec:services.types]{CUSTOM
+          services}, this specifies the full path of the program to execute.
+
+      \item[$--$process\_executable\_args {[list-of-arguments]}] For 
\hyperref[sec:services.types]{CUSTOM
+          services}, this specifies the program arguments, if any.
+
+      \item[$--$process\_failures\_limit {[integer]}] 
+        This specifies the maximum number of consecutive individual service 
instance failures that are to be 
+        tolerated before stopping the service. The default is five (5). If the 
instance is successfully
+        restarted, the count is reset to zero (0), so that the occasional 
process failure does not cause
+        the entire service to be terminated.
+        
+      \item[$--$process\_memory\_size {[size]}] This specifies the maximum 
amount of RAM in GB to be
+        allocated to each Job Process.  This value is used by the Resource 
Manager to allocate
+        resources. 
+
+      \item[$--$scheduling\_class {[classname]}] This specifies the name of 
the scheuling class the RM
+        will use to determine the resource allocation for each process. The 
names of the classes are
+        installation dependent. If not specified, the default is taken from 
the global DUCC
+        configuration \hyperref[sec:ducc.properties]{ducc.properties.}
+
+      \item[$--$service\_dependency{[list]}] This specifies a comma-delimited 
list of services the job
+        processes are dependent upon. Service dependencies are discussed in 
detail
+        \hyperref[sec:service.endpoints]{here}. Example:
+\begin{verbatim}
+--service_dependency UIMA-AS:RandomSleepAE:tcp:bluej682:61616 
UIMA-AS:OtherEp:tcp:bluej123:123 
+\end{verbatim}
+
+        Note: When used as a CLI option, the list must usually be
+        quoted to protect it from the shell.
+          
+
+      \item[$--$service\_linger {[seconds]}] This is the time in milliseconds 
to wait after the last
+        referring job or service exits before stopping a non-autostarted 
service.
+
+      \item[$--$service\_ping\_arguments {[argument-string]}] This is any 
arbitrary string
+        that is passed to the {\em init()} method of the service pinger.  The 
contents of
+        the string is entirely a function of the specifici service.  If not 
specified,
+        a {\em null} is passed in.
+
+        Note: When used as a CLI option, the string must usually be
+        quoted to protect it from the shell, if it contains blanks.
+
+        The build-in default UIMA-AS pinger supports an argument string of the 
following form
+        (with NO embedded blanks):
+\begin{verbatim}
+     queue_threshold=nn,window=mm,broker_jmx_port=pppp,meta_timeout=tttt
+\end{verbatim}
+        
+        The keywords in the string have the following meaning:
+        \begin{description}
+          \item[queue\_threshold=nn] If the depth of the ActiveMq Queue for 
the service exceeds
+            this value for some period of time, the health of the service is 
marked ``poor''.
+            If omitted, the value is 0, and no quality measurement is made.
+          \item[window=ww] This defines a ``window'' over which the queue 
threshold is measured.
+            the value is the number of consecutive measurements over which the 
queue depth must
+            exceed the threshold.  If omitted, the window size is 0.
+          \item[broker\_jmx\_port=pppp] This is the JMX port for the service's 
broker.  If not
+            specified, the default of 1099 is used.  This is used to gather 
ActiveMq statistics
+            for the service.
+          \item[meta\_timeout=tttt] This is the time, in milliseconds, to wait 
for a response
+            to UIMA-AS {\em get-meta}.  If not specified, the default is 5000 
milliseconds.
+        \end{description}
+      
+      \item[$--$service\_ping\_class {[classname]}] This is the Java class 
used to ping a service. 
+
+        This parameter is required for CUSTOM services.
+
+        This parameter may be specified for UIMA-AS services; however, DUCC 
supplies a default
+        pinger for UIMA-AS services.
+
+      \item[$--$service\_ping\_classpath {[classpath]}] If {\em 
service\_ping\_class} is specified,
+        this is the classpath containing service\_custom\_ping class and 
dependencies.  If not
+        specified, the Agent's classpath is used (which will generally be 
incorrect.)
+
+      \item[$--$service\_ping\_dolog {[boolean]}] If specified, write pinger 
stdout and stderr
+        messages to a log, else suppress the log. See 
\hyperref[sec:service.pingers]{Service Pingers}
+        for details.
+
+      \item[$--$service\_ping\_jvm\_args {[java-system-property-assignments]}] 
If 
+        {\em service\_ping\_class} is specified, these are the arguments 
+        to pass to jvm when running the pinger. The arguments are specified as 
a blank-delimited
+        list of string.  Example:
+\begin{verbatim}
+--service_ping_jvm_args -Xmx400M -Xms100M
+\end{verbatim}
+        
+        Note: When used as a CLI option, the arguments must usually be
+        quoted to protect them from the shell.
+
+      \item[$--$service\_ping\_timeout {[time-in-ms]}] This is the time in 
milliseconds to wait for a
+        ping to the service.  If the timer expires without a response the ping 
is ``failed''. After
+        a certain number of consecutive failed pings, the service is 
considered ``down.''  See
+        \hyperref[sec:service.pingers]{Service Pingers} for more details.
+
+      \item[$--$service\_request\_endpoint {[string]}] This specifies the 
expected service id.  
+
+        This string is optional for UIMA-AS services; if specified, however, 
it must be of the
+        form {\tt UIMA-AS:queue:broker-url}, and both the queue and broker 
must match those specified in the
+        service DD specifier.
+
+        If the service is CUSTOM, the endpoint is required, and must be of the 
form
+        {\tt CUSTOM:string} where the contents of the string are determined by 
the service.
+
+      \item[$--$specification, $-$f {[file]}] All the parameters used to 
submit a service may be placed in a
+        standard Java properties file.  This file may then be used to submit 
the service (rather than
+        providing all the parameters directory to submit).
+        For example, 
+
+\begin{verbatim}
+ducc_service_submit --specification svc.props 
+ducc_service_submit -f svc.props 
+\end{verbatim}
+        
+        where the svc.props contains: 
+
+\begin{verbatim}
+environment         = AE_INIT_TIME=5000 AE_INIT_RANGE=1000 INIT_ERROR=0
+description         = Test Service 3
+jvm_args            = -DdefaultBrokerURL=tcp://agent86:61616
+classpath           = /home/bob/lib/app.jar
+process_memory_size = 15
+working_directory   = /home/bob/services
+process_DD          = /home/bob/services/service.xml
+scheduling_class    = fixed
+service_dependency  =  UIMA-AS:FixedSleepAE_4:tcp://agent86:61616
+\end{verbatim}
+        
+        \item[$--$working\_directory {[directory-name]}]
+          This specifies the working directory to be set by the Job Driver and 
Job Process processes. 
+          If not specified, the current directory is used.
+    \end{description}
+
 
     \subsection{ducc\_services --start Options}
 

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/ducc-uguide.tex
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/ducc-uguide.tex?rev=1497449&r1=1497448&r2=1497449&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/ducc-uguide.tex
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/ducc-uguide.tex
 Thu Jun 27 17:06:28 2013
@@ -98,8 +98,9 @@ ducc_job_submit --specification 1.job --
     % \input{part2/cli/ducc-monitor.tex}
     \input{part2/cli/ducc-reserve.tex}
     \input{part2/cli/ducc-unreserve.tex}
-    \input{part2/cli/ducc-service-submit.tex}
-    \input{part2/cli/ducc-service-cancel.tex}
+    % service submit/cancel not part of the public CLI/API
+    % \input{part2/cli/ducc-service-submit.tex}
+    % \input{part2/cli/ducc-service-cancel.tex}
     \input{part2/cli/ducc-process-submit.tex}
     \input{part2/cli/ducc-process-cancel.tex}
     \input{part2/cli/ducc-services.tex}

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-properties.tex
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-properties.tex?rev=1497449&r1=1497448&r2=1497449&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-properties.tex
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-properties.tex
 Thu Jun 27 17:06:28 2013
@@ -1278,10 +1278,17 @@
             
 
           \item[ducc.agent.launcher.cgroups.enable] \hfill \\
-            \phantomsection\label{itm:props-agent.cgroups.enable}
-            Enable or disable CGroups support.  
+            \phantomsection\label{itm:props-agent.cgroups.enable} Enable or 
disable CGroups support.
+            If CGroups are not installed on a specific machine, this is 
ignored.
+
+            With CGroups the RSS for a managed process (plus any children 
processes it may spawn) is
+            limited to the allocated share size. Additional memory use goes to 
swap space. DUCC
+            monitors and limits swap use to the same proportion of total swap 
space as allocated
+            share size is to total RAM. If a process exceeds its allowed swap 
space it is terminated
+            and a ShareSizeExceeded message is sent to the Job Driver.
+
+            Nodes not using CGroups fall back to the 
ducc.agent.share.size.fudge.factor.
 
-            If CGroups are not installed on a specific machine, this is 
ignored. 
             \begin{description}
               \item[Default Value] true
               \item[Type] Tuning 
@@ -1406,7 +1413,7 @@
       \item[ducc.uima-as.dd2spring.xsl.path] \hfill \\
         This configures the path the required dd2spring xsl definitions. 
         \begin{description}
-          \item[Default Value] \$\{DUCC\_HOME}/resources/dd2sprint.xsl
+          \item[Default Value] \$\{DUCC\_HOME\}/resources/dd2sprint.xsl
           \item[Type] Private 
         \end{description}
         

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-ws-security.tex
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-ws-security.tex?rev=1497449&r1=1497448&r2=1497449&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-ws-security.tex
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-ws-security.tex
 Thu Jun 27 17:06:28 2013
@@ -12,7 +12,8 @@
     \begin{enumerate}
       \item Author an authentication manager Java class implementing interface
       \begin{verbatim}
-org.apache.uima.ducc.common.authentication.IAuthenticationManager\end{verbatim}
+org.apache.uima.ducc.common.authentication.IAuthenticationManager
+      \end{verbatim}
       \item Create an authentication jar file comprising the
       authentication manager Java class
       \item Install your authentication jar file and any dependency jar files
@@ -20,8 +21,8 @@ org.apache.uima.ducc.common.authenticati
       \item Update your ducc.properties file with authentication class name
       and jar file name(s) information
       \item Create a ducc.administrators file
-    \end{enumerate}
-
+      \end{enumerate}
+      
     Note: When a user clicks on the WebServer Login link, the login dialog is
     shown. On that dialog panel is shown the \mbox{authenticator: {\em
     version}}, which is supplied by your authentication manager 
implementation's {\em
@@ -31,7 +32,6 @@ org.apache.uima.ducc.common.authenticati
     disabled.
     
 \subsection{Example Implementation}
-    \begin{description}
     
     Shown below is an example implementation which can be used as a template
     for coding protection by means of interfacing with your site's security
@@ -96,10 +96,8 @@ public class AuthenticationManager imple
 
 }
     \end{verbatim}
-    \end{description}
         
 \subsection{IAuthenticationManager}
-    \begin{description}
        
     Shown below is the interface which must be implemented by your
     authentication manager.
@@ -158,10 +156,9 @@ public interface IAuthenticationManager 
     }
 }
     \end{verbatim}
-    \end{description}
+
 
 \subsection{IAuthenticationResult}
-    \begin{description}
     
     Shown below is the interface which must be returned by the required
     authentication methods in your authentication manager.
@@ -182,10 +179,8 @@ public interface IAuthenticationResult {
     public Exception getException();
 }
     \end{verbatim}
-    \end{description}
     
 \subsection{Example ANT script to build jar}
-    \begin{description}
     
     Shown below is an example ANT script to build a ducc-authenticator.jar 
file.
     The resulting jar file should be placed user DUCC's lib directory along 
with
@@ -210,10 +205,8 @@ public interface IAuthenticationResult {
     
 </project>
     \end{verbatim}
-    \end{description}
     
 \subsection{Example ducc.properties entries}
-    \begin{description}
     
     Shown here is a snippet of the ducc.properties file defining the class to 
be
     used for authentication and the administrator created folder
@@ -225,15 +218,13 @@ public interface IAuthenticationResult {
     
     \begin{verbatim}
 # The class that performs authentication (for the WebServer)
-org.apache.uima.ducc.example.authentication.module.AuthenticationManager
+ducc.authentication.implementer = 
org.apache.uima.ducc.example.authentication.module.AuthenticationManager
 
 # Site specific jars: include all jars in directory site-security
 ducc.local.jars = site-security/*
     \end{verbatim}
-    \end{description}   
     
 \subsection{Example ducc.administrators}
-    \begin{description}
     
     Example contents of ducc.administrators file located within DUCC's 
resources
     directory. Only userids listed here can assume the Administrator role when 
@@ -244,4 +235,6 @@ jdoe
 fred
 hal9000
     \end{verbatim}
-    \end{description}         
\ No newline at end of file
+
+
+  

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/install.tex
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/install.tex?rev=1497449&r1=1497448&r2=1497449&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/install.tex
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/install.tex
 Thu Jun 27 17:06:28 2013
@@ -25,12 +25,14 @@ trunk/target directory. The distribution
 where [version] is the DUCC version; for example, {\em \distro}.  This 
document will refer to the distribution
 file as the ``$<$distribution.file$>$''.
 
-\subsection{Software Prerequisites}
+\section{Software Prerequisites}
+\label{sec:install.prerequisites}
 Both single and multi-user configurations have the following software 
pre-requisites:
 
 \begin{itemize}
   \item A userid {\em ducc}, and group {\em ducc}.  User {\em ducc} must the 
the only member of group {\em ducc}.
-  \item Reasonably current Linux.  DUCC has been tested on SUSE Linux 
distributions.
+  \item Reasonably current Linux.  DUCC has been tested on SLES 10.2, 11.1, 
and 11.2, and RHEL 6.3.
+  \item For CGroupt support, libcgroup1-0.37+ on SLES and libcgroup-0.37+ on 
RHEL.
   \item IBM or Oracle Java JRE 1.6 or greater.
   \item Python 2.x, where 'x' is 4 or greater.  DUCC has not been tested on 
Python 3.x.
 \end{itemize}
@@ -64,7 +66,7 @@ To build the documentation, the followin
 More detailed one-time setup instructions for source-level builds via 
subversion can be found here:
 \url{http://uima.apache.org/one-time-setup.html\#svn-setup}
 
-\subsection{Documentation}
+\section{Documentation}
 After single-user installation, the DUCC documentation is found (in both PDF 
and HTML format) in the directory 
 ducc\_runtime/docs.  As well, the DUCC web server contains a link to the full 
documentation on each major page.
 The API is documented only via JavaDoc, distributed in the web server's root 
directory 
@@ -76,7 +78,7 @@ If building from source, Maven places th
     \item {\tt trunk/site/apidocs} (API Javadoc)
 \end{itemize}
     
-\subsection{Single-user  Installation and Verification}
+\section{Single-user  Installation and Verification}
 
 Single-user installation sets up an initial, working configuration on a single 
system.  No security
 is established, and all jobs run as user ducc.  Note that all installation 
must be done as user ducc.
@@ -85,7 +87,7 @@ Verification submits a very simple UIMA 
 working, one may proceed to upgrade to full installation.
 
 
-\subsection{Minimal Hardware Requirements for single-user Installation}
+\section{Minimal Hardware Requirements for single-user Installation}
 \begin{itemize}
     \item One Intel-based or IBM Power-based system.  (More systems may be 
added during multi-user
       installation, described below.)
@@ -102,7 +104,7 @@ clusters consisting of multiple nodes wi
 requirements are for initial test and evaluation purposes, but will not be 
sufficient to run actual
 workloads.
 
-\subsection{Single-user System Installation}
+\section{Single-user System Installation}
 \label{subsec:install.single-user}
     \begin{enumerate}
       \item Expand the distribution file:
@@ -162,7 +164,7 @@ The post-installation script performs th
     \item Insures that the (supplied) ActiveMQ broker is runnable.
 \end{enumerate}
 
-\subsection{Initial System Verification}
+\section{Initial System Verification}
 
 Here we start the basic installation, submit a simple UIMA-AS job, verify that 
it ran, and stop
 DUCC.  Once this is confirmed working DUCC is ready to use in an unsecured, 
single-user mode on a
@@ -264,7 +266,7 @@ $HOME/ducc/logs/job-id
       Installation and Verification to set up multiple-user support and 
optionally, multi-node
       operation.
 
-\subsection{Logs}
+\section{Logs}
     The DUCC system logs are written to the directory
 \begin{verbatim}
     ducc_runtime/logs
@@ -278,13 +280,15 @@ $HOME/ducc/logs/job-id
     $HOME/ducc/logs/<jobid>
 \end{verbatim}
 
-\subsection{Multi-User Installation and Verification}
+\section{Multi-User Installation and Verification}
   
-    Multi-user installation consists of two steps over and above single-user 
installation:
+    Multi-user installation consists of these steps over and above single-user 
installation:
     \begin{enumerate}
         \item Install and configure the setuid-root program, ducc\_ling.  This 
small program allows DUCC
           jobs to be run as the submitting user rather than user ducc.
 
+        \item Optionally install and configure CGroups.
+
         \item Optionally update the configuration to include additional nodes.
      \end{enumerate}
 
@@ -302,7 +306,7 @@ $HOME/ducc/logs/job-id
          \item Root access is (briefly) required to install a small 
setuid-root program on each system.
       \end{itemize}
 
-\subsection{Ducc\_ling Installation}
+\section{Ducc\_ling Installation}
     Before proceeding with this step, please note: 
     \begin{itemize}
         \item This step is required ONLY to install multi-user capabilities.
@@ -392,19 +396,67 @@ ducc.agent.launcher.ducc\_spawn\_path=/l
            prevent the LD\_LIBRARY\_PATH from being set by a program with root 
authority, so this is
            done AFTER changing userids).
        \end{itemize}
-       
-\subsection{Set up the full nodelists}
-To add additional nodes to the ducc cluster, DUCC needs to know what nodes to 
start its Agent
-processes on.  These nodes are listed in the file
+
+\section{CGroups Installation and Configuration}
+    The steps in this task must all be done as user root.
+
+    To install and configure CGroups for DUCC:
+    \begin{enumerate}
+       \item Install the appropriate 
\hyperref[sec:install.prerequisites]{libcgroup package} at level 0.37
+         or above.
+
+       \item Configure /etc/cgconfig.conf as follows:
 \begin{verbatim}
-ducc_runtime/resources/ducc.nodes.  
+   # Mount cgroups
+   mount {
+      memory = /cgroup;
+   }
+   # Define cgroup ducc and setup permissions
+   group ducc {
+    perm {
+        task {
+           uid = ducc;
+        }
+        admin {
+           uid = ducc;
+        }
+    }
+    memory {}
+   }
+\end{verbatim}
+       \item Start the cgconfig service:
+\begin{verbatim}
+   service cgconfig start
+\end{verbatim}
+         
+       \item Verify cgconfig service is running by the existence of directory: 
+\begin{verbatim}
+   /cgroups/ducc
+\end{verbatim}
+         
+       \item Configure the cgconfig service to start on reboot:
+\begin{verbatim}
+   chkconfig cgconfig on
 \end{verbatim}
 
-During initial installation, this file was initialized with the node DUCC is 
installed on.
-Additional nodes may be added to the file using a text editor to increase the 
size of the DUCC
-cluster.
+       \item Update \hyperref[itm:props-agent.cgroups.enable]{ducc.properties} 
to enable CGroups.
+         Note that if CGroups is not installed, the DUCC Agent will detect 
this and not attempt to
+         use the feature.  It is completely safe to enable CGroups in {\em 
ducc.properties} on
+         machines where it is not installed.
+    \end{enumerate}
 
-\subsection{Full DUCC Verification}
+\section{Set up the full nodelists}
+   To add additional nodes to the ducc cluster, DUCC needs to know what nodes 
to start its Agent
+   processes on.  These nodes are listed in the file
+\begin{verbatim}
+ducc_runtime/resources/ducc.nodes.  
+\end{verbatim}
+   
+   During initial installation, this file was initialized with the node DUCC 
is installed on.
+   Additional nodes may be added to the file using a text editor to increase 
the size of the DUCC
+   cluster.
+ 
+\section{Full DUCC Verification}
 
 This is identical to initial verification, with the one difference that the 
job ``1.job'' should be
 submitted as any user other than ducc.  Watch the webserver and insure that 
you see the job execute


Reply via email to