Précédent   Forum des professionnels en informatique > Systèmes > Linux
Linux Forum d'entraide sur le système Linux. Avant de poster -> Tutoriels Linux, F.A.Q Linux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/08/2011, 14h36   #1
Invité régulier
 
Homme Alexandre BREBANT
Étudiant
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Homme Alexandre BREBANT
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : août 2011
Messages : 4
Points : 5
Points : 5
Par défaut [ SWAP ] Peut-on en faire ce que nous voulons ?

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.

AlexCHU est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 31/08/2011, 17h02   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 538
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 538
Points : 7 754
Points : 7 754
le swap a plusieurs roles entre autre d'être un complément à la ram mais aussi un buffer etc...etc...etc....

ça s'auto gére la mémoire réservée se libère quand il y en a besoin pour un processus avant d'utiliser le swap et ainsi de suite...

par contre il arrive pour certaines configuration de devoir avoir plusieurs espaces de swap sur une même machine (1 par disque physique) pour utiliser plusieurs applications très consommatrices. (ou un disque dédié entièrement à ça, mais on trouve plus de petits disques ultra rapides de 4.7G)

C'est la première solution

quand à couper un processus en sous processus c'est du threading ça implique la ré-écriture complète du programme concerné.

-------------


ensuite le cas d'erreur ne veux pas dire "full memory" mais bien "memory error" donc un échec à l'écriture ou à la lecture ou même un timeout. ça n'a strictement rien à voir avec le VOLUME de mémoire. (fausse piste amha)

Par contre il est probable, que ce soit un problème de performance matérielle en terme de vitesse de lecture/écriture, ce qui peut être protégé par un snapshot de la mémoire de temps à autre par l'application et restauré... genre 2 ou 3 * par périodes ouvrées, et ça peut être réalisé par un programme externe, ce qui donc n'implique pas de recoder l'application.


Après ça peut aussi avoir d'autres causes mais je connais pas ton environnement donc....
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 09h44   #3
Invité régulier
 
Homme Alexandre BREBANT
Étudiant
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Homme Alexandre BREBANT
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : août 2011
Messages : 4
Points : 5
Points : 5
Bonjour,

Nul besoin de cacher que réécrire le programme pour utiliser des threads me botte ! Je suis un homme de défi mais il faut savoir ne pas tous les accépter.

En revanche, le memory error serait donc un soucis d'écriture/lecture plutôt qu'un soucis de volume. Cela pourrait-il venir du fait qu'au moment ou il plante il est dans une phase de "test".
Le script test des rangs de matrice (ce qui peut vite devenir conséquent avec de grosses matrices).
Concrètement pourquoi un tel crash apparaît ? Tailles de matrices trop importantes ? La vitesse de lecture/écriture influent sur les performances mais pourquoi pousseraient-elles au crash ?

Pourrais-tu, si tu le veux bien, m'en dire un peu plus sur le snapshot de mémoire ? Quelle est en détail son fonctionnement, son utilité, sa mise en oeuvre ?
J'ai trouvé ceci en parcourant le web : http://vpourchet.wordpress.com/2010/...les-snapshots/ qui semble expliquer ce dont tu parlais mais si je saisi bien cela revient à virtualiser l'environnement ?

Merci d'avance de cette réponse ô combien utile.
AlexCHU est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/09/2011, 10h09   #4
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 538
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 538
Points : 7 754
Points : 7 754
le snapshot mémoire ça prend une image et ça l'acquitte comme valide régulièrement et donc si un soft pert un acknowledgement d'écriture ou autre, le deamon remets le dernier état mémoire connu valide et renvoi tous les acknowledgements correspondant aux softs.

Après plus en détails j'en sais rien... mais ça permet pour certains programmes instables de ne pas planter. malgré les problèmes rencontrés.

==========

L'erreur d'écriture à mon avis est plus un problème d'acquittement que d'écriture (ou de lecture hein...) qu'une vrai erreur dans l"écriture en elle même. mais ça change rien au problème au final.
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 11h28   #5
Invité régulier
 
Homme Alexandre BREBANT
Étudiant
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Homme Alexandre BREBANT
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : août 2011
Messages : 4
Points : 5
Points : 5
N'existe-il pas une limite soft pour les processus ?

Avant d'atteindre la limite hard qui serait 100% de la mémoire, linux ne bloquerait-il pas les processus en les bridant de façon software à x% d'utilisation de la RAM (x : ratio max d'utilisation pour un processus)?
Ce qui pourrait expliquer pourquoi le programme "planterait" avec une utilisation trop importante de la mémoire par un seul processus.
AlexCHU est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 11h44   #6
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 538
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 538
Points : 7 754
Points : 7 754
Citation:
Envoyé par AlexCHU Voir le message
N'existe-il pas une limite soft pour les processus ?

Avant d'atteindre la limite hard qui serait 100% de la mémoire, linux ne bloquerait-il pas les processus en les bridant de façon software à x% d'utilisation de la RAM (x : ratio max d'utilisation pour un processus)?
Ce qui pourrait expliquer pourquoi le programme "planterait" avec une utilisation trop importante de la mémoire par un seul processus.
pas que je sache mais c'est une possibilité effetivement
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 09h27   #7
Invité régulier
 
Homme Alexandre BREBANT
Étudiant
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Homme Alexandre BREBANT
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : août 2011
Messages : 4
Points : 5
Points : 5
Si quelqu'un dans l'assistance a des éléments de réponse quant à la possibilité d'une bridage software des processus, qu'il n'hésite pas à se manifester.

Cordialement,
AlexCHU est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h41.


 
 
 
 
Partenaires

Hébergement Web