Introduction à l'analyse dans D0 au CC-IN2P3


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.

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.



  1. Aide-mémoire à l'utilisation du CC-IN2P3: espace(s) disque, bandes (HPSS), transferts (bbftp), batch (bqs)...

  2.  
    Remarque préliminaire (triviale?): le code D0 n'étant disponible que sous Linux, il faut travailler sur ccali.
     
    1. Espaces disque: $HOME, $THRONG_DIR, $GROUP_DIR, /scratch

    2.  
      Espace personnel ($HOME):
      Chaque utilisateur dispose sur afs d'un espace disque limité, en général 200 Mo. La commande:
      fs listquota $HOME
      permet de voir l'espace disponible et son utilisation. Tout ce qui est écrit sur cet espace est sauvegardé.

      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.
       
       

    3. Utilisation des bandes (HPSS), transfert de données (bbftp), batch (bqs)

    4.  
      Les bandes magnétiques (HPSS):
      HPSS est le système de stockage de fichiers sur bandes magnétiques du CC-IN2P3, prévu pour écrire/relire de gros fichiers (au moins 100 Mo) grâce au logiciel RFIO. Pour des fichiers de taille inférieure à 100 (20) Mo, il est recommandé (obligatoire) de contacter le CC-IN2P3. Les fichiers sur HPSS sont rangés sous l'arborescence /hpss/in2p3.fr, separée de afs et de l'espace local. Le nom complet (nécessaire dans certaines applications, voir ci-dessous) est obtenu en faisant précéder le nom de l'arborescence par un nom de serveur (en pratique un alias fourni par le CC-IN2P3) qui est pour D0:
      cchpssd0.in2p3.fr:

      Chaque utilisateur a accès à son répertoire propre (en lecture/écriture, espace normalement limité a 200 Go?):
      /hpss/in2p3.fr/home/$U/$USER$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.


     
  3. Quelques remarques utiles sur le software D0

  4.  
    Il y a plusieurs possibilités pour savoir quelles versions du software D0 sont disponibles à Lyon:
     
    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 Duflot 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.
     
     

  5. Instructions pour une première analyse de données D0 à Lyon 

    1. En interactif

    2.  
      On a besoin d'espace disque pour recréer l'exécutable (environ 200 Mo) et pour stocker les données que l'on va rapatrier depuis HPSS (environ 100 Mo), soit au total environ 300 Mo, c'est-à-dire plus que l'espace utilisateur sur afs. En même temps, on voudrait sauvegarder d'éventuelles modifications du code et/ou des paramètres de contrôle (RCP). On va donc utiliser un répertoire de travail dans le $HOME, dont les sous-répertoires destinés à occuper beaucoup d'espace disque seront en fait des liens vers des répertoires disposant de l'espace nécessaire. Comme on tourne en interactif, on peut utiliser le scratch.

      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.dat
      Utilisation de runchunkanalyze pour lancer l'executable. Faire runchunkanalyze -h pour voir toutes les options.
      runchunkanalyze -mode=TMB -filelist=diskdata.dat -num=10
       
    3. En batch

    4.  
      Cette fois, on a besoin que les binaires soient visibles par la machine batch. On va donc utiliser, au lieu de l'espace scratch, l'espace afs disponible dans le GROUP_DIR pour y créer les répertoires bin lib tmp. Le reste est similaire à l'exemple précédent, hormis l'utilisation de runchunkanalyze.
       
      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


      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.

Page maintenue par: Bernard Andrieu