SGE - Limiter le nombre de job

Pour limiter le nombre de calcul lancé par un utilisateur, il est possible de paramétrer un script dans le fichier prolog de SGE en appelant un autre fichier, ici nomé MaxJobs contenant les restrictions.

Fichier de configuration

Fichier de limitation

Dans le fichier <$SGE_ROOT>/site/MaxJobs ont ajoute le nombre maximal de jobs qu’un utilisateur peut lancer suivi de son compte en précisant une valeur max par défaut.

# cat <$SGE_ROOT>/site/MaxJobs
#Nb_job:user
8:defaut
20:jerry
20:jess
10:morty
24:beth
50:rick

Fichier prolog

Puis dans le prolog, on créer un script bash qui va mettre en place cette limitation :

# cat <$SGE_ROOT>/site/prolog

#!/bin/sh

exit 0

[...]

maxJobs=`cat <$SGE_ROOT>/site/MaxJobs| grep -v "#" |grep $USER| awk -F':' '{print $1}'`

if ! let $maxJobs 2>/dev/null; then maxJobs=`cat <$SGE_ROOT>/site/MaxJobs | grep -v "#" | grep defaut | awk -F':' '{print $1}'`; fi

date=`date +"%m/%d/%Y %H:%M:%S"`
sec=`date +"%S"`
sec=`expr $sec + 1`

if [ $sec -lt 10 ]
then
date_1=`date +"%m/%d/%Y %H:%M:0$sec"`
else
date_1=`date +"%m/%d/%Y %H:%M:$sec"`
fi

nJobs=`qstat -u $USER | grep $USER | egrep -v "$date|$date_1" | awk -v nJobs=0 '$5 ~ "r" { nJobs++} END {print nJobs}'`

if [ $nJobs -gt $maxJobs ]
then
exit 99
fi

exit 0
> Partager <