| % |
| % 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. |
| % |
| |
| \section{Properties} |
| |
| Public properties are in a primary configuration file is called ducc.properties |
| and always resides in the directory |
| ducc\_runtime/resources. |
| |
| Private properties are in a secondary configuration file call ducc.private.properties |
| and always resides in the directory |
| ducc\_runtime/resources/private. |
| |
| \section{Properties merging} |
| \label{sec:admin.properties-merge} |
| |
| With DUCC 2.0.0 the shipped DUCC properties file is designed to be read-only. Installations |
| create a local properties file which is automatically merged with the default properties file |
| as part of system startup. |
| |
| The shipped DUCC properties file is called {\em default.ducc.properties}. This file should |
| never be edited or modified. |
| |
| The local site override properties file is called {\em site.ducc.properties}. This is a |
| normal Java properties file containing override and additional properties. An initial |
| {\em site.ducc.properties} is created on installation of DUCC 2.0.0 by {\em ducc\_post\_install}. |
| |
| On startup |
| (\hyperref[subsec:admin.start-ducc]{\em start\_ducc}), |
| verification |
| (\hyperref[subsec:admin.check-ducc]{\em check\_ducc}), |
| and RM reconfiguration |
| (\hyperref[subsec:admin.rm-reconfigure]{\em rm\_reconfigure}), |
| the two properties files are |
| merged, with {\em site.ducc.properties} taking preference, to create the operational file, |
| {\em ducc.properties}, which is used by all DUCC components. This file should not be |
| edited as it will be over-written whenever {\em start\_ducc} or {\em check\_ducc} is run. |
| |
| \section{ducc.properties} |
| \label{sec:ducc.properties} |
| |
| Some of the properties in ducc.properties are intended as the "glue" that brings the various |
| DUCC components together and lets then run as a coherent whole. These types of properties should |
| be modified only by developers of DUCC itself. In the description below these properties are |
| classified as "Private". |
| |
| Some of the properties are tuning parameters: timeouts, heartbeat intervals, and so on. These |
| may be modified by DUCC administrators, but only after experience is gained with DUCC, and only |
| to solve specific performance problems. The default tuning parameters have been chosen by the |
| DUCC system developers to provide "best" operation under most reasonable situations. In the |
| description below these properties are classified as "Tuning". |
| |
| Some of the properties describe the local cluster configuration: the location of the ActiveMQ |
| broker, the location of the Java JRE, port numbers, etc. These should be modified by the DUCC |
| administrators to configure DUCC to each individual installation. In the description below these |
| properties are classified as "Local". |
| |
| See also |
| |
| \subsection{General DUCC Properties} |
| \begin{description} |
| |
| \item[ducc.authentication.implementer] \hfill \\ |
| This specifies the class used for WebServer session authentication. If unconfigured, |
| the Web Server enforces no authentication. |
| \begin{description} |
| \item[Default] org.apache.uima.ducc.common.authentication.LinuxAuthenticationManager |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.authentication.users.include] \hfill \\ |
| Specify users allowed to log in to the web server. This is used only |
| if {\em ducc.authentication.implementor} is the LinuxAuthenticationManager. |
| \begin{description} |
| \item[Default] All users may log in. |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.authentication.users.exclude] \hfill \\ |
| Specify users not allowed to log in to the webserver. This is used only |
| if {\em ducc.authentication.implementor} is the LinuxAuthenticationManager. |
| \begin{description} |
| \item[Default] No users are excluded. |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.authentication.groups.include] \hfill \\ |
| Specify groups allowed to log in. Groups are defined by Unix authentication. Only |
| users in the groups specified here may log in to the web server. This is used only |
| if {\em ducc.authentication.implementor} is the LinuxAuthenticationManager. |
| \begin{description} |
| \item[Default] Users in all groups may log in. |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.authentication.groups.exclude] \hfill \\ |
| Specify groups not allowed to log in. Groups are defined by Unix authentication. |
| Users in the groups specified here may not log in to the web server. This is used only |
| if {\em ducc.authentication.implementor} is the LinuxAuthenticationManager. |
| \begin{description} |
| \item[Default] No users are excluded due to group membership. |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.admin.endpoint] \hfill \\ |
| This is the JMS endpoint name used for DUCC administration messages. |
| \begin{description} |
| \item[Default] ducc.admin.channel |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.admin.endpoint.type] \hfill \\ |
| This is the JMS message type used for DUCC administration requests. If changed DUCC |
| admin may not work. |
| \begin{description} |
| \item[Default] topic |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.broker.automanage] \hfill \\ |
| If set to ``true'', DUCC will start and stop the ActiveMQ broker as part of its normal start/stop |
| scripting. |
| \begin{description} |
| \item[Default] true |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.broker.configuration] \hfill \\ |
| This is the ActiveMQ configuration file to use, for auto-managed brokers only. The path |
| must be specified relative to the ActiveMQ installation directory. |
| \begin{description} |
| \item[Default] conf/activemq-ducc.xml |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.broker.credentials] \hfill \\ |
| This is the ActiveMQ credentials file used to authenticate DUCC daemons with the broker, for |
| auto-managed brokers only. |
| \begin{description} |
| \item[Default] \${ducc.private.resources}/ducc-broker-credentials.properties |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.broker.home] \hfill \\ |
| For DUCC auto-managed brokers only, this names the location where ActiveMQ is installed |
| installed. |
| |
| Note that the DUCC installation includes a default ActiveMQ. |
| \begin{description} |
| \item[Default] \duccruntime/activemq |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.broker.memory.options] \hfill \\ |
| For DUCC auto-managed brokers only, this names the ActiveMQ configuration file. The configuration |
| file is assumed to reside in the directory specified by {\em ducc.broker.home}, so the path must be relative |
| to that location. |
| \begin{description} |
| \item[Default] conf/activemq-ducc.xml |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.broker.url.decoration] \hfill \\ |
| The property is used by the DUCC Job Driver processes to modify the ActiveMQ broker URL |
| when connecting to the Job Processes. |
| |
| The supplied default is used to disable broker connection timeouts. From the ActiveMQ |
| documentation: "The maximum inactivity duration (before which the socket is considered |
| dead) in milliseconds. On some platforms it can take a long time for a socket to appear to |
| die, so we allow the broker to kill connections if they are inactive for a period of |
| time. Use by some transports to enable a keep alive heart beat feature. Set to a value |
| less-than-or-equal0 to disable inactivity monitoring. Declare the wire protocol used to |
| communicate with ActiveMQ." |
| |
| This decoration is used to keep the broker connection alive while a JVM is in a |
| long garbage collection. The applications that DUCC is designed to support can |
| spend significant time in garbage collection, which can cause spurious timeouts. By |
| default the DUCC configuration disables the timeout by setting it to 0. |
| |
| \begin{description} |
| \item[Default] wireFormat.maxInactivityDuration=0 |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.broker.hostname] \hfill \\ |
| This declares the node where the ActiveMQ broker resides. It MUST be updated to |
| the actual node where the broker is running as part of DUCC installation. The default value |
| will not work. |
| \begin{description} |
| \item[Default] \$\{ducc.head\}. The default is defined in the ducc property, {\em ducc.head}. |
| If you want to run the ActiveMQ broker on the ``ducc head'', this parameter need not |
| be changed. |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.broker.jmx.port] \hfill \\ |
| This is the port used to make JMX connections to the broker. This should only |
| be changed by administrators familiar with ActiveMQ configuration. |
| \begin{description} |
| \item[Default] 1100 |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.broker.memory.options] \hfill \\ |
| For DUCC auto-managed brokers only, this sets the {\tt -Xmx} heap size for the broker. |
| \begin{description} |
| \item[Default] -Xmx2G |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.broker.name] \hfill \\ |
| This is the internal name of the broker, used to locate Broker's MBean in JMX Registry. |
| It is NOT related to any node name. When using the ActiveMQ distribution supplied with |
| DUCC it should always be set to ``localhost''. The default should be changed only by |
| administrators familiar with ActiveMQ configuration. |
| \begin{description} |
| \item[Default] localhost |
| \item[Type] Local |
| \end{description} |
| |
| |
| \item[ducc.broker.port] \hfill \\ |
| This declares the port on which the ActiveMQ broker is listening for |
| messages. It MAY be updated as part of DUCC installation. ActiveMQ ships with port |
| 61616 as the default port, and DUCC uses that default. |
| \begin{description} |
| \item[Default] 61617 |
| \item[Type] Local |
| \end{description} |
| |
| |
| \item[ducc.broker.protocol] \hfill \\ |
| Declare the wire protocol used to communicate with ActiveMQ. |
| \begin{description} |
| \item[Default] tcp |
| \item[Type] Private |
| \end{description} |
| |
| |
| \item[ducc.broker.server.url.decoration] \hfill \\ |
| For DUCC auto-managed brokers only, this configures ActiveMQ Server url decoration. |
| |
| \begin{description} |
| \item[Default] transport.soWriteTimeout=45000 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.cli.httpclient.sotimeout] \hfill \\ |
| This is the timeout used by the CLI to communicate with DUCC, in milliseconds. If no |
| response is heard within this time, the request times out and is aborted. When set to 0 (the |
| default), the request never times out. |
| \begin{description} |
| \item[Default] 0 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.cluster.name] \hfill \\ |
| This is a string used in the Web Server banner to identify the local cluster. It is used |
| for informational purposes only and may be set to anything desired. |
| \begin{description} |
| \item[Default] Apache UIMA-DUCC |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.head] \hfill \\ |
| This property declares the node where the DUCC adminstrative processes run (Orchestrator, |
| Resource Manager, Process Manager, Service Manager). This property is required and MUST be |
| configured in new installation. The installation script |
| \hyperref[subsec:admin.ducc-post-install]{ducc\_post\_install} initializes this property to the |
| node the script is executed on. |
| \begin{description} |
| \item[Default] There is no default, this must be configured during system installation. |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.jms.provider] \hfill \\ |
| Declare the type of middleware providing the JMS service used by DUCC. |
| \begin{description} |
| \item[Default] activemq |
| \item[Type]Private |
| \end{description} |
| |
| \item[ducc.jmx.port] \hfill \\ |
| Every process started by DUCC has JMX enabled by default. When more than one process |
| runs on the same machine this can cause port conflicts. The property "ducc.jmx.port" is |
| used as the base port for JMX. If the port is busy, it is incremented internally until a free |
| port is found. |
| |
| The web server's \hyperref[sec:system-details.daemons]{"System $->$ Daemons"} tab is used |
| to find the JMX URL that gets assigned to each of the DUCC management processes. The web |
| server's \hyperref[sec:ws-job-details]{Job details} page for each job is used to find the |
| JMX URL that is assigned to each JP. |
| |
| \begin{description} |
| \item[Default] 2099 |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.jvm] \hfill \\ |
| This specifies the full path to the JVM to be used by the DUCC processes. This MUST be |
| configured. The installation script |
| \hyperref[subsec:admin.ducc-post-install]{ducc\_post\_install} initializes this property to |
| full path to ``java'' in the installer's environment. (If the ``java'' command cannot |
| be found, ducc\_post\_install exits with error.) |
| \begin{description} |
| \item[Default] None. Must be configured during installation. |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.local.jars] \hfill \\ |
| This may be used to list site-specific jars that are required by local |
| customizations, e.g. authentication. The value must be a blank-delimited list of jars |
| relative to the {\em DUCC\_HOME/lib} directory. |
| \begin{description} |
| \item[Default] (unconfigured) |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.node.min.swap.threshold] \hfill \\ |
| Specify a minimum amount of free swap space available on a node. |
| If an agent detects free swap space dipping below the value defined |
| below, it will find the fattest (in terms of memory) process in its |
| inventory and kill it. The value of the parameter below is expressed |
| in bytes. |
| |
| If set to 0, the threshold is disabled. |
| \begin{description} |
| \item[Default] 0 |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.agent.jvm.args] \hfill \\ |
| This specifies the list of arguments passed to the JVM when spawning the Agent. |
| \begin{description} |
| \item[Default] -Xmx100M |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.driver.jvm.args] \hfill \\ |
| If enabled, the arguments here are automatically added to the JVM arguments specified for |
| the Job Driver process. |
| |
| Note: if the user-supplied JVM arguments contain a -Xmx entry then |
| any -Xmx value specified here will be ignored. |
| \begin{description} |
| \item[Default] (unconfigured) |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.driver.jetty.max.threads] \hfill \\ |
| Max number of threads in Jetty thread pool servicing incoming HTTP requests. |
| \begin{description} |
| \item[Default] 100 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.driver.jetty.thread.idletime] \hfill \\ |
| Max idle time for jetty threads (in milliseconds). When a thread exceeds |
| its idle time it will be terminated. |
| \begin{description} |
| \item[Default] 60000 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.orchestrator.jvm.args] \hfill \\ |
| This specifies the list of arguments passed to the JVM when spawning the Orchestrator. |
| \begin{description} |
| \item[Default] -Xmx1G |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.pm.jvm.args] \hfill \\ |
| This specifies the list of arguments passed to the JVM when spawning the Process Manager. |
| \begin{description} |
| \item[Default] -Xmx1G |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.process.jvm.args] \hfill \\ |
| If enabled, the arguments here are added by DUCC to the JVM arguments in the user's job |
| processes. |
| \begin{description} |
| \item[Default] (unconfigured) |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.rm.jvm.args] \hfill \\ |
| This specifies the list of arguments passed to the JVM when spawning the Resource |
| Manager. |
| \begin{description} |
| \item[Default] -Xmx1G |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.security.home] \hfill \\ |
| This directory holds the encryption keys used for request validation. |
| By default DUCC employs {\em \$\{user.home\}} as the user's security directory. |
| When ducc.security.home is specified, DUCC will instead employ {\em \$\{ducc.security.home\}/\$\{user.name\}} |
| \begin{description} |
| \item[Default] (unconfigured) |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.sm.jvm.args] \hfill \\ |
| This specifies the list of arguments passed to the JVM when spawning the Service Manager. |
| \begin{description} |
| \item[Default] -Xmx1G |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.ws.jvm.args] \hfill \\ |
| specifies the list of arguments passed to the JVM when spawning the |
| Webserver. |
| \begin{description} |
| \item[Default] -Xmx8G |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.locale.language] \hfill \\ |
| Establish the language for national language support of messages. Currently only "en" is |
| supported. |
| \begin{description} |
| \item[Default] en |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.locale.country] \hfill \\ |
| Establish the country for National Language Support of messages. Currently only "us" is |
| supported. |
| \begin{description} |
| \item[Default] us |
| \item[Type] Private |
| \end{description} |
| |
| |
| \item[ducc.runmode] \hfill \\ |
| When set to "Test" this property bypasses userid and authentication checks. It is intended |
| for use ONLY by DUCC developers. It allows developers of DUCC to simulate a multiuser |
| environment without the need for root privileges. |
| |
| Note: WARNING! Enabling this feature in a production DUCC system is a serious |
| security breach. It should only be set by DUCC developers running with an un-privileged |
| ducc\_ling. |
| \begin{description} |
| \item[Default] Unconfigured. When unconfigured, test mode is DISABLED. |
| \item[Type] Local |
| \end{description} |
| |
| |
| \item[ducc.ssh] \hfill \\ |
| When set to "False" this property bypasses use of ssh. |
| |
| It is intended for use ONLY by DUCC developers. It allows developers of DUCC |
| to simulate a multinode environment without the need for ssh to "remote" nodes |
| for a single host deployment. |
| |
| Note: WARNING! Enabling this feature in a production DUCC system is a serious |
| distributed computing usability hinderance. It should only be set by DUCC developers |
| for testing or demo purposes. |
| |
| \begin{description} |
| \item[Default] True |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.signature.required] \hfill \\ |
| When set, the CLI signs each request so the Orchestrator can be sure the requestor is |
| actually who he claims to be. |
| \begin{description} |
| \item[Default] on |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.job.max.pipelines.count] \hfill \\ |
| This enforces a maximum number of pipelines per job, over all its processes. No |
| job will have more active work-items than this dispatched. |
| |
| The value is related to the size of the Job Driver heap and the real memory consumed by JD. |
| If the JD is consuming too much memory, try reducing this value. |
| |
| Note: formerly ducc.threads.limit |
| |
| \begin{description} |
| \item[Default] 5000 |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.environment.propagated] \hfill \\ |
| This specifies the environmental variables whose values will be merged with the |
| user-specified environment option on job, process and service submissions. |
| |
| \begin{description} |
| \item[Default] USER HOME LANG DUCC\_SERVICE\_INSTANCE |
| \item[Type] Local |
| \end{description} |
| |
| \end{description} |
| |
| |
| \subsection{Web Server Properties} |
| |
| \begin{description} |
| \item[ducc.ws.configuration.class] \hfill \\ |
| The name of the pluggable java class used to implement the Web Server. |
| \begin{description} |
| \item[Default Value] org.apache.uima.ducc.ws.config.WebServerConfiguration |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.ws.node] \hfill \\ |
| This is the name of the node the web server is started on. If not specified, the web server is |
| started on {\tt \$\{ducc\.head\}}. |
| \begin{description} |
| \item[Default Value] (unconfigured) |
| \item[Type] Local |
| \end{description} |
| |
| |
| \item[ducc.ws.ipaddress] \hfill \\ |
| In multi-homed systems it may be necessary to specify to which of the multiple addresses |
| the Web Server listens for requests. This property is an IP address that specifies to which |
| address the Web Server listens. |
| \begin{description} |
| \item[Default Value] (unconfigured) |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.ws.port] \hfill \\ |
| This is the port on which the DUCC Web Server listens for requests. |
| \begin{description} |
| \item[Default Value] 42133 |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.ws.port.ssl] \hfill \\ |
| This is the port that the Web Server uses for SSL requests (such as authentication). |
| \begin{description} |
| \item[Default Value] 42155 |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.ws.banner.message] \hfill \\ |
| A message to be displayed under the banner of each main page. |
| Changes are effective immediately. |
| Can be used, for example, to post a notice that the cluster will |
| be down for maintenenace. |
| \begin{description} |
| \item[Default Value] None |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.ws.session.minutes] \hfill \\ |
| Once authenticated, this property determines the lifetime of the authenticated session to the |
| Web Server. |
| \begin{description} |
| \item[Default Value] 60 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.ws.max.history.entries] \hfill \\ |
| DUCC maintains a history of all jobs. The state of jobs, both old and current are shown |
| in the Webserver's Jobs Page. To avoid overloading this page and the Web Server, the maximum |
| number of entries that can be shown is regulated by this parameter. |
| \begin{description} |
| \item[Default Value] 4096 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.ws.login.enabled] \hfill \\ |
| If true, users are allowed to login to Webserver. If false, users are |
| not allowed to login to Webserver. Shipped value set to false. |
| However, default value if property not specified is true. |
| \begin{description} |
| \item[Default Value] true |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.ws.precalculate.machines] \hfill \\ |
| This is a choice between updating the sorted internal representation of the |
| Machines page as each Agent publication arrives (true, somewhat CPU intensive |
| in a large cluster but fast browser response time) and updating only upon viewer |
| demand (false, CPU intensive for each browser request with slower response time). |
| \begin{description} |
| \item[Default Value] true |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.ws.automatic.cancel.minutes] \hfill \ Optionally configure the webserver job |
| automatic cancel timeout. To disable this feature specify 0. This is employed when a user |
| specifies {\em$--$wait\_for\_completion} flag on job submission, in which case the job |
| monitor program must visit |
| \begin{verbatim} |
| http://<host>:<port>/ducc-servlet/proxy-job-status?id=<job-id> |
| \end{verbatim} |
| within this expiry time. Otherwise the job will be automatically canceled. |
| |
| This provides a safeguard against runaway jobs or managed reservations, if the |
| submitter gets disconnected from DUCC in some way. |
| |
| If the feature is disabled by specifing ``0'', no work is canceled even if the |
| monitor itself disappears. |
| |
| \begin{description} |
| \item[Default Value] 10 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.ws.jsp.compilation.directory] \hfill \\ |
| This specifies the temporary used by the Web Server's JSP engine to compile its JSPs. |
| The directory contents are removed each time the Web Server is restarted. |
| \begin{description} |
| \item[Default Value] /tmp/ducc/jsp |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.ws.requestLog.RetainDays] \hfill \\ |
| Optionally configure the webserver request log, default, if not configured, is 0 (meaning no request logging). |
| Logs are written to DUCC\_HOME/logs/webserver. |
| \begin{description} |
| \item[Default Value] 30 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.ws.visualization.strip.domain] \hfill \\ |
| If set, the visualization will strip domain names from nodes to present a cleaner visualization. |
| \begin{description} |
| \item[Default Value] true |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.ws.state.update.endpoint] \hfill \\ |
| This is the name of the JMS endpoint through which the Webserver broadcasts its state messages. |
| These messages are broadcast to self to determine viability of the broker. |
| \begin{description} |
| \item[Default Value] ducc.ws.request |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.ws.state.update.endpoint.type] \hfill \\ |
| This is the JMS endpoint type used for the state messages sent by the Webserver. |
| \begin{description} |
| \item[Default Value] topic |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.ws.state.publish.rate] \hfill \\ |
| \phantomsection\label{itm:props-ws.state.publish.rate} |
| |
| The interval in milliseconds between Webserver publications of its state. |
| \begin{description} |
| \item[Default Value] 5000 |
| \item[Type] Private |
| \end{description} |
| |
| \end{description} |
| |
| |
| \subsection{Job Driver Properties} |
| \begin{description} |
| \item[ducc.jd.configuration.class] \hfill \\ |
| The name of the pluggable java class used to implement the Job Driver (JD). |
| \begin{description} |
| \item[Default Value] org.apache.uima.ducc.jd.config.JobDriverConfiguration |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.jd.state.update.endpoint] \hfill \\ |
| This is the JMS endpoint name by the Job Driver to send state to the Orchestrator. |
| \begin{description} |
| \item[Default Value] ducc.jd.state |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.jd.startup.initialization.error.limit] \hfill \\ |
| For a newly started Job, the number of Job Process (JP) initialization failures |
| allowed until at least one JP succeeds - otherwise, the Job self-destructs. |
| \begin{description} |
| \item[Default Value] 1 |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.jd.state.update.endpoint.type] \hfill \\ |
| This is the JMS message type used to send state to the Orchestrator. |
| \begin{description} |
| \item[Default Value] topic |
| \item[Type] Private |
| \end{description} |
| |
| |
| \item[ducc.jd.state.publish.rate] \hfill \\ |
| The interval in milliseconds between JD state publications to the Orchestrator. |
| A higher rate (smaller number) |
| may slightly increase system response but will increase network load. A lower rate will |
| somewhat decrease system response and lower network load. |
| \begin{description} |
| \item[Default Value] 15000 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.jd.share.quantum] \hfill \\ |
| When CGroups are enabled, this is the RSS, in MB, that is reserved for each JD process, and enforced |
| by the CGroup support. Larger JDs are permitted, but the CGroup support will force the excess |
| RSS onto swap. This potentially slows the performance of that JD, but preserves the resources |
| for other, better-behaved, JDs. |
| \begin{description} |
| \item[Default Value] 400 |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.jd.workitem.name.maximum.length] \hfill \\ |
| The maximum length of a work-item name returned by CAS.getDocumentText(). |
| Truncation is enforced beyond this limit. |
| If not specified, there is no limit. |
| \begin{description} |
| \item[Default Value] (unconfigured) |
| \item[Type] Local |
| \end{description} |
| |
| |
| \item[ducc.jd.error.handler.class] \hfill \\ |
| The error handler class employed when work items fail or time-out in order |
| to determine what to do next in three dimensions: |
| job kill or continue, process kill or continue, work item kill or continue. |
| User specified $--$driver\_exception\_handler <class> prevails. |
| \begin{description} |
| \item[Default Value] org.apache.uima.ducc.ErrorHandler |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.jd.error.handler.args] \hfill \\ |
| The error handler args passed to the error handler class (see above). |
| These values, if any, are combined with any specified by the user. |
| Individual user specified $--$driver\_exception\_handler\_arguments <args> |
| prevail. |
| \begin{description} |
| \item[Default Value] max\_job\_errors=15 max\_timeout\_retrys\_per\_workitem=0 |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.default.process.per.item.time.max] \hfill \\ |
| This property specifies the default value for the time, in minutes, that the JD should |
| wait for a work-item to be processed. If processing has not completed in this time the |
| process is terminated and the job's error handler decides whether to retry the |
| work-item or not. |
| \begin{description} |
| \item[Default Value] 1440 |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.default.process.init.time.max] \hfill \\ |
| This property specifies the default value for the time, in minutes, that the agent should |
| wait for a JP to complete initialization. If initialization is not completed in this time |
| the process is terminated and and InitializationTimeout status is sent to the JD |
| which decides whether to retry the process or terminate the job. |
| |
| \begin{description} |
| \item[Default Value] 120 |
| \item[Type] Local |
| \end{description} |
| |
| |
| \end{description} |
| |
| |
| |
| |
| |
| \subsection{Service Manager Properties} |
| \begin{description} |
| |
| \item[ducc.sm.configuration.class] \hfill \\ |
| This is the name of the pluggable java class used to implement the Service Manager. |
| \begin{description} |
| \item[Default Value] org.apache.uima.ducc.sm.config.JobDriverConfiguration |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.sm.default.monitor.class] \hfill \\ |
| This is the name of the default UIMA-AS ping/monitor class. The default class issues |
| {\em get-meta} to a service and uses JMX to fetch queue statistics for presentation in |
| the web server. |
| |
| This name is either |
| \begin{enumerate} |
| \item The fully qualified name of the class to use as the default UIMA-AS pinger. It may |
| be necessary to include the class or jar file in the classpath used to start the SM. |
| (The reccomended way to do this is add an entry to the {\em ducc.local.jars} property |
| in {\em ducc.properties.} |
| |
| \item The name of a pinger registration file. This is the reccomended way to |
| provide installation-customized pingers. See the \hyperref[chap:sm]{Service Management} |
| chapter for details of setting up this file. In short, it resides in {\em ducc.properties} |
| and contains the full set of ping-related properties needed to run a pinger. |
| \end{enumerate} |
| |
| \begin{description} |
| \item[Default Value] org.apache.uima.ducc.cli.UimaAsPing |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.sm.state.update.endpoint] \hfill \\ |
| This is the JMS endpoint name used for state messages sent by the Service Manager. |
| \begin{description} |
| \item[Default Value] ducc.sm.state |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.sm.state.update.endpoint.type] \hfill \\ |
| This is the JMS message type used for state messages sent by the Service Manager. |
| \begin{description} |
| \item[Default Value] topic |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.sm.meta.ping.rate] \hfill \\ |
| This is the time, in milliseconds, between pings by the Service Manager |
| to each known, running service. |
| \begin{description} |
| \item[Default Value] 60000 |
| \item[Typ] Tuning |
| \end{description} |
| |
| \item[ducc.sm.meta.ping.stability] \hfill \\ |
| This is the number of consecutive pings that may be missed before a |
| service is considered unavailable. |
| \begin{description} |
| \item[Default Value] 10 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.sm.meta.ping.timeout] \hfill \\ |
| This is the time in milliseconds the SM waits for a response to a ping. If the service does |
| not respond within this time the ping is accounted for as a "missed" ping. |
| \begin{description} |
| \item[Default Value] 15000 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.sm.http.port] \hfill \\ |
| This is the HTTP port used by the Service Manager to field requests from the CLI / API. |
| \begin{description} |
| \item[Default Value] 19989 |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.sm.http.node] \hfill \\ |
| This is the node where the Service Manager runs. It MUST be configured as part of DUCC |
| setup. The {\em ducc\_post\_install} procedures initialize this to {\em \$\{ducc.head\}}. |
| \begin{description} |
| \item[Default Value] \$\{ducc.head\} |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.sm.default.linger] \hfill \\ |
| This is the length of time, in milliseconds, that the SM allows a service to remain alive after |
| all jobs that reference it have exited. If no new job referencing it enters the system before this time has |
| expired, the SM stops the service. |
| \begin{description} |
| \item[Default Value] 300000 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.sm.init.failure.limit] \hfill \\ |
| This is the maximum number of consecutive failures of service instance initialization |
| permitted before DUCC stops creating new instances. When this cap is hit the SM |
| will disable autostart for the service. It may be overridden by the service |
| registration's {\em instance\_failures\_limit} parameter. |
| |
| NOTE: This was {\em ducc.sm.instance.failure.max} which is now deprecated. |
| \begin{description} |
| \item[Default Value] 2 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.sm.instance.failure.limit] \hfill \\ |
| This is the maximum number of instance failures allowed within some period of |
| time before the Service Manger disables {\em autostart} and ceases to restart |
| instances automatically. The time window for failures is defined with the |
| property {\em ducc.sm.instance.failure.window}. |
| |
| This may be overridden by individual service pingers using the registration |
| property {\em instance\_failures\_limit}. See the |
| \hyperref[subsec:cli.ducc-services.register]{service registration options} |
| for details. |
| |
| \begin{description} |
| \item[Default Value] 5 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.sm.instance.failure.window] \hfill \\ |
| This specifies a window of time in minutes over which some number of service instance |
| failures are tolerated. If the maximum number of tolerated failures is |
| exceeded within this time window the Service Manager ceases to restart |
| instances automatically. The maximum tolerated failures is defined in |
| {\em ducc.sm.instance.failure.limit}. |
| |
| This may be overridden by individual service pingers using the registration |
| property {\em instance\_failures\_window}. See the |
| \hyperref[subsec:cli.ducc-services.register]{service registration options} |
| for details. |
| |
| \begin{description} |
| \item[Default Value] 30 (minutes) |
| \item[Type] Tuning |
| \end{description} |
| |
| \end{description} |
| |
| |
| \subsection{Orchestrator Properties} |
| \begin{description} |
| \item[ducc.orchestrator. configuration.class] \hfill \\ |
| This is the name of the pluggable java class used to implement the DUCC Orchestrator. |
| \begin{description} |
| \item[Default Value] org.apache.uima.ducc.orchestrator.config.OrchestratorConfiguration |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.orchestrator.start.type] \hfill \\ |
| This indicates the level of recovery to be taken on restarting a |
| system. There are two levels of startup: |
| \begin{description} |
| \item[cold] All reservations are canceled, all currently running |
| jobs (if any) are terminated. All services are terminated. The |
| system starts with no jobs, reservations, or services active. |
| |
| \item[warm] All unmanaged reservations are restored. All currently |
| running jobs (if any) are terminated. All services are started or |
| restarted as indicated by their state when the system went down. |
| The system starts with no jobs active, but unmanaged reservations |
| and services are preserved. |
| |
| \item[Default Value] warm |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.orchestrator.state.endpoint] \hfill \\ |
| This is the name of the JMS endpoint through which the Orchestrator broadcasts its full |
| state messages. These messages include full job information and can be large. This state is |
| used by the Process Manager and the Webserver. |
| \begin{description} |
| \item[Default Value] ducc.orchestrator.request |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.orchestrator.state.update.endpoint.type] \hfill \\ |
| This is the JMS endpoint type used for the "full" state messages sent by the Orchestrator. |
| \begin{description} |
| \item[Default Value] topic |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.orchestrator.state.publish.rate] \hfill \\ |
| \phantomsection\label{itm:props-or.state.publish.rate} |
| |
| The interval in milliseconds between Orchestrator publications of its non-abbreviated |
| state. |
| \begin{description} |
| \item[Default Value] 10000 |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.orchestrator.maintenance.rate] \hfill \\ |
| This is the interval in milliseconds between Orchestrator maintenance cycles, which check |
| and update history and state. |
| \begin{description} |
| \item[Default Value] 60000 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.orchestrator.http.port] \hfill \\ |
| This is the HTTP port used by the Orchestrator to field requests from the CLI / API. |
| \begin{description} |
| \item[Default Value] 19988 |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.orchestrator.http.node] \hfill \\ |
| This is the node where the Orchestrator runs. It MUST be configured as part of DUCC |
| setup. The {\em ducc\_post\_install} procedures initialize this to {\em \$\{ducc.head\}}. |
| \begin{description} |
| \item[Default Value] \$\{ducc.head\} |
| \item[Type] Local |
| \end{description} |
| |
| \item[ducc.orchestrator.unmanaged.reservations.accepted] \hfill \\ |
| This flag controls whether the Orchestrator will accept requests for |
| unmanaged reservations (true) or deny request for unmanaged reservations |
| (false). |
| \begin{description} |
| \item[Default Value] true |
| \item[Type] Local |
| \end{description} |
| \end{description} |
| |
| \subsection{Resource Manager Properties} |
| |
| \begin{description} |
| \item[ducc.rm.configuration.class] \hfill \\ |
| This is the name of the pluggable java class used to implement the DUCC Resource |
| Manager. |
| \begin{description} |
| \item[Default Value] org.apache.uima.ducc.rm.config.ResourceManagerConfiguration |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.rm.state.update.endpoint] \hfill \\ |
| This is the name of the JMS endpoint through which the Resource Manager broadcasts its |
| abbreviated state. |
| \begin{description} |
| \item[Default Value] ducc.rm.state |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.rm.state.update.endpoint.type] \hfill \\ |
| This is the JMS endpoint type used for state messages sent by the Resource Manager. |
| \begin{description} |
| \item[Default Value] topic |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.rm.state.publish.ratio] \hfill \\ |
| This specifies the frequency of RM schedules, relative to the number of Orchestrator publications. If |
| the value is set to 1, RM runs and publishes a schedule immediately on receipt of OR state. If set to |
| some number N, RM runs a schedule after receipt of every N Orchestrator publications. |
| \begin{description} |
| \item[Default Value] 1 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.rm.share.quantum] \hfill \\ |
| The share quantum is the smallest amount of RAM that is schedulable for jobs, in GB. |
| Jobs are scheduled based entirely on their memory requirements. Memory is allocated in |
| multiples of the share quantum. |
| |
| See the \hyperref[chap:rm]{Resource Management} section for more information on the share quantum. |
| \begin{description} |
| \item[Default Value] 1 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.rm.global.allotment] \hfill \\ |
| This specifies the maximum non-preemptable shares any user may be awarded, in GB. If not configured, |
| there is no maximum enforced. This can be overridden on a per-user basis in the user registry. |
| See the \hyperref[chap:rm]{Resource Management} section for more information on the share quantum. |
| \begin{description} |
| \item[Default Value] (not set, no limit imposed) |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.rm.scheduler] \hfill \\ |
| The component that implements the scheduling algorithm is pluggable. This specifies the |
| name of that class. |
| \begin{description} |
| \item[Default Value] org.apache.uima.ducc.rm.scheduler.NodepoolScheduler |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.rm.user.registry] \hfill \\ |
| This names the file with the user registr, within the DUCC\_HOME/resources directoryy. |
| As of this version of DUCC, the registry is used |
| only to override the global allotments. The registry entries may also be placed in the |
| \hyperref[sec:ducc.classes]{\em ducc.classes} file if desired. |
| \begin{description} |
| \item[Default Value] ducc.users |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.rm.class.definitions] \hfill \\ |
| This specifies the name of the file that contains the site's class definitions. This file is |
| described in detail in the \hyperref[sec:ducc.classes]{\em ducc.classes} section. |
| \begin{description} |
| \item[Default Value] ducc.classes |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.rm.node.stability] \hfill \\ |
| The RM receives regular "heartbeats" from the DUCC agents in order to know what |
| nodes are available for scheduling. The node.stability property configures the number of |
| consecutive heartbeats that may be missed before the Resource Manager considers the |
| node to be inoperative. |
| |
| If a node becomes inoperative, the Resource Manager deallocates all processes on that |
| node and attempts to reallocate them on other nodes. The node is marked offline and is |
| unusable until its heartbeats start up again. |
| |
| The default configuration declares the agent heartbeats to occur at 1 minute intervals. |
| Therefore heartbeats must be missed for five minutes before the Resource Manager takes |
| corrective action. |
| \begin{description} |
| \item[Default Value] 5 |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.rm.init.stability] \hfill \\ |
| During DUCC initialization the Resource Manager must wait some period of time for |
| all the nodes in the cluster to check-in via their "heartbeats". If the RM were to start |
| scheduling too soon there would be a period of significant "churn" as the perceived cluster |
| configurations changes rapidly. As well, it would be impossible to recover work in a warm |
| or hot start if the affected nodes had not yet checked in. |
| |
| The init.stability property indicates how many heartbeat intervals the RM must wait before |
| it starts scheduling after initialization. |
| \begin{description} |
| \item[Default Value] 2 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.rm.eviction.policy] \hfill \\ |
| The alternative value is SHRINK\_BY\_MACHINE. |
| |
| The eviction.policy is a heuristic to choose which processes of a job to preempt because of |
| competition from other jobs. |
| |
| The SHRINK\_BY\_INVESTMENT policy attempts to preempt processes such that the |
| least amount of work is lost. It chooses candidates for eviction in order of: |
| \begin{enumerate} |
| \item Processes still initializing, with the smallest time spent in the initializing step. |
| \item Processes whose currently active work items have been executing for the shortest |
| time. |
| \end{enumerate} |
| The SHRINK\_BY\_MACHINE policy attempts to preempt processes so as to minimize |
| fragmentation on machines with large memories that can contain multiple job processes. |
| No consideration of execution time or initialization time is made. |
| \begin{description} |
| \item[Default Value] SHRINK\_BY\_INVESTMENT |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.rm.initialization.cap] \hfill \\ |
| The type of jobs supported by DUCC generally have very long and often fragile |
| initialization periods. Errors in the applications and other problems such is missing or |
| errant services can cause processes to fail during this phase. |
| |
| To avoid preempting running jobs and allocating a large number of resources to jobs only |
| to fail during initialization, the Resource Manager schedules a small number of processes |
| until it is determined that the initialization phase will succeed. |
| |
| The initialization.cap determines the maximum number of processes allocated to a job |
| until at least one process successfully initializes. Once any process initializes the Resource |
| Manager will proceed to allocate the job its full fair share of processes. |
| |
| The initialization cap can be overridden on a class basis by configuration via |
| \hyperref[sec:ducc.classes]{ducc.classes}. |
| |
| \begin{description} |
| \item[Default Value] 1 |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.rm.expand.by.doubling] \hfill \\ |
| When a job expands because its fair share has increased, or it has completed initialization, |
| it may be desired to govern the rate of expansion. If expand.by.doubling is set to "true", |
| rather than allocate the full fair share of processes, the number of processes is doubled |
| each scheduling cycle, up to the maximum allowed. |
| |
| Expand.by.doubling can be overridden on a class basis by configuration via |
| \hyperref[sec:ducc.classes]{ducc.classes}. |
| |
| \begin{description} |
| \item[Default Value] true |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.rm.prediction] \hfill \\ |
| Because initialization time may be very long, it may be the case that a job that might be |
| eligible for expansion will be able to complete in the currently assigned shares before any |
| new processes are able to complete their initialization. In this case expansion results in |
| waste of resources and potential eviction of processes that need not be evicted. |
| |
| The Resource Manager monitors the rate of task completion and attempts to predict the |
| maximum number of processes that will be needed at a time in the future based on the |
| known process initialization time. If it is determined that expansion is unnecessary then it |
| is not done for the job. |
| |
| Prediction can be overridden on a class basis by configuration via |
| \hyperref[sec:ducc.classes]{ducc.classes}. |
| \begin{description} |
| \item[Default Value] true |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.rm.prediction.fudge] \hfill \\ |
| \phantomsection\label{itm:props-rm.prediction.fudge} |
| |
| When ducc.rm.prediction is enabled, the known initialization time of a job's processes plus |
| some "fudge" factor is used to predict the number of future resources needed. The "fudge" |
| is specified in milliseconds. |
| |
| The default "fudge" is very conservative. Experience and site policy should be used to set a |
| more practical number. |
| |
| Prediction.fudge can be overridden on a class basis by configuration via |
| \hyperref[sec:ducc.classes]{ducc.classes}. |
| |
| \begin{description} |
| \item[Default Value] 120000 |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.rm.defragmentation.threshold] \hfill \\ |
| \phantomsection\label{itm:props-rm.defragmentation.threshold} |
| |
| If {\em ducc.rm.defragmentation} is enable, limited defragmentation of resources is |
| performed by the Resource Manager to create sufficient space to schedule work |
| that has insufficient resources (new jobs, for example.). The term |
| {\em insufficient} is defined as ``needing more processes than the defragmentation |
| threshold, but currently having fewer processes than the defragmentation |
| threshold.'' These are called ``needy'' jobs. Additionally, the Resource Manager |
| will never evict processes from ``needy'' jobs for the purpose of defragmentation. |
| |
| This property allows installations to customize the value used to determine if a |
| job is ``needy''. Jobs with fewer processes than this are potentially needed, and |
| jobs with more processes are never needy. |
| |
| \begin{description} |
| \item[Default Value] 8 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.rm.admin.endpoint] \hfill \\ |
| This JMS endpoint used for RM administrative requests. |
| \begin{description} |
| \item[Default Value] ducc.rm.admin.channe. |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.rm.admin.type] \hfill \\ |
| This is the JMS endpoint type used for RM administrative requests. |
| \begin{description} |
| \item[Default Value] ducc.rm.admin.channe. |
| \item[Type] Private |
| \end{description} |
| |
| |
| \end{description} |
| |
| |
| |
| \subsection{Agent Properties} |
| |
| \begin{description} |
| |
| \item[ducc.agent.configuration.class] \hfill \\ |
| This is the name of the pluggable java class used to implement the DUCC Agents. |
| \begin{description} |
| \item[Default Value] org.apache.uima.ducc.nodeagent.config.AgentConfiguration |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.agent.request.endpoint] \hfill \\ |
| This is the JMS endpoint through which agents receive state from the Process Manager. |
| \begin{description} |
| \item[Default Value] ducc.agent |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.agent.request.endpoint.type] \hfill \\ |
| This is the JMS endpoint type used for state messages sent by the Process Manager. |
| \begin{description} |
| \item[Default Value] topic |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.agent.managed.process.state.update.endpoint] \hfill \\ |
| This is the JMS endpoint used to communicate from the managed process to the Agent |
| (Job Process). |
| \begin{description} |
| \item[Default Value] ducc.managed.process. state.update |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.agent.managed.process.state.update.endpoint.type] \hfill \\ |
| This is the JMS endpoint type used to communicate from the managed process (Job |
| Process) to the Agent. |
| \begin{description} |
| \item[Default Value] socket |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.agent.managed.process. state.update.endpoint.params] \hfill \\ |
| These are configuration parameters for the Agent-to-JP communication socket. These |
| should only be modified by DUCC developers. |
| \begin{description} |
| \item[Default Value] transferExchange=true\&sync=false |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.agent.node.metrics.endpoint] \hfill \\ |
| This is the JMS endpoint used to send node metrics updates to listeners. Listeners |
| are usually the Resource Manager and Web Server. These messages serve as node |
| "heartbeats". As well, the node metrics heartbeats contain the amount of RAM on the node |
| and the number of processors. |
| \begin{description} |
| \item[Default Value] ducc.node.metrics |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.agent.node.metrics.endpoint.type] \hfill \\ |
| This is the JMS endpoint type used to send node metrics updates from the agents. |
| \begin{description} |
| \item[Default Value] topic |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.agent.node.metrics.publish.rate] \hfill \\ |
| The interval in milliseconds between node metric publications. |
| Every agent publishes its updates at this rate. On large clusters, a high rate (small |
| interval) can be a burden on the network. |
| |
| Note: the Resource Manager uses the data in the node metrics for scheduling. |
| \begin{description} |
| \item[Default Value] 60000 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.agent.node.inventory.endpoint] \hfill \\ |
| This is the JMS endpoint used to send node inventory messages to listeners. Listeners are |
| usually the Orchestrator and Web Server. Information in these messages include a map of |
| processes being managed on the node. |
| \begin{description} |
| \item[Default Value] ducc.node.inventory |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.agent.node.inventory.endpoint.type] \hfill \\ |
| This is the JMS endpoint type used to send node inventory updates from the agents. |
| \begin{description} |
| \item[Default Value] topic |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.agent.node.inventory.publish.rate] \hfill \\ |
| The interval in milliseconds between node inventory publications. |
| |
| If the inventory has not changed since the last update the agent bypasses sending the |
| update, up to a maximum of ducc.agent.node.inventory.publish.rate.skip times. |
| \begin{description} |
| \item[Default Value] 10000 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.agent.node.inventory.publish.rate.skip] \hfill \\ |
| This is the number of times the agent will bypass publishing its node inventory if the |
| inventory has not changed. |
| \begin{description} |
| \item[Default Value] 30 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.agent.launcher.thread.pool.size] \hfill \\ |
| This is establishes the size of the agent's threadpool used to manage spawned processes. |
| \begin{description} |
| \item[Default Value] 10 |
| \item[Type] Tuning |
| \end{description} |
| Deprecated. |
| |
| \item[ducc.agent.launcher.ducc\_spawn\_path] \hfill \\ |
| This property specifies the full path to the ducc\_ling utility. During installation ducc\_ling |
| is normally moved to local disk and given setuid-root privileges. Use this property to tell |
| the DUCC agents the location of the installed ducc\_ling. The default location is within |
| an architecture dependent subdiretory of DUCC\_HOME/admin. |
| |
| The arcitecture is derived from |
| the JRE property {\em os.arch}. During DUCC installation the {\em ducc\_ling} utility is |
| compiled for the architecture of the host where DUCC is installed. In heterogeneous |
| clusters, the system administrator should run the utility {\em build\_duccling} once on |
| a machine of each architecture to insure this utility gets correctly installed. |
| \begin{description} |
| \item[Default Value] \ducchome/admin/\${os.arch}/ducc\_ling |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.agent.launcher.process.stop.timeout] \hfill \\ |
| This property specifies the time, in milliseconds, the agent should wait before forcibly |
| terminating a job process (JP) after an attempted graceful shutdown. If the child process |
| does not terminate in the specified time, it is forcibly terminated with kill -9. |
| |
| This type of stop can occur because of preemption or system shutdown. |
| \begin{description} |
| \item[Default Value] 60000 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.agent.launcher.process.init.timeout] \hfill \\ |
| This property specifies the time, in milliseconds, that the agent should wait for a job |
| process (JP) to complete initialization. If initialization is not completed in this time the |
| process is terminated and and InitializationTimout status is send to the job driver (JD) |
| which decides whether to retry the process or terminate the job. |
| |
| \begin{description} |
| \item[Default Value] 7200000 |
| \item[Type] Tuning |
| \end{description} |
| Deprecated. Replaced by ducc.default.process.init.time.max (in minutes) |
| |
| |
| \item[ducc.agent.share.size.fudge.factor] \hfill \\ |
| |
| The DUCC agent monitors the size of the resident memory of its spawned processes. If a |
| process exceeds its declared memory size by any significant amount it is terminated and |
| a ShareSizeExceeded message is sent. The Job Driver counts this towards the maximum |
| errors for the job and will eventually terminate the job if excessive such errors occur. |
| |
| This property defines the percentage over the declared memory size that a process is |
| allowed to grow to before being terminated. |
| |
| To disable this feature, set the value to -1. |
| \begin{description} |
| \item[Default Value] 5 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.agent.rogue.process.user.exclusion.filter] \hfill \\ |
| \phantomsection\label{itm:props-rogue.user} |
| |
| The DUCC Agents scan nodes for processes that should not be running; for example, |
| a job may have left a 'rogue' process alive when it exits, or a user may log in to a node |
| unexpectedly. These processes are reported to the administrators via the webserver for |
| possible action. |
| |
| This configuration parameter enumerates userids which are ignored by the rogue-process |
| scan. |
| \begin{description} |
| \item[Default Value] root,posstfix,ntp,nobody,daemon,100 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.agent.rogue.process.exclusion.filter] \hfill \\ |
| \phantomsection\label{itm:props-rogue.process} |
| The DUCC Agents scan nodes for processes that should not be running; for example, |
| a job may have left a 'rogue' process alive when it exits, or a user may log in to a node |
| unexpectedly. These processes are reported to the administrators via the webserver for |
| possible action. |
| |
| This configuration parameter enumerates processes by name which are ignored by the |
| rogue process detector. |
| |
| \begin{description} |
| \item[Default Value] sshd:,-bash,-sh,/bin/sh,/bin/bash,grep,ps |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \phantomsection\label{itm:props-agent.cgroups.enable} |
| \item[ducc.agent.launcher.cgroups.enable] \hfill \\ |
| 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. |
| |
| \begin{description} |
| \item[Default Value] true |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.agent.launcher.cgroups.utils.dir] \hfill \\ |
| \phantomsection\label{itm:ducc.agent.launcher.cgroups.utils.dir} |
| Location of CGroups programs, like cgexec. If CGroups are not |
| installed on a specific machine, this is ignored. |
| |
| Depending on the OS, CGroups programs may be installed in different places. |
| Provide a comma separated list of directories the agent should search to find the programs. |
| |
| \begin{description} |
| \item[Default Value] /usr/bin |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.agent.launcher.cgroups.basedir] \hfill \\ |
| \phantomsection\label{itm:ducc.agent.launcher.cgroups.basedir} |
| Location where ducc related CGroups will be created. |
| |
| \begin{description} |
| \item[Default Value] /cgroup/ducc |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.agent.launcher.cgroups.max.retry.count] \hfill \\ |
| \phantomsection\label{ducc.agent.launcher.cgroups.max.retry.count} |
| Defines how many times an agent attempts to create a cgroup after |
| a failure. |
| |
| \begin{description} |
| \item[Default Value] 10 |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \item[ducc.agent.launcher.cgroups.retry.delay.factor] \hfill \\ |
| \phantomsection\label{ducc.agent.launcher.cgroups.retry.delay.factor} |
| Defines a delay factor in millis an agent will use to determine how long it |
| should sleep between cgroup create retries. Each time cgcreate fails |
| an agent will increment the delay by adding the delay factor to a previous |
| delay. If the delay factor is 2000, on first cgcreate failure an agent will |
| wait 2000 ms, on second failure the wait time will be 4000, on third 6000, and |
| so on. |
| |
| \begin{description} |
| \item[Default Value] 2000 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.agent.launcher.cgroups.swappiness] \hfill \\ |
| \phantomsection\label{ducc.agent.launcher.cgroups.swappiness} |
| Defines cgroup swappiness. |
| |
| \begin{description} |
| \item[Default Value] 10 |
| \item[Type] Tuning |
| \end{description} |
| |
| \phantomsection\label{itm:props-agent.cgroups.exclusion} |
| \item[ducc.agent.exclusion.file] \hfill \\ |
| This specifies the exclusion file to enable node based exclusion for various |
| features. Currently only CGroup exclusion is supported. |
| |
| The exclusion file has one line per agent of the form: |
| \begin{verbatim} |
| <node>=cgroups |
| \end{verbatim} |
| If the keyword ``cgrouops'' is found, the node is excluded from CGroup |
| support. |
| |
| \begin{description} |
| \item[Default Value] Not configured. |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \end{description} |
| |
| |
| \subsection{Process Manager Properties} |
| |
| \begin{description} |
| |
| \item[ducc.pm.configuration.class] \hfill \\ |
| This is the name of the pluggable java class used to implement the DUCC Process |
| Manager. |
| \begin{description} |
| \item[Default Value] org.apache.uima.ducc.pm.config.ProcessManagerConfiguration |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.pm.request.endpoint] \hfill \\ |
| This is the endpoint through which process manager receive state from the Orchestrator. |
| \begin{description} |
| \item[Default Value] ducc.pm |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.pm.request.endpoint.type] \hfill \\ |
| This is the JMS endpoint type used for state messages sent by the Orchestrator. |
| \begin{description} |
| \item[Default Value] queue |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.pm.state.update.endpoint] \hfill \\ |
| This is the endpoint through which process manager sends its heartbeat. The main receiver |
| is the Web Server for it's daemon status page. |
| \begin{description} |
| \item[Default Value] ducc.pm.state |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.pm.state.update.endpoint.type] \hfill \\ |
| This is the JMS endpoint type used for process manager heartbeats. The primary receiver |
| is the Web Server for its daemon status page. |
| \begin{description} |
| \item[Default Value] topic |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.pm.state.publish.rate] \hfill \\ |
| The interval in milliseconds between process manager heartbeat publications. |
| \begin{description} |
| \item[Default Value] 25000 |
| \item[Type] Private |
| \end{description} |
| |
| |
| \end{description} |
| |
| |
| \subsection{Job Process Properties} |
| |
| \begin{description} |
| |
| \item[ducc.uima-as.configuration.class] \hfill \\ |
| This is the name of the pluggable java class that implements the the UIMA-AS service |
| shell for job processes (JPs). |
| \begin{description} |
| \item[Default Value] org.apache.uima.ducc.transport.configuration.jp.JobProcessConfiguration |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.uima-as.endpoint] \hfill \\ |
| This is the endpoint through which job processes (JPs) receive messages from the Agents. |
| \begin{description} |
| \item[Default Value] ducc.job.managed.service |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.uima-as.endpoint.type] \hfill \\ |
| This is the JMS endpoint type used for messages sent to the JPs from the Agents. |
| \begin{description} |
| \item[Default Value] socket |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.uima-as.endpoint.params] \hfill \\ |
| This configures the JP-to-Agent communication socket. It should be changed only by |
| DUCC developers. |
| \begin{description} |
| \item[Default Value] transferExchange=true\&sync=false |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.uima-as.saxon.jar.path] \hfill \\ |
| This configures the path the required Saxon jar. |
| \begin{description} |
| \item[Default Value] file:\ducchome/apache-uima/saxon/saxon8.jar |
| \item[Type] Private |
| \end{description} |
| |
| |
| \item[ducc.uima-as.dd2spring.xsl.path] \hfill \\ |
| This configures the path the required dd2spring xsl definitions. |
| \begin{description} |
| \item[Default Value] \ducchome/apache-uima/bin/dd2spring.xsl |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.uima-as.flow-controller.specifier] \hfill \\ |
| This configures the pluggable class that implements the default flow controller used in the |
| DUCC job processes (JPs). |
| \begin{description} |
| \item[Default Value] org.apache.uima.ducc.FlowController |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.process.request.timeout] \hfill \\ |
| This is the maximum amount of time to wait for a response from a JD, in milliseconds. This value |
| is used by a JP when sending requests to the JD. |
| \begin{description} |
| \item[Default Value] 30000 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.process.uima.as.container.class] \hfill \\ |
| Define process container class for DD jobs to instantiate and invoke via reflection. |
| The container provides classpath isolation for user defined analytics. |
| The container is instantiated with classes from a System classloader. |
| \begin{description} |
| \item[Default Value] org.apache.uima.ducc.user.jp.UimaASProcessContainer |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.process.uima.container.class] \hfill \\ |
| Define process container class for non-DD jobs to instantiate and invoke via reflection. |
| The container provides classpath isolation for user defined analytics. |
| The container is instantiated with classes from a System classloader. |
| \begin{description} |
| \item[Default Value] org.apache.uima.ducc.user.jp.UimaProcessContainer |
| \item[Type] Private |
| \end{description} |
| |
| \item[ducc.process.thread.sleep.time] \hfill \\ |
| Define the sleep time in milliseconds for JP to use when JD sends empty CAS. In this case the |
| JD's CR has processed its collection. The JP threads need to slow down sending |
| requests |
| \begin{description} |
| \item[Default Value] 3000 |
| \item[Type] Tuning |
| \end{description} |
| |
| |
| \end{description} |
| |
| |
| \subsection{Database Configuration Properties} |
| \label{subsec:ducc.database.properties} |
| |
| \begin{description} |
| |
| \item[ducc.database.host] \hfill \\ |
| This is the name of the host where the database is run. It usually defaults to the |
| same host as the ducc.head. Those knowledgable of the database can install the |
| database elsewhere. Use this parameter to specify that location. |
| |
| To disable use of the database, set this parameter to the string {\em --disabled--}. |
| \begin{description} |
| \item[Default Value] The same as your ducc.head. |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.database.jmx.host] \hfill \\ |
| This is the name of the database host for JMX access. If it is ``localhost'' then only local |
| JMX access is supported. If it is set to the real name of the database host then remote JMX |
| access is possible. |
| \begin{description} |
| \item[Default Value] localhost |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.database.jmx.port] \hfill \\ |
| This is the JMX port used by the database. Normally it need not be changed. |
| It is set via the cassandra-env.sh script so must not be in the range of values used by the |
| other daemons, i.e. values just above {\em ducc.jmx.port}. |
| \begin{description} |
| \item[Default Value] 7199 |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.database.mem.heap] \hfill \\ |
| This is the value used to set {\em Xmx and Xms} when the database starts. The |
| Cassandra database makes an attempt to determine the best value of this. The |
| default is one-half of real memory, up to a maximum of 8G. It is recommended that |
| the default be used. However, small installations may reduce this to as little |
| as 512M. Note that both Xmx and Xms are set. |
| \begin{description} |
| \item[Default Value] Determined by Cassandra, up to 8G max. |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.database.mem.new] \hfill \\ |
| This is the default for the ``young'' generation when the JVM needs more memory. |
| In general, the default is correct. If you're not familiar with Java's memory |
| management it is safest to not modify this. |
| \begin{description} |
| \item[Default Value] Determined by Cassandra. |
| \item[Type] Tuning |
| \end{description} |
| |
| \item[ducc.service.persistence.impl] \hfill \\ |
| This specifies the class used to implement persistence for the Service Manager's registry. |
| The installation procedures for the database automatically update your {\em site.ducc.properties} |
| to use the correct default. |
| |
| There |
| are two supported values: |
| \begin{verbatim} |
| org.apache.uima.ducc.common.persistence.services.StateServices |
| org.apache.uima.ducc.database.StateServicesDb |
| \end{verbatim} |
| |
| The first value implements the service registry in the file system in the directory |
| {\tt DUCC\_HOME/state/services}. |
| |
| When the database is installed, the service registry is implemented over the database. |
| |
| \begin{description} |
| \item[Default Value] When the database is enabled: |
| \begin{verbatim} |
| org.apache.uima.ducc.database.StateServicesDb |
| \end{verbatim} |
| |
| When the database is not enabled: |
| \begin{verbatim} |
| org.apache.uima.ducc.common.persistence.services.StateServices |
| \end{verbatim} |
| \item[Type] Private |
| \end{description} |
| |
| |
| \item[ducc.job.history.impl] \hfill \\ |
| This specifies the class used to implement persistence for job history and the |
| Orchestrator checkpoint. |
| The installation procedures for the database automatically update your {\em site.ducc.properties} |
| to use the correct default. |
| |
| The two supported values are: |
| \begin{verbatim} |
| org.apache.uima.ducc.transport.event.common.history.HistoryPersistenceManager |
| org.apache.uima.ducc.database.HistoryManagerDb |
| \end{verbatim} |
| |
| The first value causes job history to be stored in {\tt DUCC\_HOME/history} |
| and the Orchestrator checkpoint to be stored in {\tt DUCC\_HOME/orchestrator.ckpt}. |
| |
| The second causes both history and checkpoint to be saved in the database. |
| |
| \begin{description} |
| \item[Default Value] If the database is enabled: |
| \begin{verbatim} |
| org.apache.uima.ducc.database.HistoryManagerDb |
| \end{verbatim} |
| If the database is not enabled: |
| \begin{verbatim} |
| org.apache.uima.ducc.transport.event.common.history.HistoryPersistenceManager |
| \end{verbatim} |
| \item[Type] Private |
| \end{description} |
| |
| |
| \item[ducc.rm.persistence.impl] \hfill \\ |
| This specifies the class used to implement persistence for the Resource Manager's |
| dynamic state. |
| The installation procedures for the database automatically update your {\em site.ducc.properties} |
| to use the correct default. |
| |
| The two supported values are: |
| \begin{verbatim} |
| org.apache.uima.ducc.database.RmStatePersistence |
| org.apache.uima.ducc.common.persistence.rm.NullRmStatePersistence |
| \end{verbatim} |
| |
| The first value implements RM's use of the database to store its dynamic state. The second |
| disables RM state persistence. There is no implementation that persists RM state |
| in the filesystem. |
| |
| \begin{description} |
| \item[Default Value] If the |
| database is enabled: |
| \begin{verbatim} |
| org.apache.uima.ducc.database.RmStatePersistence |
| \end{verbatim} |
| If the database is not enabled: |
| \begin{verbatim} |
| org.apache.uima.ducc.common.persistence.rm.NullRmStatePersistence |
| \end{verbatim} |
| \item[Type] Private |
| \end{description} |
| \end{description} |
| |
| \section{ducc.private.properties} |
| \label{sec:ducc.private.properties} |
| |
| \subsection{Web Server Properties} |
| |
| \begin{description} |
| |
| \item[ducc.ws.port.ssl.pw] \hfill \\ |
| This is the password used to generate the Web Server's keystore used for HTTPS requests. Usually |
| this keystore is created at initial installation time using \hyperref[subsec:admin.ducc-post-installl]{ducc\_post\_install.} |
| \begin{description} |
| \item[Default Value] Randomly generated at install time. |
| \item[Type] Local |
| \end{description} |
| \end{description} |
| |
| |
| \subsection{Database Properties} |
| |
| \begin{description} |
| |
| \item[db\_password] \hfill \\ |
| This is the database superuser password. It is set during {\em ducc\_post\_install} or {\em db\_create}. Both |
| these procedures randomly generate the password. |
| |
| NOTE: The database superuser ID is always ``ducc'', and is set during database installation. |
| \begin{description} |
| \item[Default Value] Randomly generated at install time. |
| \item[Type] Local |
| \end{description} |
| \end{description} |
| |