Version 3 (modified by acosce, 13 years ago) (diff) |
---|
Scripts créés pour l'ipsl_pack - Archivage des fichiers Output
Idée de base :
Nous allons regrouper les fichiers stockés dans les répertoires Output à l'aide de la commande ncrcat.
Problématique :
1- connaître la taille du pack
2- créer les listes des fichiers à packer
Déterminer la taille d'un "pack"
Pour cette première approche j'utilise le fichier information_dmnfs_2011-09-21 créé par le ccrt et indiquant pour chaque fichier (présent sur le dmnfs au 21 septembre 2011) sa taille. Il faudra réfléchir ensuite pour savoir si on demande au ccrt de refaire cette capture du dmnfs au moment de la copie sur l'espace tampon, où si on développe une version du code travaillant sur l'architecture directement.
Déroulement du script :
- lecture dans config_card (créé par le script create_config_card_2) de
- JobName
- PATH_SIMUL
- DateBegin
- DateEnd
- à partir du fichier information_dmnfs on cherche la liste des paths des fichiers stockés dans les répertoires Output de cette simulation >> création d'un fichier $SCRATCHDIR/tmp_$JobName/info_Output.txt
- à partir de info_Output.txt on retrouve tous types de fichiers de sorties (1D_histday.nc, 1M_histmth.nc etc...) Cette liste est stockées dans $SCRATCHDIR/tmp_$JobName/info_name_file.txt
- pour chaque type de fichier (dans info_name_file.txt) on crée la liste des paths de ces fichiers là et on la classe par ordre alphabétique. 1ère colonne : taille du fichier, 2ième colonne : path du fichier.
- On suppose une fréquence de pack de 20 ans et une taille de pack comprise entre 20 et 70 Go. A partir de la fréquence de pack on calcul les dates des différents pack et pour chaque type de fichiers on stocke la liste et la taille des fichiers qui serait compris dans chaque pack.
- A ce stade là on a pour chaque type de fichier et pour chaque période de pack la taille qu'aurait ce pack. Soit la taille du pack est bien comprise entre 20 et 70Go et on conserve une fréquence de 20 ans, soit elle est plus petite ou plus grande et à l'aide d'une règle de 3 on calcule la fréquence idéale.
- La nouvelle fréquence de pack sera la plus petite de toutes celles calculées pour tous les types de fichiers et toutes les périodes.
Remarques / Questions
- on cherche la fréquence idéale pour les packs en testant 10 périodes. On passe ainsi en revue 100 ans de simulations (20x10). Est-ce suffisant ?
- on laisse de côté mesh_mask qui est un cas particulier. Ne pas oublier de le traiter ultérieurement.
- si il n'y a qu'une seule période pack de traitée (donc pour les simulations < 20 ans) on calcule d'abord combien d'années comprend cette période avant de regarder si la taille convient et d'éventuellement calculer une fréquence idéale.
- Faut-il continuer à travailler avec information_dmnfs ?
Création des listes de fichiers à packer
Maintenant que l'on connaît la fréquence idéale pour un pack on peut créer les listes de fichiers par type d'output pour passer en argument à ncrcat.
- Les listes sont créées en reprenant la boucle principale du script permettant de calculer la fréquence du pack.
- Par défaut toutes les listes sont nommées ncrcat_${type_file}_${date_debut_pack}_${date_fin_pack}.list.
- On recherche les trous potentiels dans la simulation
- on liste les années comprises entre DateBegin? et DateEnd? >> liste_date.txt
- on vérifie la simulation pour savoir si les sorties sont annuelles ou mensuelles.
- si elles sont mensuelles on complète la liste des dates avec pour chaque années tous les mois (1900 devient 190001, 190002, ...., 190011, 190012)
- si elles sont annuelles on complète la liste des dates avec uniquement les mois de janvier (1900, 1901, deviennent 190001, 190101 etc...)
- pour chaque fichier de chaque type de fichier Output on extrait la date de début de sa période à laquelle on retranche son jour (histday_19000101_19000131.nc donne 190001, histday_19000101_19001231.nc donne 190001)
- on compare nos deux listes pour connaître les mois / années manquante. Et pour chacune on transforme le fichier ncrcat_.list contentant cette date en fichier tar_.list.