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 Duflot. 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é a 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) à 500 Mo: numcos=21 (22)
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 .
| ~ cp (Pour copier de/vers HPSS)
rfrm
$HPSS/filename
| ~ rm
rfmkdir $HPSS/newdir
| ~ mkdir
rfrename $HPSS/filename $HPSS/newfilename | ~ mv
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 aller sur d0mino et utiliser sam. Par exemple, 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.
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 Duflot, paragraphe 3. On peut éventuellement
consulter le guide complet
d'utilisation de bbftp en particulier pour connaître toutes les
commandes du type put, get, lcd,
etc.. (similaires aux commandes ftp) exécutées par bbftp.
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
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
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
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.rootdevraient faire apparaître la figure ci-dessous.
jetPt->Draw()