| #!/bin/sh |
| |
| # ----------------------------------------------------------------------- |
| # 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. |
| # ----------------------------------------------------------------------- |
| |
| if [ -z $DUCC_HOME ]; then |
| DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" |
| DUCC_HOME="$( cd $DIR/.. && pwd )" |
| fi |
| |
| |
| if [ $# -lt 4 ]; then |
| echo |
| echo Usage $0 "<cmds-file> <mem-size> <class> <timeout> [DUCC args]" |
| echo " " |
| echo " <cmds-file> - Each line in cmds-file will be run as a remote process" |
| echo " " |
| echo " <mem-size> - the minimum CGroup container size for each remote process" |
| echo " Actual container size is mem-size rounded up to a multiple of the class quantum" |
| echo " For Java the Xmx specification should be smaller than the container size" |
| echo " " |
| echo " <class> - the DUCC scheduling class. Use a fair share class to get more resources" |
| echo " " |
| echo " <timeout> - the number of minutes each remote process is allowed to run" |
| echo " " |
| echo " [DUCC args]" |
| echo " " |
| echo " Arguments after <timeout> are passed as is to ducc_submit" |
| echo " For example, \"--all_in_one local\" would run the job as a single process on client machine" |
| echo "" |
| echo " For Java commands, specify the required classpath with DUCC_CMDLINE_CLASSPATH" |
| echo "" |
| echo " To specify ENV parameters common to all commands, set DUCC_CMDLINE_ENVIRONMENT" |
| echo " See \"--environment [env vars]\" in the DUCCBOOK for the format and behavior of this setting" |
| echo "" |
| echo " To specify unique ENV parms per command, prefix the command with" |
| echo " /bin/env env1=val1 [env2=val2 ...] " |
| echo |
| exit 1 |
| fi |
| |
| COMMAND_FILENAME=$1 |
| MEM_SIZE_GB=$2 |
| SCHED_CLASS=$3 |
| TIMEOUT=$4 |
| |
| if [ $# -gt 4 ]; then |
| for i in $(seq 5 "$#") |
| do |
| DUCC_ARGS="$DUCC_ARGS ${!i}" |
| done |
| fi |
| |
| |
| echo Running: $0 $1 $MEM_SIZE_GB $SCHED_CLASS $TIMEOUT |
| echo "cmds-file: $COMMAND_FILENAME" |
| |
| DUCC_SUBMIT=$DUCC_HOME/bin/ducc_submit |
| |
| CP=$DUCC_HOME/lib/uima-ducc/examples/*:$DUCC_HOME/lib/guava/*:$DUCC_HOME/apache-uima/lib/uima-core.jar |
| |
| $DUCC_SUBMIT --classpath "$CP" --description "Command line runner: $COMMAND_FILENAME" \ |
| --driver_descriptor_CR org.apache.uima.ducc.sampleapps.LinesFromFileCR \ |
| --driver_descriptor_CR_overrides "Filename=$COMMAND_FILENAME" \ |
| --process_descriptor_AE org.apache.uima.ducc.sampleapps.CommandLineRunnerAE \ |
| --wait_for_completion true \ |
| --process_thread_count 1 \ |
| --process_jvm_args "-Xmx200M" \ |
| --environment "DUCC_CMDLINE_ENVIRONMENT DUCC_CMDLINE_CLASSPATH" \ |
| --scheduling_class $SCHED_CLASS \ |
| --process_memory_size $MEM_SIZE_GB \ |
| --process_per_item_time_max $TIMEOUT $DUCC_ARGS |
| |