Version 7 (modified by 13 years ago) (diff) | ,
---|
Signal_Checkpoint - Module Fortran 90 de gestion des signaux à usage du calcul
Signal_Checkpoint
est un module en Fortran 90 permettant une gestion basique des signaux POSIX (UNIX).
L'utilisation est très orienté calcul.
L'idée est que le scheduleur de job envoi avant la fin du walltime un signal au job (checkpoint),
le job finit alors proprement.
S'il a été lancé avec l'option idempotent (par exemple sous OAR oarsub -t idempotent
),
le scheduleur le relance alors automatiquement...
Module
Le module Signal_Checkpoint
gère pour le moment les signaux SIGHUP
SIGINT
SIGQUIT
SIGUSR1
SIGUSR2
et SIGTERM
(voir kill -l
pour une liste des signaux de votre système).
A noter qu'OAR utilise par défaut le signal SIGUSR2
lors du checkpointing.
Il a été testé et validé avec les compilateurs GNU/gfortran
et Intel/ifort
.
Il fait un appel POSIX à la commande signal
qui n'est pas normalisé en Fortran,
en ce sens, ce n'est pas du pur Fortran...
Cependant, coté utilisateur, l'API est très simple et indépendante du compilateur.
Le programme peux s'abonner à plusieurs signaux
bien qu'il n'y ai qu'un seul compteur (celui-ci est donc multiplexé).
Cela permet d'avoir un programme s'arrêtant proprement via deux signaux : SIGUSR1
et SIGUSR2
par exemple.
Le premier signal (SIGUSR1
) arrête le programme via une volonté de l'utilisateur,
alors que le second (SIGUSR2
) est lancé via le scheduleur...
Le projet est très jeune. Il n'y a pas de bibliothèque de compilé pour le moment. Pour l'intégrer dans votre projet, le plus simple pour le moment est de l'intégrer dans vos sources
wget http://servforge.legi.grenoble-inp.fr/svn/soft-trokata/trunk/signal-checkpoint/signal_checkpoint.F90
Test
Un programme de test et d'exemple test_sgck1 est fournit. Pour le récupérer et le tester
mkdir test_sgck1 cd test_sgck1 wget http://servforge.legi.grenoble-inp.fr/svn/soft-trokata/trunk/signal-checkpoint/test_sgck1.f90 wget http://servforge.legi.grenoble-inp.fr/svn/soft-trokata/trunk/signal-checkpoint/signal_checkpoint.F90
- compilation avec
GNU/gfortran
rm test_sgck1 signal_checkpoint.mod signal_checkpoint.o gfortran -c signal_checkpoint.F90 gfortran -o test_sgck1 test_sgck1.f90 signal_checkpoint.o
- compilation avec
Intel/ifort
rm test_sgck1 signal_checkpoint.mod signal_checkpoint.o ifort -c signal_checkpoint.F90 ifort -o test_sgck1 test_sgck1.f90 signal_checkpoint.o
Pour tester le programme, il faut deux terminaux
- Terminal 1 - celui ou la commande tourne réellement
./test_sgck1
- Terminal 2 - jour le rôle du scheduleur
ps fux | grep ./test_sgck1 | grep -v grep | awk '{print $2}' | xargs kill -USR2
Le script bash
suivant lance automatiquement le programme
et lui envoi ensuite le signal USR2
pour l'arrêter.
Il est programmé à la manière d'un job pour un scheduleur,
c'est à dire il s'envoie le signal à lui même et utilise un trap en interne.
wget http://servforge.legi.grenoble-inp.fr/svn/soft-trokata/trunk/signal-checkpoint/test_sgck1.sh
Repository
L'ensemble du code est sous licence libre.
les modules sources Fortran90
sont sous LGPL version 2 ou plus récente
(sans restriction d'édition de lien avec la GPL v3 par exemple),
les programmes de tests en Fortran90
sont dans le domaine public.
Tous les sources sont disponibles sur la forge du LEGI : http://servforge.legi.grenoble-inp.fr/svn/soft-trokata/trunk/signal-checkpoint
Les sources sont gérés via subversion (http://subversion.tigris.org/). Il est très facile de rester synchronisé par rapport à ces sources.
- la récupération initiale
svn checkout http://servforge.legi.grenoble-inp.fr/svn/soft-trokata/trunk/signal-checkpoint signal-checkpoint
- les mises à jour par la suite
svn update
Il est possible d'avoir un accès en écriture à la forge sur demande motivée à Gabriel Moreau. Pour des questions de temps d'administration et de sécurité, la forge n'est pas accessible en écriture sans autorisation.