Bonjour, ou bonsoir (selon l'heure de votre lecture) à tous et toutes.
Voila, j'effectue un stage en recherche au CHU d'Angers en médecine nucléaire.
Nous sommes dans le besoin de simuler la réponse impulsionnelle d'une machine de TEP (Tomography à Emission de Positrons) et c'est là que les choses se compliquent.
La génération d'une matrice de réponse impulsionnelle (nous l’appellerons RI) est extrêmement gourmande, pour une image 10*10 la matrice comporte déjà "x" colonnes (autant que de pixels) pour des milliers de lignes (qui dépendent des paramètres de la machine : rayon de giration, profondeur des collimateurs etc etc).
Je vous laisse imaginer le délire complet qu'atteint ceci pour une matrice 64*64. Et bien non je ne vous laisserez guère le temps de vous projeter dans une belle et onirique interprétation car cela plante !. La mémoire est entièrement grignotée et nous récupérons une jolie erreur.
Actuellement, notre pc est équipé de 3 go de RAM et tourne sous Fedora 15.
Alors voici ma question !
Peut-on gérer manuellement la SWAP afin de délocaliser une partie de la mémoire qu'utilise le processus de génération de la RI ? Je m'explique plus en détail : j'ai cru comprendre en parcourant le web que la SWAP engrange les processus qui sont dégagés par la RAM faute de mémoire vive disponible.
Notre cas est un peu différent car il semblerait que tout le processus mange à lui seul la mémoire. Pourrait-on décider de swapper le processus dès son exécution (nous ne sommes pas regardant sur la durée d'exécution pour le moment, mais sur la faisabilité) ? Ou une partie de ce processus ?(mais j'avoue trouvée l'idée infaisable, comment spliter un processus en 2)
J'avais également trouvé un petit tuto pour décider du seuil d'utilisation de la RAM à partir duquel le système doit swapper, je l'avais abaissé à 20% mais il ne semble pas vouloir swapper pour autant ! A l'heure où je vous parle le système est en train de générer une RI en consommant (ça n'est pas fini) 40% de la RAM et la SWAP est à 0.0% d'utilisation.
J'avoue être plongé entre la perplexité et la confusion quand à cela.
Alors pour résumer notre problème : quelles sont les alternatives qui nous sont offertes :
1 - Acheter de la RAM
2 - Utiliser la SWAP d'une façon que j'ignore mais que vous connaissez surement !
3 - Toute autre solution non citée précédemment.
Je vous remercie grandement d'avoir pris la peine de me lire jusqu'au bout et je reste en stand-by afin de lire vos réactions et éventuellement vos questions.
EDIT : je me permet de vous poster le résultat de la dernière tentative :
"Memory error"
Nous codons sous python 2.7, je sais que python à la fâcheuse aptitude de gérer la mémoire de façon autonome sans laisser l'utilisateur y laisser mettre son nez (à l'inverse de C qui permet à l'utilisateur de gérer manuellement la mémoire).
Mais voici le graphique de l'utilisation de notre mémoire, une chose étonnante est que nous plafonnons à 75% d'utilisation de la RAM (pour une utilisation SWAP anecdotique). Comment diantre une erreur de mémoire peut-elle survenir alors que 25% semblent être encore disponibles ?
Le crash mémoire apparaît au moment de la chute brutale 5s avant la prise de vue.
Partager