UI da usare: login in t2-ui-12.pd.infn.it o t2-ui-13.pd.infn.it
Queste sono UI che permettono la sottomissione dei job alle risorse locali via lsf (ove per locali si intendono nodi sia di Padova che di Legnaro).
Una volta loggati nella ui, verificate che la variabile d'ambiente $HOME sia definita come
/homeui/<nome_user> ovvero nel mio caso:
> echo $HOME
/homeui/fanzago
se al posto di /homeui/ avete /home/ dovete segnalare la cosa al supporto perche' vuol dire che c'e' un problema nella configurazione del vostro utente in ldap del tier2
Cluster: il cluster si chiama t2farm (si vede con il comando lsid)
Le code a cui si possono sottomettere job locali si chiamano local-cms-short e local-cms-long. Di default viene usata la short, ovvero non occorre specificarla nel comando di sottomissione.
Come sottomettere jobs:
> bsub /path/eseguibile
dove l'eseguibile puo' essere un sempice comando unix o uno script
Esempi:
1) >> bsub -J fedetest -oo outfile.%J -eo errorfile.%J /homeui/fanzago/ciao.sh
dove bsub e' il comando per sottomettere il job e le opzioni rispettivamente
-J e' il nome che voglio dare al mio processo in lsf, altrimenti come default viene assegnato come nome il jobId
-oo specifica stdout file dove verra' scritto l'output del processo
-eo specifica stderr file dove verra' scritto l'error del processo
in alternativa:
-o specifica stdout/err
%J e' il jobId di lsf, in questo caso tale numero verra' aggiunto al nome dello stderr e stdfile
Il nome dell'eseguibile deve venir specificato con il path (anche ./ in caso si trovasse nella stessa directory da cui lanciate il comando bsub)
Se non vengono specificati lo stdout e err, questi saranno persi (no email).
2) una seconda possiblita’ di sottomettere un job e’ creare uno script come il seguente:
#!/bin/sh
#BSUB -o test.log
#BSUB -J helloWorld
echo "Hello, world!"
e sottometterlo con il comando:
>> bsub <script.sh
(da notare bsub < e non solo bsub). Con questo sistema, i primi commenti dello script, che cominciano con #BSUB sono interpretati come argomenti di bsub, per cui, nell’esempio precedente, l’output viene mandato su test.log e il nome del job e’ helloWorld.
In pratica e’ come aver fatto:
>> bsub -o test.log -J helloWorld script
Directory di lavoro: una particolarita' della coda local e' che la directory di lavoro di lsf viene messa nella home con un nome tipo: lsf_*
Se si vuole mettere tale directory altrove, bisogna definire la variabile d'ambiente LSF_WORKING_DIR
per esempio:
export LSF_WORKING_DIR=/lustre/cmswork/fanzago/
N.B. in generale e' meglio lavorare su /lustre/cmswork perche' la /homeui/<user> e' in una partizione con relativamente poco spazio a disposizione.
Comandi lsf utili per monitorare cluster e jobs:
bqueues per sapere che code definite del cluster
bhosts per sapere i nodi del cluster
bjobs e bjobs -a per visualizzare lo stato dei jobs
bkill per eliminazione i job
La guida completa per user di lsf la trovate al seguente link:
https://batchconf.web.cern.ch/batchconf/doc/lsf/print/lsf_users_guide.pdf
-------------------------------------------------------------------------------------------------------
Esempi di script e di sottomissione
-------------------------------------------------------------------------------------------------------
ESEMPIO 1
script da sottomettere: ciao.sh
----------------------------------
#!/bin/bash
for m in c i a o
do
echo $m
done
mkdir fede_dir
cd fede_dir
echo "ciao" > fede_ciao.txt
cd ..
ls
which xrdcp
echo "fine"
----------------------------------------
Sottometto due job:
>> bsub -J fedetest_1 -oo outfile.%J -eo errorfile.%J /homeui/fanzago/ciao.sh
Job <22724216> is submitted to default queue <local>
>> bsub -J fedetest_2 -oo outfile.%J -eo errorfile.%J /homeui/fanzago/ciao.sh
Job <22724217> is submitted to default queue <local>.
Controllo lo stato:
>> bjobs
22724216 fanzago RUN local t2-ui-12.pd wl-07-04 fedetest_1 Nov 14 17:09
22724217 fanzago RUN local t2-ui-12.pd wl-07-04 fedetest_2 Nov 14 17:09
>> bjobs
No unfinished job found <----
Per vedere i job finiti si usa:
>>bjobs -a
22723692 fanzago DONE local t2-ui-12.pd wl-07-05 *elustre_6 Nov 14 16:12
22723693 fanzago DONE local t2-ui-12.pd wl-07-05 *elustre_7 Nov 14 16:12
22724216 fanzago DONE local t2-ui-12.pd wl-07-04 fedetest_1 Nov 14 17:09 <---
22724217 fanzago DONE local t2-ui-12.pd wl-07-04 fedetest_2 Nov 14 17:09 <---
Nella directory di lavoro (/lustre/cmswork/fanzago) trovo:
-rw-r--r-- 1 fanzago cmsuser 993 Nov 14 17:10 outfile.22724216
drwxr-xr-x 3 fanzago cmsuser 4096 Nov 14 17:10 lsf_working_dir_fedetest_1_22724216
-rw-r--r-- 1 fanzago cmsuser 248 Nov 14 17:10 errorfile.22724216
-rw-r--r-- 1 fanzago cmsuser 993 Nov 14 17:10 outfile.22724217
drwxr-xr-x 3 fanzago cmsuser 4096 Nov 14 17:10 lsf_working_dir_fedetest_2_22724217
-rw-r--r-- 1 fanzago cmsuser 248 Nov 14 17:10 errorfile.22724217
outfile.<jobId> contiene:
Sender: LSF System <lsfadmin@wl-07-04>
Subject: Job 22724216: <fedetest_1> Done
Job <fedetest_1> was submitted from host <t2-ui-12.pd.infn.it> by user <fanzago> in cluster <t2farm>.
Job was executed on host(s) <wl-07-04>, in queue <local>, as user <fanzago> in cluster <t2farm>.
</homeui/fanzago> was used as the home directory.
</lustre/cmswork/fanzago> was used as the working directory.
Started at Fri Nov 14 17:10:27 2014
Results reported at Fri Nov 14 17:10:28 2014
Your job looked like:
------------------------------------------------------------
# LSBATCH: User input
/homeui/fanzago/ciao.sh
------------------------------------------------------------
Successfully completed.
Resource usage summary:
CPU time : 0.12 sec.
Max Memory : 1 MB
Max Swap : 29 MB
Max Processes : 1
Max Threads : 1
The output (if any) follows:
c
i
a
o
fede_dir
fine
PS: Read file <errorfile.22724216> for stderr output of this job.
--------------
--------------
errorfile.<jobId> contiene
which: no xrdcp in (/sw/lsf/7.0/linux2.6-glibc2.9-x86_64/etc:/sw/lsf/7.0/linux2.6-glibc2.9-x86_64/bin:/bin:/usr/lib64/qt-3.3/bin:/opt/lcg/bin:/cvmfs/cms.cern.ch/common:/cvmfs/cms.cern.ch/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin)
errorfile.22724216 (END)
-------------
-------------
Nella directory lsf_working_dir_fedetest_1_22724216 trovo:
drwxr-xr-x 2 fanzago cmsuser 4096 Nov 14 17:10 fede_dir che a sua volta contiene il file
-rw-r--r-- 1 fanzago cmsuser 5 Nov 14 17:10 fede_ciao.txt
------------------------------------------------------------------------------------------------------------------
ESEMPIO 2 : con CMSSW
da una directory dove ho installato CMSSW con il solito modo :
export LSF_WORKING_DIR=$PWD
(cosi’ la dir di lavoro del job sara’ dentro la directory di lavoro corrente)
script da sottomettere: script.sh
----------------------------------------
#!/bin/sh
#BSUB -o test.log
eval `scram runtime -sh`
cmsRun -j fjr.xml myConfig_cfg.py
--------------------------------------------------
Attenzione: l’input e l’output definiti nel vostro myConfig_cfg.py *non* vengono modificati in alcun modo, per cui e’ vostra responsabilita’ farlo se volete sottomettere piu’ di un job.
Una semplice possibilita’ e’ la seguente. Nel vostro myConfig_cfg.py avete l’input definito cosi’:
fname = INSERTFNAME
fNames = [l.rstrip() for l in open(fname)]
process.source = cms.Source ("PoolSource",
fileNames = cms.untracked.vstring(fNames),
)
Poi nel vostro script che sara’ sottomesso a LSF, avete qualcosa di simile a:
# run
run=Run2012D
# che lista di files di input voglio usare
fname="/lustre/cmswork/lacaprar/Ana/PATuple_2012/Prod6/MuEG_${run}-22Jan2013-v1_AZh_Prod6.list"
# sostituisco questa lista con quella dummy che c’e’ nel mio
sed -e "s;INSERTFNAME;'${fname}';" copyPickMerge_cfg.py > copyPickMerge${run}_cfg.py
cat copyPickMerge${run}_cfg.py
cmsRun -j fjr.xml copyPickMerge${run}_cfg.py
sottometto lo script con
>> bsub < script.sh