IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

[ SWAP ] Peut-on en faire ce que nous voulons ?


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 7
    Points
    7
    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.


  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    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....

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    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.

  4. #4
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    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.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    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.

  6. #6
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    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

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    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,

Discussions similaires

  1. [Toutes versions] Que ne peut on pas faire avec Excel ?
    Par comme de bien entendu dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 22/04/2019, 23h29
  2. Réponses: 6
    Dernier message: 04/08/2014, 23h31
  3. Comment puis je faire pour que'une page soir rechargees....
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/12/2005, 10h46
  4. [UML] Que peut-on vraiment faire avec ces logiciels ?
    Par pugnator dans le forum Outils
    Réponses: 6
    Dernier message: 07/12/2005, 11h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo