diff --git a/anduril/slurm-maxfree b/anduril/slurm-maxfree index 0e33dcd..214230a 100755 --- a/anduril/slurm-maxfree +++ b/anduril/slurm-maxfree @@ -53,7 +53,20 @@ done echo "srun: Node ${NODELIST[$INDEX]}, Free sockets: ${NODERUNS[$INDEX]}" >&2 mkdir -p "$JOBROOT" -JOBNAME=job_$( date +"%y%m%d_%H%M%S" )_$( echo $@ | md5sum | cut -f1 -d" " ) +for (( i=1; i<=$#; i++ )) +do if [[ "${!i}" == */_command ]] + then JOBNAME=job_ + COMPONENTNAME=$( grep ^metadata.componentName= "${!i}" | sed s,^metadata.componentName=,, | sed -e 's/[^A-Za-z0-9._-]/_/g' ) + INSTANCENAME=$( grep ^metadata.instanceName= "${!i}" | sed s,^metadata.instanceName=,, | sed -e 's/[^A-Za-z0-9._-]/_/g' ) + JOBNAME="$JOBNAME"$( grep ^metadata.sourceLocation= "${!i}" | sed s,^metadata.sourceLocation=,, | sed -e 's/[^A-Za-z0-9._-]/_/g' ) + JOBNAME="$JOBNAME"_$INSTANCENAME + JOBNAME="$JOBNAME"_$COMPONENTNAME + JOBNAME="$JOBNAME"_$( date +"%y%m%d_%H%M%S" ) + CPU=$( grep ^metadata.cpu= "${!i}" | sed s,^metadata.cpu=,, ) + MEMORY=$( grep ^metadata.memory= "${!i}" | sed s,^metadata.cpu=,, ) + export USERDEFINED=$( grep ^metadata.userDefined= "${!i}" | sed s,^metadata.userDefined=,, ) + fi +done JOBPATH="$JOBROOT/$JOBNAME" while [ -d "$JOBPATH" ] do echo Jobpath "$JOBPATH" exists @@ -65,6 +78,8 @@ JOBFILE="$JOBPATH/job" STATFILE="$JOBPATH/statistics" STRMFILE="$JOBPATH/stream" EXECPATH=$( pwd ) +[[ -z "$CPU" ]] || export CPU="-c $CPU" +[[ -z "$MEMORY" ]] || export MEMORY="--mem $MEMORY" # create the jobfile echo '#!/bin/bash' > "$JOBFILE" @@ -82,6 +97,7 @@ do if [[ "${!i}" == */_command ]] sleep 1; [ "$retrys" -gt 15 ] && break; } done ' >> "$JOBFILE" + grep ^metadata.CPU "${!i}" fi done @@ -100,19 +116,17 @@ echo 'EC=$?' >> "$JOBFILE" echo "date +'Stop: %s' >> \"$STATFILE\" " >> "$JOBFILE" echo 'exit $EC' >> "$JOBFILE" +echo "The job file is in $JOBFILE" +# send the job +echo \#srun $CPU $MEMORY -J $INSTANCENAME --nodelist=${NODELIST[$INDEX]} slurm-cake "$JOBFILE" "$JOBFILE" >> "$JOBFILE" +srun $CPU $MEMORY -J $INSTANCENAME --nodelist=${NODELIST[$INDEX]} slurm-cake "$JOBFILE" "$JOBFILE" +EC=$? # clear out old job definitions (semirandomly) -( [[ -e "$JOBROOT"/.lastdel ]] || touch "$JOBROOT"/.lastdel if test "$( find $JOBROOT/.lastdel -mmin +30 )" then touch "$JOBROOT"/.lastdel find "$JOBROOT" -maxdepth 2 -mindepth 2 -type f -mtime +20 -delete 2>/dev/null find "$JOBROOT" -type d -depth -empty -delete 2>/dev/null fi -) & -echo "The job file is in $JOBFILE" -# send the job -srun --nodelist=${NODELIST[$INDEX]} slurm-cake "$JOBFILE" "$JOBFILE" -EC=$? -wait exit $EC