checkpoint-dmtcp1.oar 3.1 KB

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