Changes between Version 3 and Version 4 of Modipsl_nouv


Ignore:
Timestamp:
06/01/12 14:16:09 (12 years ago)
Author:
mmaipsl
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Modipsl_nouv

    v3 v4  
    2525 
    2626=> Particularité suite au changement de système d'archivage au CCRT, ajouter dans config.card !PackFrequency=1Y. Lire aussi l'exposé https://forge.ipsl.jussieu.fr/igcmg/attachment/wiki/ModipslBeginner1/CCRT_TGCC_expose_2012_04_03.pdf 
     27 
     28== Sauvegarde automatique des sources == 
     29 
     30Cette fonctionnalité est pour l'instant désactivé dans libIGCM. 
     31 
     32=== La sauvegarde en cours de production === 
     33Le nouveau script libIGCM !SaveSourceModifications.job est lancé sur la frontale de la 
     34machine de calcul, via la fonction IGCM_config_SaveSourceModifications de 
     35libIGCM_config.ksh, au début de la simulation et lorsque la date de l'un des 
     36exécutable a changé. 
     37 
     38Ceci n'est pas vraiment optimal car en théorie, on devrait testé à chaque itération 
     39si l'un des paramètres de la configuration a été modifié (par un checksum sur les 
     40fichiers initialement téléchargés par exemple). 
     41 
     42Le script !SaveSourceModifications.job est donc exécuté sur la frontale (qui a un accès à 
     43l'arborescence modipsl et donc aux sources des modèles et à la configuration).  
     44Il exécute l'outil de différence ${MODIPSL}/util/script_diff_model. Puis il tar le 
     45répertoire créé par ce dernier et le sauve dans le répertoire ${R_OUT_EXE} et le 
     46préfix ${config_UserChoices_JobName}_${!DatesPeriod} et le nom 
     47${MODIPSL_SAVE_NAME}_certified.tar ou ${MODIPSL_SAVE_NAME}_NOTcertified.tar si le 
     48dernier fichier modifié est plus ancien que la dernière date de modification des 
     49exécutables dans le job. En effet cette condition entraîne que les données ont pu 
     50réellement être produites à partir des modifications enregistrer. Si un fichier 
     51source ou un fichier de paramètre a été modifié entre temps, on a pas cette certitude 
     52(et donc la certification de la sauvegarde des sources). 
     53 
     54=== Le fonctionnement interne de la sauvegarde des sources === 
     55Pour aller un peu plus loin dans l'explication du mécanisme de sauvegarde, on décrit 
     56ici les deux utilitaires script_diff_model et script_log_analyse. 
     57 
     58Cet outils permettent d'analyser et de fabriquer une copie de l'arborescence modipsl 
     59avec toutes les diffs de sources gérés sous CVS ou Subversion par élément téléchargé 
     60dans la configuration dans mod.def. 
     61 
     62Le script script_log_analyse sert à analyser la '''dernière''' configuration 
     63récupérée avec la commande model (ie il interprète la dernière configuration sauvée 
     64dans le fichier util/log). Il suffit pour l'utiliser de renseigner la variable 
     65${MODIPSL}. Il construit alors une série de tableaux en mémoire (décrit dans le 
     66script) donnant les informations nécessaires et suffisantes pour récupérer la bonne 
     67version de la composante ou de l'outil, via l'un des deux gestionnaires de révision. 
     68 
     69Le script script_diff_model créé un répertoire temporaire de sauvegarde des 
     70différences de source (le préfix modipsl_save_diff avec la date de son exécution et 
     71représenté par la variable ${MODIPSL_SAVE}). Après avoir exécuter l'outil 
     72script_log_analyse décrit précédemment, il parcourt toutes les composantes et outils 
     73téléchargés avec la commande model initiale et appelle les outils de diff du 
     74gestionnaire de version de la composante pour sauver l'ensemble des différences entre 
     75la composante initiale et son état actuel. Il permet aussi de sauver tous les sources 
     76suplémentaires dont l'extension est listée dans la variable SUFFIXES : 
     77{{{ 
     78# Code source suffixe for new file detection  
     79SUFFIXES='\(f90\|F90\|f\|F\|h\|h90\|hh\|c\|cc\|inc\|fcm\|path\|cfg\|card\|driver\|def\|def_.*\|txt\|xml\|ksh\|tex\)' 
     80}}} 
     81On sauvegarde alors à priori toute modification effectuée depuis la récupération de 
     82la composante, jusqu'au lancement de l'exécutable. 
     83 
     84=== La récupération des sources sauvegardés === 
     85Le script script_recup_model de modipsl/util permet de récupérer à la main chacun des 
     86tarballs sauvegardés avec les données au cours de la production. Il n'y a pour 
     87l'instant pas de récupération automatique d'un scénario complet. (Je donne à la fin de 
     88ce paragraphe quelques spécifications pour construire un tel job.)  
     89 
     90Pour utiliser ce script, placez-vous dans un modipsl vide récent. Il vous faut 
     91récupérer une arborescence sauvegardée par script_diff_model et probablement la 
     92dépaqueter dans un répertoire temporaire (à supprimer à la fin). Puis simplement 
     93exécuter ce script avec le chemin vers ce répertoire temporaire. Le script fait alors 
     94les appels checkout (demande de mot de passe possible) comme l'avait fait la commande 
     95model - avec les bonnes révisions - et remet en place les fichiers sources ou de 
     96paramètres crées entre la récupération initiale et la sauvegarde dans le job.    
     97 
     98 
     99Pour construire le job de récupération systématique des sources lors d'un scénario 
     100complet, les actions à construire sont les suivantes : 
     101 1. construction du modipsl à jour 
     102 1. récupération du premier tar (pour le source du départ) 
     103 1. on dépaque ce tar pour installer le source et la config (utilisation de scrip_recup_model) 
     104 1. suppression du répertoire temporaire 
     105 1. compilation des exécutables 
     106 1. détection du tar suivant (date dans le préfix) 
     107 1. modification du config.card dans le répertoire de la configuration (date du 
     108   prochain arrêt). On sauvegarde la date finale originale 
     109 1. lancement du job 
     110 1. et on boucle ces opérations à partir de la seconde étape.