1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #!/bin/bash
- #------------------- CHECKPOINT DMTCP ex1 ---------------------------
- #
- # Ce programme met en œuvre le checkpoint via dmtcp de la façon la
- # plus simple qui soit en utilisant l'option [ -i secondes ] de
- # dmtcp. les échanges de signaux entre ce script OAR et le programme
- # sont complètement ignorés, de sorte que l'option «idempotent» d'OAR
- # est inutile: il n'y a pas de redémarrage automatique. L'utilisateur
- # doit relancer lui-même relancer ce script. Il peut toutefois être
- # utile:
- # - ex1: programme de 200 h, un checkpoint toutes les 24h (au cas où...?)
- # - ex2: limiter les ressources demandées en prenant le risque d'un
- # walltime « trop court »: il suffira de relancer à partir d'un
- # checkpoint.
- # commande: oarsub -S ./checkpoint-dmtcp1.oar
- # infos: http://dmtcp.sourceforge.net/
- # PRINCIPE:
- #
- # - le programme est lancé via dmtcp_launch -i x ./PROG, où "x" (secondes)
- # inférieur au walltime prévu dans l'es paramètre OAR.
- # - deux cas se présentent:
- # 1) le programme finit dans les temps, très bien.
- # 2) le programme ne finit pas avant le walltime: il suffit de relancer
- # ce même script qui repartira à partir du checkpoint
- # - c'est le cas 2) qui est mis en œuvre ici: timer 4mn /walltime 3mn
- #-------------- paramètres OAR---------------------------
- # walltime de 3mn ( donc trop court pour le prog/timer de 4mn)
- #OAR -l cpu=1/core=1,walltime=00:3:00
- #OAR -n dmtcp_ex1
- # Les fichiers de sortie sans paramètres $OAR_JOBID
- # (=> les jobs successifs écrivent dans les mêmes fichiers)
- #OAR -O OAR-ckpt-dmtcp1.out
- #OAR -E OAR-ckpt-dmtcp1.err
- #OAR -q default
- # les tests sont mis au point sur orval08.
- # Note: une reprise de checkpoint sur une autre machine nécessite
- # l'édition du script dmtcp_restart_script.sh
- #OAR -p network_address = 'orval08'
- # optionnel
- #OAR -t besteffort
- # chargement du modeul dmtcp
- source /nfs/opt/env/env.sh
- module load dmtcp
- #---------- la tâche à exécuter ------------------------
- # compilation ( )
- gcc simpleCompteur4mn.c -o stimer4mn
- #----------- pré-traitement -----------------------------
- # DWTFYW !
-
- echo "Debut du jobs ou restart ?"
- # si c'est une reprise
- if [ -f dmtcp_restart_script.sh ]; then
- echo " -> reprise du job "
- # piste (changement de nœuds): sed -i '/ancien_noeud/nouveau_noeud/' dmtcp_restart_script.sh
- # (-> testé -OK- a la mano, à scripter!)
- ./dmtcp_restart_script.sh
- else
- # 1er démarrage avec ordre de checkpoint toutes les 2mn 50 (walltime 3mn)
- # Rq: sur un vrai exemple, prendre plus de marge!
- echo " -> Debut du jobs"
- dmtcp_launch -i 170 ./stimer4mn # pas d'éperluette! (&) sinon le script OAR
- # continue et les checkpoint supprimés cf plus bas
- fi
- #---------------------------------------------------------
- # fin du programme: postraitement
- #---------------------------------------------------------
- # DWTFYW!
- echo "---post treatement---"
- # suppression des ckpt (ménage)
- echo "fin effective du programme, suppression des checkpoints"
- rm ckpt_*.dmtcp dmtcp_restart_script*
- exit $?
|