Forum Linux.général Gestion Mémoire

Posté par  .
Étiquettes : aucune
0
18
nov.
2009
Bonjour,

j'ai un problème à vous soumettre. J'ai plusieurs calculs assez lourds (2-3 heures chacun) à faire tourner sur une station de travail Linux. Mes calculs ne sont pas parallélisés, j'en lance donc 7 en même temps sur 7 des 8 coeurs de la machines. Chacun occupe la mémoire dont il a besoin pour fonctionner, donc disons qu'en gros 6 tournent en RAM et le 7eme a une part en RAM et une part en SWAP. Quand un des 6 se termine, j'aimerai que le job 7 se bascule automatiquement en RAM. D'après mes observations Linux continue d'allouer en SWAP la mémoire dont le 7 a besoin.

Le seul moyen que j'ai trouvé pour rebasculer tous les jobs en RAM (si la taille est suffisante) est de jouer avec swapoff, mais je trouve pas ca très propre.

Connaissez vous un moyen de faire cela ?
  • # Gestionnaire de grille

    Posté par  . Évalué à 3.

    Je pense qu'un gestionnaire de grille pourrait répondre à ton besoin , même si tu n'as qu'un PC. Tu peux spécifier le nombre maximum de travaux en // . Les autres sont mis en attente jusqu'à la libération d'un coeur. Je crois qu'on peux aussi spécifier la RAM qui doit être dispo pour lancer un job

    Regarde du coté du Sun Grid Engine
    Par contre, l'installation est peut être un peut compliquée pour ton besoin
  • # Priorité de mémoire virtuelle

    Posté par  . Évalué à 3.

    D'après mes observations Linux continue d'allouer en SWAP la mémoire dont le 7 a besoin.
    C'est étrange en effet. Par quel moyen constates-tu cela ?
    Un simple ps avec les bonnes options donne toutes les informations à ce propos.
    • [^] # Re: Priorité de mémoire virtuelle

      Posté par  . Évalué à 4.

      je trouve cela etrange aussi...
      par contre une fois que linux a ete obligé de swapper une partie de ton job 7, il est clair qu'il ne va pas le ramener en RAM quand la ram se libère si il n'y a pas de fautes de pages.

      j'explique:
      quand la ram se libère, pour "deswapper" les morceaux de ton job 7, il faut lire les pages de ce job qui sont swappées sur disque pour les remonter en RAM. Cette opération est relativement couteuse (I/O, cpu, ...) et du coup linux ne le fera que si il a BESOIN des pages qui sont dans le swap. Si dans la pratique il peut continuer son calcul sans acceder a ces données, alors elles sont aussi bien dans le swap qu'en ram et cela ne devrait pas te gêner.
  • # swapiness

    Posté par  (site web personnel) . Évalué à 1.

    Il y a un paramètre qui permet de régler la propension du noyau à mettre les choses en swap, qui se nomme la "swapiness". Ca peut peut-être t'aider? Un coup de google de montrera comment le changer.

    Sinon, es-tu sûr que tu ne gagnerais pas à lancer un process de moins et à tout faire tourner en RAM? De mon expérience, le fait de faire des Entrées Sorties disque intensives a tendance à plomber tout le système.
  • # lancement séquentiel ?

    Posté par  (site web personnel) . Évalué à 2.

    Tu ne peux pas faire un lancement en séquence (6+1) dans un script ?

    De mémoire avec $(...) et & ?

    http://pebblesinthesand.wordpress.com/2008/05/22/a-srcipt-fo(...)

    "La première sécurité est la liberté"

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.