From f1f54cd2f60583cd865e9b6760c571b2878f7ba0 Mon Sep 17 00:00:00 2001 From: ville rantanen Date: Mon, 23 Jun 2014 22:41:05 +0300 Subject: [PATCH] deprecated leastalloc --- anduril/slurm-leastalloc | 96 +---------------------------- anduril/slurm-leastalloc.deprecated | 95 ++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+), 95 deletions(-) mode change 100755 => 120000 anduril/slurm-leastalloc create mode 100755 anduril/slurm-leastalloc.deprecated diff --git a/anduril/slurm-leastalloc b/anduril/slurm-leastalloc deleted file mode 100755 index 63902ca..0000000 --- a/anduril/slurm-leastalloc +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/bash - -if [ -z "$1" ] -then echo provide the script to run - exit 1 -fi -echo CPUS $ANDURIL_PREFIX_CPU -if [ -z "${ANDURIL_NODELIST}" ] -then NODELIST=( vm3 vm4 vm5 vm6 vm7 vm8 vm9 ) -else read -a NODELIST <<< "$ANDURIL_NODELIST" -fi - -if [ "$1" == "-h" ] -then echo -ne ' -This prefix selects the lowest cpu allocated node for slurm run. -Use it with anduril: --exec-mode prefix --prefix '$( basename $0 )' -To change the list of nodes (preferred order): -export ANDURIL_NODELIST="vm3 vm4 vm5" - -Current nodelist: "'${NODELIST[@]}'"'"( ${#NODELIST[@]} nodes)\n" - exit -fi - -NODERUNS=( ) - -# find node with least allocated CPUs - -for e in ${NODELIST[@]} -#do NODERUNS+=( $( squeue | grep $e | wc -l ) ) -do NODERUNS+=( $( scontrol show node $e | grep CPUAlloc | sed 's,.*CPUAlloc=\([0-9]\+\).*,\1,' ) ) -done -for (( i=0; i<${#NODERUNS[@]}; i++ )) -do scontrol -o show node ${NODELIST[$i]} | grep State=DOWN > /dev/null && NODERUNS[$i]=9999 -done -MIN=${NODERUNS[0]} -INDEX=0 -for (( i=0; i<${#NODERUNS[@]}; i++ )) -do (( ${NODERUNS[$i]} < MIN )) && { - MIN=${NODERUNS[$i]} - INDEX=$i - } - echo -n "${NODELIST[$i]}:${NODERUNS[$i]} " -done -echo "srun: Node ${NODELIST[$INDEX]}, occupied sockets: ${NODERUNS[$INDEX]}" >&2 - - -JOBROOT="$HOME/.srun" -mkdir -p "$JOBROOT" -JOBNAME=job_$( date +"%y%m%d_%H%M%S" )_$( echo $@ | md5sum | cut -f1 -d" " ) -JOBPATH="$JOBROOT/$JOBNAME" -while [ -d "$JOBPATH" ] -do echo Jobpath "$JOBPATH" exists - JOBNAME=job_$( date +"%y%m%d_%H%M%S" )_$( echo $@ | md5sum | cut -f1 -d" " ) - JOBPATH="$JOBROOT/$JOBNAME" -done -mkdir -p "$JOBPATH" -JOBFILE="$JOBPATH/job" -STATFILE="$JOBPATH/statistics" -STRMFILE="$JOBPATH/stream" -EXECPATH=$( pwd ) - -# create the jobfile -echo '#!/bin/bash' > "$JOBFILE" -chmod 755 "$JOBFILE" - -echo 'echo Node: $HOSTNAME'" >> \"$STATFILE\" " >> "$JOBFILE" -echo "pwd >> \"$STATFILE\" " >> "$JOBFILE" -echo "uptime >> \"$STATFILE\" " >> "$JOBFILE" -echo "date +'Start: %s' >> \"$STATFILE\" " >> "$JOBFILE" -echo -n "/usr/bin/time -o \"$STATFILE\" --append " >> "$JOBFILE" -for (( i=1; i<=$#; i++ )) -do echo -n "\"${!i}\" " >> "$JOBFILE" -done -#Catch the input stream (for R launcher) -cat - >> "$STRMFILE" -echo -n ' < "'$STRMFILE'"' >> "$JOBFILE" -echo -e "\n" >> "$JOBFILE" -echo "date +'Stop: %s' >> \"$STATFILE\" " >> "$JOBFILE" - -echo "The job file is in $JOBFILE" -minutes_now=$( date "+%M" ) - -# send the job -srun --nodelist=${NODELIST[$INDEX]} "$JOBFILE" -exitcode=$? -# 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 +10 -delete - find "$JOBROOT" -type d -depth -empty -delete -fi - -exit $exitcode - diff --git a/anduril/slurm-leastalloc b/anduril/slurm-leastalloc new file mode 120000 index 0000000..db9c124 --- /dev/null +++ b/anduril/slurm-leastalloc @@ -0,0 +1 @@ +slurm-maxfree \ No newline at end of file diff --git a/anduril/slurm-leastalloc.deprecated b/anduril/slurm-leastalloc.deprecated new file mode 100755 index 0000000..63902ca --- /dev/null +++ b/anduril/slurm-leastalloc.deprecated @@ -0,0 +1,95 @@ +#!/bin/bash + +if [ -z "$1" ] +then echo provide the script to run + exit 1 +fi +echo CPUS $ANDURIL_PREFIX_CPU +if [ -z "${ANDURIL_NODELIST}" ] +then NODELIST=( vm3 vm4 vm5 vm6 vm7 vm8 vm9 ) +else read -a NODELIST <<< "$ANDURIL_NODELIST" +fi + +if [ "$1" == "-h" ] +then echo -ne ' +This prefix selects the lowest cpu allocated node for slurm run. +Use it with anduril: --exec-mode prefix --prefix '$( basename $0 )' +To change the list of nodes (preferred order): +export ANDURIL_NODELIST="vm3 vm4 vm5" + +Current nodelist: "'${NODELIST[@]}'"'"( ${#NODELIST[@]} nodes)\n" + exit +fi + +NODERUNS=( ) + +# find node with least allocated CPUs + +for e in ${NODELIST[@]} +#do NODERUNS+=( $( squeue | grep $e | wc -l ) ) +do NODERUNS+=( $( scontrol show node $e | grep CPUAlloc | sed 's,.*CPUAlloc=\([0-9]\+\).*,\1,' ) ) +done +for (( i=0; i<${#NODERUNS[@]}; i++ )) +do scontrol -o show node ${NODELIST[$i]} | grep State=DOWN > /dev/null && NODERUNS[$i]=9999 +done +MIN=${NODERUNS[0]} +INDEX=0 +for (( i=0; i<${#NODERUNS[@]}; i++ )) +do (( ${NODERUNS[$i]} < MIN )) && { + MIN=${NODERUNS[$i]} + INDEX=$i + } + echo -n "${NODELIST[$i]}:${NODERUNS[$i]} " +done +echo "srun: Node ${NODELIST[$INDEX]}, occupied sockets: ${NODERUNS[$INDEX]}" >&2 + + +JOBROOT="$HOME/.srun" +mkdir -p "$JOBROOT" +JOBNAME=job_$( date +"%y%m%d_%H%M%S" )_$( echo $@ | md5sum | cut -f1 -d" " ) +JOBPATH="$JOBROOT/$JOBNAME" +while [ -d "$JOBPATH" ] +do echo Jobpath "$JOBPATH" exists + JOBNAME=job_$( date +"%y%m%d_%H%M%S" )_$( echo $@ | md5sum | cut -f1 -d" " ) + JOBPATH="$JOBROOT/$JOBNAME" +done +mkdir -p "$JOBPATH" +JOBFILE="$JOBPATH/job" +STATFILE="$JOBPATH/statistics" +STRMFILE="$JOBPATH/stream" +EXECPATH=$( pwd ) + +# create the jobfile +echo '#!/bin/bash' > "$JOBFILE" +chmod 755 "$JOBFILE" + +echo 'echo Node: $HOSTNAME'" >> \"$STATFILE\" " >> "$JOBFILE" +echo "pwd >> \"$STATFILE\" " >> "$JOBFILE" +echo "uptime >> \"$STATFILE\" " >> "$JOBFILE" +echo "date +'Start: %s' >> \"$STATFILE\" " >> "$JOBFILE" +echo -n "/usr/bin/time -o \"$STATFILE\" --append " >> "$JOBFILE" +for (( i=1; i<=$#; i++ )) +do echo -n "\"${!i}\" " >> "$JOBFILE" +done +#Catch the input stream (for R launcher) +cat - >> "$STRMFILE" +echo -n ' < "'$STRMFILE'"' >> "$JOBFILE" +echo -e "\n" >> "$JOBFILE" +echo "date +'Stop: %s' >> \"$STATFILE\" " >> "$JOBFILE" + +echo "The job file is in $JOBFILE" +minutes_now=$( date "+%M" ) + +# send the job +srun --nodelist=${NODELIST[$INDEX]} "$JOBFILE" +exitcode=$? +# 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 +10 -delete + find "$JOBROOT" -type d -depth -empty -delete +fi + +exit $exitcode +