L'outil de gestion de configuration:
CMT

État actuel et futures évolutions

Christian Arnault, <arnault@lal.in2p3.fr>

Vincent Garonne, <garonne@lal.in2p3.fr>


20 Septembre 2006

Journées Informatique IN2P3-DAPNIA, Lyon-Valpré

CMT en moins d'une minute

Configuration Management Tool

  • Outil pour la configuration logicielle
  • Développé par le LAL depuis 1996
  • Approche Open source (Licence CeCILL v2)
  • En production:
  • LHC: ATLAS, LHCb
  • Virgo, Planck, GLAST
  • Etc.

  • Sommaire

    1. Rappel
    2. Principes et illustration
    3. Implication de son utilisation
    4. Quelques outils associés
    5. Références

    La gestion de configuration logicielle

    Principes

    Illustration

    Spécification d'un package

    Spécification d'un projet

    Implication

    • Automatisation complète des étapes de production
      • Compilation, liens, tests, génération de la doc, installation
    • Configurations multi-plateformes automatisées
      • Tout élément de la configuration peut être spécialisé selon
      • La plate-forme (Linux, Windows, MacOSX, LynxOS, RH, RHEL, Debian, ...)
      • Le site (LAL, CERN, LBL, ...)
      • Le contexte du projet (Atlas, LHCb, Virgo, ...)
      • Le contexte de production (debug, opt, ...)
      • Des choix de technologie (MySQL vs Oracle, Qt vs Gtk, etc...)
    • Compréhension à priori de tout élément de la configuration
        >cmt show <macro>|<tags>|<uses>|...

    Quelques outils associés

    • Visualisation de graphes de dépendance: cmtgrapher

    • Interface avec CVS: plugin cmtcvs

    • Documentation: Doxygen

      • Déploiement: PACMAN
        • Pacman gère un parc distribué de packages structurés en kit (kit=fichier de spécification, archive)
        • Définit des concepts très riches de caches virtuels
        • Base de connaissance de CMT est utilisée pour
          • fabriquer les kits Pacman
          • Remplir les caches Pacman

      • Exécution multi-threadé: tbroadcast
        • Exécution en parallèle de commande dans les packages en respectant les dépendances
        • Utile pour la compilation (Testé avec ATLAS/LHCb)

    Exemple: Compilation multi-threadé

    • Soit les packages A, B, C, D, E
    • Graphe d'exécution:
    • Soit les dépendances:
      • A utilise {B, C}
      • C utilise {D, E}
    Dependency graph
    • Diagramme de Gantt:
        1) Mode séquentiel:
        2)Mode multi-threaded:

    Les projets d'ATLAS

    Compilation multi-threadé et ATLAS

    Nombre de threads=60, un projet de 136 packages
    gain =~ facteur 2 avec distcc

    Tout l'apanage d'un projet open source