wiki:BasculeCCRTTGCC/Scripts/Archivage_restart

Version 2 (modified by acosce, 10 years ago) (diff)

--

Scripts permettant d'archiver les restarts lors de la bascule du CCRT vers le TGCC et dans la nouvelle chaîne de production

  • Anne Cozic - le 24 janvier 2012 -



Rappel de la décision prise lors du brainstorming

${DMFDIR}/IGCM_OUT/*/???/Restart
pack_tool_restart(Path(s), card STOREDIR, LengthMax(Model,Compname), Force, logs)
====> intervention humaine : NON, on finit ce que l'on commence.

  • ménage implicite par le PACK
  • check_menage_restart(PATH(s), cards STOREDIR, LengthMax(Model,Compname), Force, logs)
    • tar_restart()
    • tar par unité d'intégration, periodLength (1M, 1Y, ...), toute les composantes ensembles
    • On isole aussi tout restart nécessaire au comblement d'un trou
      • /RESTART_REDO/
    • tar.(gz) ce qui n'aurait pas été nettoyé
      • /RESTART/v3.historical3_18561231.tar
        ATM_v3.historical3_18561231_restart.nc
        ATM_v3.historical3_18561231_restartphy.nc
        CPL_v3.historical3_18561231_flxat.nc
        ...
    • tar.(gz) ce qui aurait été nettoyé
      • /RESTART_A_DETRUIRE/v3.historical3_18561130.tar

Dans le cadre du déménagement CCRT/TGCC analyse de la commande ccc_archive/ipsl_pack

Rappel sur la commande ccc_archive/ipsl_pack

ccc_archive -ipsl_pack -tar/missing_value fichier_param.txt

Options :

  • ipsl_pack : indique que les répertoires listés dans fichier_param.txt seront déplacés sur le storedir via ipsl_pack
  • tar ou -missing_value : option nécessaire au pack

Argument :

  • fichier_param.txt : contient la liste des simulations que l'on veut archiver avec l'option choisie. Cette liste peut contenir les path des simulations ou des répertoires maîtres (IPSLCM5A, LMDZOR, IPSLCM5A/PROD ....).

Analyse de l'argument d'entrée de ccc_archive/ipsl_pack : fichier_param.txt

Il faut à partir des paths fournis être capable de retrouver toutes les simulations qui sont en dessous.
Le script utilisé est /home/cont003/p86cozic/SCRIPTS_DEM/find_directory_simul.job (ksh), il attend deux arguments d'entrée :

  • $1 = path du répertoire contenant fichier_param.txt
  • $2 = nom de fichier_param.txt

Au final il crée un fichier liste_simul_$2 contenant la liste des simulations

Le script trouve les simulations en recherchant les répertoires Restart à l'aide de la commande find. A partir de là il est facile de reconstituer le path de chaque simulation.

Dans le cadre du déménagement CCRT/TGCC : reconstitution du config.card de chaque simulation

A partir du path d'une simulation TOTO le script crée un fichier config_cardTOTO contenant les champs suivants :

  • JobName
  • TagName
  • SpaceName (actuellement PROD/TEST/DEVT)
  • ExperimentName
  • DateBegin
  • DateEnd
  • PATH_SIMUL

Le script utilisé est /home/cont003/p86cozic/SCRIPTS_DEM/create_config_card.job (ksh), il attend un seul argument d'entrée :

  • $1 = fichier contenant une liste de path de simulation. Le fichier de sortie du script find_directory_simul.job convient.

Fonctionnement :

  • Les dates de début et de fin de la simulation sont calculées à partir des dates contenues dans les noms des fichiers de restart. On considère donc qu'il y a forcément le premier et le dernier fichier de restart.
  • Pour trouver le TagName on fait une recherche sur IGCM_OUT (donc ne fonctionne pas si il n'est pas présent dans le path) et on prend le champ suivant.
  • Pour trouver le JobName on remonte deux crans au dessus des répertoires Restart
  • Pour le SpaceName et le ExperimentName on prend le champ suivant le TagName, si il est différent du JobName et égal à PROD/TEST/DEVT c'est un SpaceName sinon un ExperimentName. Et si il y a un SpaceName et que le champ suivant est différent du JobName alors c'est un ExperimentName
  • Pour le calcul des dates DateBegin et DateEnd on utilise un algorithme simple : si date < DateBegin alors DateBegin = date, si date > DateEnd alors DateEnd = date. Pour cela on passe en revue tous les fichiers de restart. Une optimisation pourrait être fait en ne regardant les fichiers de restart que d'une seule composante, si et seulement si on s'assure que cette composante a bien des restarts (Par exemple CHEM/Restart/ est vide dans la plupart des config de chimie) et si on est certain que toutes les composantes si elles ont des restarts les écrivent bien à la même fréquence (donc que celui de début et de fin sont bien aux mêmes dates).

Archivage des fichiers de restart

Le script utilisé est /home/cont003/p86cozic/SCRIPTS_DEM/archive_restart_V2.job (ksh), il attend deux arguments d'entrée :

  • $1 = path d'un config.card créé par create_config_card.job
  • $2 = fréquence du pack en année ou en mois.

Le script commence par copier en renommant sur le SCRATCHDIR/ARCHIVE_RESTART_$JobName les fichiers contenus dans les sous répertoires Restart. La copie conserve bien la date de création du fichier.
Note : Actuellement un "cp --preserve" est fait. C'est principalement pour les tests. Lors du déménagement un "mv" pourra le remplacer ainsi que lors de la production dans la nouvelle chaîne.
Ensuite en fonction de la fréquence de pack on créé des listes des fichiers de restart en fonction de la date contenue dans leur nom ($!JobName_$date_$RestartName.nc : premier champ après $JobName). Il y a une liste par période de pack. Ces listes sont ensuite passées en argument d'une commande "tar --Files-from" dans le répertoire $SCRATCHDIR/ARCHIVE_RESTART_$JobName. Les fichiers archivés sont effacés au fur et à mesure du répertoire

Attention : Actuellement j'ai considéré que l'on n'archive pas de simulation dont la période d'écriture du restart est inférieure au mois. C'est à modifier pour tenir compte de tous les cas possibles. --> tests à faire avec archive_restart_V3.job

A discuter et à faire

  • Pour l'instant je n'ai pas implémenté le ménage implicite. --> est-ce que l'on garde cette action et dans ce cas quel ménage fait-on sur les restart ?
  • Pour l'instant je n'ai pas différencié les restart pour compléter les périodes de trous des autres. --> Est-ce vraiment nécessaire ? Du moment que la chaîne sait extraire les bons restart d'une archive ce n'est pas la peine de les séparer (sauf si on garde le ménage implicite)