Ces quelques pages visent à permettre à des personnes
n'ayant aucune (enfin presqu'aucune) expérience du CC-IN2P3 et/ou
du soft D0 de commencer à faire de l'analyse. Elles essayent d'aller
à l'essentiel et sont donc par nature sommaires et incomplètes.
En outre, elles recèlent peut-être des erreurs ou des imprécisions.
Ces pages ne demandent donc qu'à être étendues, améliorées
et corrigées, si besoin est, grâce à vos commentaires
et suggestions. A noter que vous pouvez également trouver des informations utiles sur la page développée par Smain.
Avant de commencer à lire ce qui suit, il est recommandé,
si vous ne l'avez déjà fait, de consulter quelques références
disponibles sur le web:
- pour le CC-IN2P3, il est vivement conseillé de lire ou
au moins parcourir les pages
d'introduction et les différents manuels disponibles à
partir de la page manuel, en particulier
les manuels
Unix
et afs.
- pour le soft D0, à ma connaissance, la meilleure introduction
aux principes de base est la présentation
donnée par Laurent. Pour une introduction détaillée
à l'analyse proprement dite, on peut se reporter à la présentation
donnée par Marco Verzocchi. Enfin la page D0-France:
Software recense assez complètement l'information disponible
sur le web.
Espace commun ($THRONG_DIR):
De l'espace disque commun, sauvegardé journalièrement,
est également alloué aux divers utilisateurs d'une même
expérience. C'est là qu'est stocké le software D0.
La commande:
fs la
$THRONG_DIR
permet de voir les droits d'accès à cet espace. Pour
D0, le droit d'écriture est restreint aux administrateurs de groupe
-appelés czars dans le jargon
CC-IN2P3- et administrateurs système.
Espace groupe ($GROUP_DIR):
De l'espace disque en quantité plus importante, mais non
sauvegardé, est également alloué à chaque expérience
et, dans le cas de D0, divisé entre les laboratoires. La commande:
qspace
permet de voir la répartition de cet espace par laboratoire
et son utilisation, ainsi que les noms des czars.
Même si l'espérance de vie des fichiers écrits dans
cet espace est assez élevée, il est fortement conseillé
de sauvegarder manuellement tout ce qui a besoin de l'être.
Espace temporaire (/scratch):
Chaque utilisateur peut également disposer de façon
temporaire d'un espace assez important (plusieurs Go) spécifique
à la machine à laquelle il est connecté et dont le
nom est visible par echo $HOST
ou echo $HOSTNAME.
Il suffit pour cela de se placer dans le répertoire /scratch
et d'y créer un sous-répertoire (par exemple à son
nom, mais ce n'est pas obligatoire). La durée de vie de cet espace
est limitée et aléatoire: il est donc fortement conseillé
de n'y mettre que des fichiers que l'on peut recréer assez vite.
Chaque utilisateur a accès à son répertoire
propre (en lecture/écriture, espace normalement limité à
200 Go?):
/hpss/in2p3.fr/home/$U/$USER
où $U est la première
lettre de $USER
et au répertoire du groupe (en lecture seulement pour la
plupart des utilisateurs), qui est pour D0:
/hpss/in2p3.fr/group/d0
Les TMB importées régulièrement depuis Fermilab
sont disponibles sur le répertoire:
/hpss/in2p3.fr/group/d0/data/import_rtp
A chaque fichier HPSS est attachée une valeur appelée
COS (Class Of Service), qui sert à optimiser la gestion des fichiers,
et qui peut être choisie avant l'écriture sur HPSS
par la commande:
setenv RFC_HPSSCOS
numcos
La valeur de la COS doit obéir aux règles simples
qui suivent, faute de quoi l'écriture sur HPSS peut être
refusée:
- répertoire utilisateur: numcos=0
(c'est la valeur par défaut)
- répertoire groupe, fichiers de taille INFÉRIEURE
(SUPÉRIEURE) à 64 Mo: numcos=21
(22)
Un utilitaire python de Patrice setCos.py donne la bonne valeur à la variable d'environnement RFC_HPSSCOS pour un fichier, par exemple setCos.py filename.
Pour simplifier l'écriture, on définit une nouvelle
variable d'environnement HPSS
qui pointe vers le répertoire utilisateur dans HPSS par la
commande:
setenv HPSS
/hpss/in2p3.fr/home/$U/$USER
Les fichiers sur HPSS sont accessibles grâce aux commandes
RFIO indiquées ci-dessous suivies de leur équivalents
Unix:
rfdir $HPSS/
| ~ ls -l
(Voir remarque plus bas)
rfcp
$HPSS/filename ./filename
| ~ cp
(Pour copier de/vers HPSS)
rfrm
$HPSS/filename
| ~ rm
rfmkdir $HPSS/newdir
| ~ mkdir
rfrename $HPSS/filename
$HPSS/newfilename
| ~ mv
rfstat
$HPSS/filename
| ~ stat
ATTENTION à rfdir:
cette commande ne DOIT être utilisée QUE sur des répertoires
où le nombre de fichiers est limité. Par exemple, il est,
en principe, INTERDIT de faire:
rfdir /hpss/in2p3.fr/group/d0/data/import_rtp
Pour avoir la liste des TMB à Lyon, il faut utiliser sam (c'est possible depuis Lyon, mais c'est moins rapide que sur d0mino). Après setup sam, la commande:
sam list files --dim="data_tier thumbnail and (file_name like %raw% and (version like p13% and (full_path like %/hpss/in2p3.fr%)))"
permet d'avoir la liste des TMB p13 disponibles à Lyon. Si vous
importez beaucoup de fichiers sur votre espace personnel HPSS, il
est recommandé de maintenir séparément une liste à
jour de ces fichiers et d'éviter au maximum d'utiliser rfdir
à cette fin.
Un petit utilitaire python écrit par Patrice getSize.py donne la taille d'un fichier HPSS en octets.
Enfin, avant d'utiliser HPSS, il est conseillé de lire les FAQ.
Le transfert de données (bbftp):
bbftp est le logiciel de transfert de données développé
au CC-IN2P3 pour Babar. Il est interfacé avec RFIO et permet
donc de transférer directement entre clued0/d0mino
et HPSS. Pour l'utiliser, se référer aux instructions
écrites par Laurent, paragraphe 3. On peut éventuellement
consulter le guide
complet d'utilisation de bbftp en particulier pour connaître
toutes les commandes bbftp du type put,
get, lcd,
etc.. similaires aux commandes ftp.
Le transfert officiel des données de FNAL vers Lyon peut être
suivi sur cette page
web .
Dernière chose à propos des transferts: pour essayer
d'éviter les doublons, je vais mettre en place une page web qui
recensera, sous une forme à déterminer, les fichiers transférés
de facon privée (hors TMB officiels), par exemple des skims de physique,
des fichiers Monte-Carlo, des données RAW ou DST, etc... Si vous
transférez (ou avez déjà transféré)
des fichiers de ce type, susceptibles d'intéresser d'autres personnes
de D0-France, merci de m'envoyer une liste de vos fichiers pour que je
l'inclue dans cette page web.
Le système batch (bqs):
bqs est le gestionnaire de batch dévelopé
au CC-IN2P3, similaire à celui de clued0. Les pages web correspondantes
au CC-IN2P3 étant plutôt bien faites, je préfère
vous inviter à les lire, en particulier la page
d'introduction, la définition
des classes, la liste
des commandes bqs et la liste
des options de soumission d'un job batch.
ups/upd est un logiciel permettant de gérer de façon standardisée l'installation du code D0 proprement dit ainsi que des différents programmes nécessaires à son bon fonctionnement. On peut utiliser upd pour voir quelles versions du code D0 sont disponibles à FNAL:
setup upd
upd list -aK+ -h www-d0.fnal.gov
D0RunII-bin
| grep -i linux
Une fois qu'on a choisi la release avec laquelle on veut travailler,
par exemple p13.08.00, on fait,
comme à FNAL:
setup D0RunII p13.08.00
Si on veut récupérer le code source d'un package,
par exemple jetanalyze, pour
recréer des executables, on peut, dans un premier temps, utiliser
la commande:
getpkg jetanalyze
C'est un script écrit par Laurent qui permet de récuperer,
pour un package donné, la version correspondant à la release
pour laquelle le setup a été fait.
Pour savoir quelle version d'un package correspond à une
release donnée (exemple: quelle est la version de jetanalyze
utilisée dans p13.08.00?)
faire (après setup de la version en question):
less $SRT_PUBLIC_CONTEXT/D0reldb/inventory
| grep jetanalyze
On peut également récupérer d'autres versions d'un package donné (qui peut même être absent de la release utilisée). Il faut pour cela utiliser la commande usuelle addpkg, mais comme le CC-IN2P3 n'est pas reconnu comme kerberisé par FNAL, ça demande un petit effort préliminaire:
cd $HOME
| Ça marche peut-être ailleurs, mais bon...
ssh-keygen
| Répondre par la touche ENTER à la 1ère question
puis donner deux fois un mot de passe,
| qui doit être différent de votre mot de passe Linux.
Ensuite, il faut envoyer un mail à d0-release-mgr@fnal.gov
avec en fichier joint (in English: attached):
$HOME/.ssh/identity.pub
Vous pouvez donner comme sujet du mail:
Public key for D0 CVS access
et dans le texte du message, par exemple:
Please find attached my public key
for CVS access through ssh.
Dès que vous recevez confirmation de d0-release-mgr@fnal.gov,
vous avez accès à cvs par:
setup d0sshcvs
La 1ere fois, vous aurez probablement la question:
Are you sure you want to continue
connecting (yes/no)?
Après avoir répondu yes,
puis donné le mot de passe que vous avez choisi au moment du ssh-keygen,
vous pourrez alors utiliser addpkg
comme à FNAL. Par exemple, la commande:
addpkg package_name
créera un nouveau répertoire package_name
contenant le code source de ce package.
Dernière chose: ce mode d'accès aux packages est valable
à partir de n'importe quelle machine. Il suffit de copier dans son
$HOME le répertoire .ssh.
cd /scratch
mkdir $USER
cd $USER
mkdir bin
lib tmp data
cd $HOME
setup D0RunII p13.08.00
newrel -t p13.08.00
newdir
cd newdir
rmdir bin
lib tmp
ln -sf /scratch/$USER/bin
bin
ln -sf /scratch/$USER/lib
lib
ln -sf /scratch/$USER/tmp
tmp
gmake clean
On rapatrie le code source du package analysis_example.
getpkg analysis_example > & install_analysis_example.log
On peut maintenant compiler et linker: ça prend environ 10 minutes, patience...
gmake all >> & install_analysis_example.log
Encore des setups...
d0setwa
setup d0tools -t
On utilise D0rfcp (version D0 de rfcp, voir commentaire plus bas) pour copier (environ 30s en temps normal) un fichier TMB (choisi pour cet exemple car il fait environ 100 Mo) sur le disque /scratch . Pour simplifier l'écriture, on définit une nouvelle variable d'environnement HPSS_TMB
setenv HPSS_TMB
/hpss/in2p3.fr/group/d0/data/import_rtp
D0rfcp $HPSS_TMB/recoT_all_0000172596_mrg_002-003.raw_p13.06.01
/scratch/$USER/data
Création de la liste des fichiers à analyser (ici limitée à 1 fichier)
ls /scratch/$USER/data/* > diskdata.datUtilisation de runchunkanalyze pour lancer l'executable. Faire runchunkanalyze -h pour voir toutes les options.
runchunkanalyze -mode=TMB -filelist=diskdata.dat -num=10
ATTENTION: L'utilisation de runchunkanakyze pour lancer un job en batch sans avoir à ecrire de scripts n'est disponible qu'à partir de la version p14.03.00.
Pour commencer, il vous faut trouver de la place sur labdisk, un disque parmi ceux alloués à votre labo dans GROUP_DIR. Si vous n'avez pas déjà l'autorisation d'écriture sur ce disque, demandez-la à votre czar.
qspace
cd $GROUP_DIR/labdisk/$USER
mkdir bin
lib tmp
cd $HOME
setup D0RunII p14.03.00
newrel -t p14.03.00
newdir
cd newdir
rmdir bin
lib tmp
ln -sf $GROUP_DIR/labdisk/$USER/bin
bin
ln -sf $GROUP_DIR/labdisk/$USER/lib
lib
ln -sf $GROUP_DIR/labdisk/$USER/tmp
tmp
gmake clean
getpkg analysis_example
> & install_analysis_example.log
En option: pour se débarrasser des 3 lignes remplies de ^@^@^@^@ au debut du .log
getpkg framework
>> & install_analysis_example.log
cp ~andrieu/public/src/Main.cpp
framework/src/Main.cpp
On utilise de préférence la version maxopt (disponible pour p14.03.00 à Lyon)
srt_setup SRT_QUAL=maxopt
Encore un peu de patience...
gmake all >> & install_analysis_example.log
d0setwa
setup d0tools -t
On est finalement prêt à lancer runchunkanalyze en batch. runchunkanalyze -mode=TMB -filelist=hpssdata.dat -num=1000 -userpostscript=user_jobend -maxopt -mem=512MB -batch -q=A -batchopts='-l%t=500,hpss,platform=LINUX,scratch=1GB' -fwkparams -stager D0rfcp
sont ici transmises par l'option -batchopts
entre '' et en remplacant le caractère
blanc par %
A la fin du job, vous devriez avoir un fichier D0ChunkAnalyze.root
dans votre $HOME. Si tout a
bien marché, les commandes suivantes:
root -l D0ChunkAnalyze.root jetPt->Draw()devraient faire apparaître la figure ci-dessous.