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