1. ssh lxui.jinr.ru
пользователь попадает на одну из машин lxui[01-04].
Эти машины доступны по ssh из всех сетей, не только сети ОИЯИ.
2. Выполнить команду
klist -e
должна в выдаче показать:
{{{
lxui04:~ > klist -e | grep -o aes256-cts
aes256-cts
}}}
Если это не так , пользователю необходимо сменить пароль. Кроме того, в Kerberоs время действия первоначального тикета
«Expires» должно быть 24 часа, а время его обновления
«renew until» — 100 дней. (Формат — месяц/день/год) .
Тикет Kerberos в SLURM хранится на сервере для последующего использования в задаче, когда она запускается на счётной машине, в этот момент заводится и токен AFS для доступа к его $HOME.
Тикет и токен постоянно обноляются (до 100 дней) при работе
задачи на счётной машине. Это делает сам SLURM без запуска
krenew …
3. Для правильного запуска задач — автоматического продления времени жизни тикета Kerberos и токена AFS в итерактивном сеансе, надо один раз в текущей сессии запускать:
krenew -a -b -K 60 -t &
krenew — автоматически обновляет kerberos тикет и AFS токен в фоне, обновляется до 100 дней.
auks — передаёт kerberos тикет на сервер, где он хранится, обновляется и передаётся на счётную машину при старте задаче.
4. Проверить запуск в SLURM, можно запустив интерактивный сеанс: srun -n 1 -N 1 --pty --mem=500M --tmp=5G /bin/bash -i
Появится подсказка со счётной машины:
wn410:~ >
посмотреть там HOME и тикет/токен:
pwd
klist
tokens
Можно запустить и свою программу …
или
srun -vv -n 1 -N 1 --pty --mem=500M --tmp=5G /bin/bash -i
Выход, как всегда:
exit
6. при ошибке, обновляете тикет
auks -r
auks -a
7. SLURM создаёт для каждой задачи уникальную директорию,
обычно первое действие в скрипте задачи:
cd $TMPDIR
TMPDIR — переменная окружения, которая указывает на эту директорию.
Размер партиции, в которой создаётся эта директория, максимально
возможный на счётных машинах. Крайне желательно создавать
временные, или результирующие файлы в этой директоии,
потом переписывать из/в пространство в EOS.
НИКОГДА НЕ ИСПОЛЬЗУЙТЕ ДИРЕКТОРИИ /tmp, /var/tmp
вы можете их переполнить, что приведёт к сбоям в работе
системы.
8. Запустить скрипт задачи в SLURM
sbatch sript1.sh
9. проверяете статус задачи
squeue -u `id -un`
10. Следует иметь ввиду следующее:
По умолчанию лимит: 400 ядер для работающих задач.
Когда все ваши работающие задачи займут 400 ядер,
или нет свободных ядер, задачи будут становиться в очередь.
Итак, запуск задачи в SLURM на lxui должен выглядеть примерно так:
а. заходите по ssh/putty на lxui.jinr.ru б. запускаете обновление тикета/токена krenew -a -b -K 60 -t в. проверяете интерактивной задачей srun -n 1 -N 1 --pty --mem=500M --tmp=5G /bin/bash -i exit г. при ошибке обновляете тикет auks -r auks -a д. запускаете скрипт задачи в SLURM sbatch sript1.sh е. проверяете статус squeue -u `id -un`
Примерный скрипт для запуска через sbatch :
{{{ #!/bin/bash #SBATCH --job-name=test-001 # Job name #SBATCH --mail-type=END,FAIL # Mail events (NONE, BEGIN, END, FAIL, ALL) #SBATCH --mail-user=<usr>@jinr.ru # Where to send mail #SBATCH --no-requeue # do not auto requeue on errors #SBATCH --ntasks=1 # Run on a single CPU #SBATCH --cpus-per-task=1 # 1 core per tast #SBATCH --mem=2gb # Job memory request #SBATCH --time=3-00:00:00 # Time limit days-hrs:min:sec #SBATCH --tmp=100G # max disk space in $TMPDIR $HOME/slurm/test.sh }}}
Пример скрипта test.sh ( только для теста):
{{{
#!/bin/bash
echo «Start at: «`date`
U=`echo $USER | cut -c 1-1`
SRCF=file1GB
DSTF=$SRCF.$SLURM_JOB_ID
test X»$SUBMITHOST» = «X» && SUBMITHOST=lxui01.jinr.ru
echo «—— ARGV: 0=\»$0\» 1=\»$1\» 2=\»$2\» 3=\»$3\» 4=\»$4\»»
echo «—— currunt dir»
pwd
OPWD=`pwd`
echo «—— cd $TMPDIR»
cd $TMPDIR
pwd
echo «—— hostname -f»
hostname -f
echo «—— whoami»
whoami
echo «—— id»
id
echo «—— ulimit -a»
ulimit -a
echo «—— klist»
klist
echo «—— tokens»
tokens
echo «—— eos -b whoami»
eos -b whoami
echo «—— cat $HOME/.forward >/dev/null»
cat $HOME/.forward
echo «—— environment»
env | grep -E «^[A-Z]» | grep -v LS_COLORS | sort
echo «—— dd if=/dev/urandom of=$SRCF bs=10M count=100»
dd if=/dev/urandom of=$SRCF bs=10M count=100
for i in `seq -w 1 3 ; do
date
echo «###################################################################### step $i»
echo «—— /bin/rm -f /eos/user/$U/$USER/$DSTF»
/bin/rm -f /eos/user/$U/$USER/$DSTF
echo «—— /bin/time -p cp -pv $SRCF /eos/user/$U/$USER/$DSTF»
/bin/time -p cp -pv $SRCF /eos/user/$U/$USER/$DSTF
echo «—— cmp $SRCF /eos/user/$U/USER/$DSTF»
cmp $SRCF /eos/user/$U/$USER/$DSTF
echo «—— /bin/rm -f /eos/user/$U/$USER/$DSTF»
/bin/rm -f /eos/user/$U/$USER/$DSTF
echo «—— eoscp -n $SRCF /eos/user/$U/$USER/$DSTF»
eoscp -n $SRCF /eos/user/$U/$USER/$DSTF
echo «—— cmp $SRCF /eos/user/$U/USER/$DSTF»
cmp $SRCF /eos/user/$U/$USER/$DSTF
echo «—— /bin/rm -f /eos/user/$U/$USER/$DSTF»
/bin/rm -f /eos/user/$U/$USER/$DSTF
echo «—— eos cp -n $SRCF /eos/user/$U/$USER/$DSTF»
eos cp -n $SRCF /eos/user/$U/$USER/$DSTF
echo «—— cmp $SRCF /eos/user/$U/USER/$DSTF»
cmp $SRCF /eos/user/$U/$USER/$DSTF
echo «—— /bin/rm -f /eos/user/$U/$USER/$DSTF»
/bin/rm -f /eos/user/$U/$USER/$DSTF
echo «—— eos cp -n $SRCF root://eos.jinr.ru//eos/user/$U/$USER/$DSTF»
eos cp -n $SRCF root://eos.jinr.ru//eos/user/$U/$USER/$DSTF
echo «—— cmp $SRCF /eos/user/$U/USER/$DSTF»
cmp $SRCF /eos/user/$U/$USER/$DSTF
echo «—— /bin/rm -f /eos/user/$U/$USER/$DSTF»
/bin/rm -f /eos/user/$U/$USER/$DSTF
echo «—— xrdcp -f $SRCF \»root://eos.jinr.ru//eos/user/$U/$USER/$DSTF?xrd.wantprot=krb5,unix\»»
xrdcp -f $SRCF «root://eos.jinr.ru//eos/user/$U/$USER/$DSTF?xrd.wantprot=krb5,unix» 2>&1 | tr «\r» «\n» | tail -1
echo «—— cmp $SRCF /eos/user/$U/USER/$DSTF»
cmp $SRCF /eos/user/$U/$USER/$DSTF
echo «—— id»
id
echo «—— klist»
klist
echo «—— tokens»
tokens
echo «—— eos -b whoami»
eos -b whoami
echo «—— ps auxwww | grep -E $USER | grep -v [g]rep»
ps auxwww | grep -E «$USER» | grep -v [g]rep
echo «—— ssh -x $SUBMITHOST /bin/true»
ssh -x $SUBMITHOST /bin/true
echo «—— sleep 600»
sleep 600
done
echo «Done «`date`
exit 0
}}}
Логи stdout/stderr будут записыватьcя в текущую директорию под именем slurm-<n>.out , <n> — индекс задачи в SLURM
Посмотреть где она запущена:
sqstat --user=$USER