Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
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 06/07/2006, 14h35   #1
Invité de passage
 
Inscription : juillet 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 5
Points : 0
Points : 0
Par défaut Forcer utilisation du swap

Bonjour à tous,

J'espère que vous pourrez m'aider, je viens de passer tout mon temps depuis le début de cette journée à essayer de trouver une solution sur le net, mais rien, alors je fais appel à vos compétences.

J'ai un programme qui doit charger une grosse quantité de données en mémoire (je ne connais pas la taille exacte).
Avant toute chose, une petite description du contexte : je suis sur un serveur avec 2 Go de RAM, 4 disques montés en RAID 5, plus un disque système. La partition de swap est sur l'unité RAID et fait un peu plus de 9Go (ce n'est pas moi qui ai installé ce serveur, et je pense que c'est un peu surdimensionné, mais bon... je fais avec). La version du noyau est 2.6.9, sous Mandrake.

Lorsque je lance mon programme, la mémoire vive est peu à peu remplie, puis à partir de 1,5Go, le swap est de plus en plus utilisé, normal. Lorsque la somme de mémoire demandée par mon programme atteint environ 2,5Go, l'allocation mémoire est refusée, la mémoire vive est utilisée à 80%, et le swap seulement à 10% !
D'où ma question : y a-t-il quelque chose à faire premièrement pour utiliser à fond la mémoire vive, et surtout, deuxièmement, pour utiliser l'énorme espace de swap encore disponible ??
Je n'ai pas besoin de performances dans ce cas, ce qui m'intéresse, c'est que mon programme passe, peu importe que cela prenne des jours...
J'espère vraiment que vous pourrez m'aider...
Merci en tous cas à ceux qui m'auront lu entièrement
pmacaro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2006, 14h51   #2
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
n'y aurait-il pas une taille maximale de mémoire allouée par processus ?

32 bits => 4 Go
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2006, 15h00   #3
Invité de passage
 
Inscription : juillet 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 5
Points : 0
Points : 0
Peut-être (je dirais même surement, ça me dis quelque chose), mais là, je ne dépasse pas les 2,5Go...
Et j'ai oublié de préciser que l'allocation qui plante ne demande "que" 400Mo, il reste donc de quoi faire...
pmacaro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 08h12   #4
Membre confirmé
 
Avatar de joellel
 
Inscription : février 2003
Messages : 236
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : février 2003
Messages : 236
Points : 283
Points : 283
Attention! La taille maximale d'un processus (code + données + pile + environnement) sous Linux est de 3Go, tu n'en es pas si loin...
Vérifies bien que tu ne les atteins pas...
joellel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 08h54   #5
Invité de passage
 
Inscription : juillet 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 5
Points : 0
Points : 0
Citation:
Envoyé par joellel
Attention! La taille maximale d'un processus (code + données + pile + environnement) sous Linux est de 3Go, tu n'en es pas si loin...
Vérifies bien que tu ne les atteins pas...
Merci !! Effectivement, dans le doute, hier, j'ai fait un petit programme de test qui allouait une certaine quantité de données, et je me suis rendu compte que la limite était aux alentours de 3Go... 2,5Go+ les 400Mo demandés et quelques Mo pour le reste, on est bien dans la limite Ce qui confirme mes observations...
Merci quand même pour la réponse, parce que n'ayant pas trouvé cette information sur le net, j'étais persuadé que cette limitation était dûe à une mauvaise configuration de mon système. Maintenant au moins, je sais que c'est "normal".
Mais alors, je me pose une question évidente : y a-t-il un moyen d'augmenter cette limite ? Je ne parle pas de moyens détournés, comme utiliser des fichiers pour stockage temporaire, ou même aller jusqu'à la création de plusieurs processus, j'aimerais simplement savoir si c'est possible, et bien sûr, si oui, comment ?
Merci d'avance !
pmacaro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 09h01   #6
Membre confirmé
 
Avatar de joellel
 
Inscription : février 2003
Messages : 236
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : février 2003
Messages : 236
Points : 283
Points : 283
A part modifier les sources du noyau je ne vois pas...
Toute plaisanterie mise à part, ne peux tu pas optimiser ton programme en libérant un maximum de mémoire au fur et à mesure?
joellel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 11h22   #7
Invité de passage
 
Inscription : juillet 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 5
Points : 0
Points : 0
Citation:
Envoyé par joellel
A part modifier les sources du noyau je ne vois pas...
Toute plaisanterie mise à part, ne peux tu pas optimiser ton programme en libérant un maximum de mémoire au fur et à mesure?
Malheureusement, ce n'est pas moi qui ait écrit ce programme, et il est plutôt énorme, l'optimisation couterait trop de temps.
Les données chargées en mémoire doivent l'être en même temps, je vais donc très probablement utiliser la solution d'un fichier temporaire, pour augmenter à ma manière la taille du swap Ca va plomber les performances, mais encore une fois, ce n'est pas important, il faut simplement que ça passe !
Merci en tous cas.
pmacaro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 11h33   #8
Membre confirmé
 
Inscription : octobre 2005
Messages : 344
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 344
Points : 270
Points : 270
J'avais eu un problème de ce genre. Je l'avais résolu de manière très peu conventionnelle et assez bourrin... Je me suis amusé avec trois fenêtre:
- une pour lancer mon programme
- une pour suivre le TOP
- une troisième pour re-nicer le process BDFLUSH qui sert à flusher du buffer cache les entrées "dirty".
Je sais, ça fait assez "bucheron", mais ça a marché.
usf70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 11h36   #9
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
ça ne serait pas quelque chose comme ça que tu cherches ?
Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 11h46   #10
Invité de passage
 
Inscription : juillet 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 5
Points : 0
Points : 0
Citation:
Envoyé par usf70
J'avais eu un problème de ce genre. Je l'avais résolu de manière très peu conventionnelle et assez bourrin... Je me suis amusé avec trois fenêtre:
- une pour lancer mon programme
- une pour suivre le TOP
- une troisième pour re-nicer le process BDFLUSH qui sert à flusher du buffer cache les entrées "dirty".
Je sais, ça fait assez "bucheron", mais ça a marché.
Il fallait déjà y penser ! Mais après tout, si ça peut m'éviter de longues heures de modifications, pourquoi pas essayer

Citation:
Envoyé par Michaël
ça ne serait pas quelque chose comme ça que tu cherches ?
En fait, j'aurais du le préciser avant, je n'ai pas de limites fixées par moi concernant les différents paramètres liés aux processus, elles sont déjà toutes à "unlimited"... C'est pour ça que je cherchais à connaître une éventuelle limite fixée par Linux, qui est donc de 3Go par processus...
pmacaro 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 21h35.


 
 
 
 
Partenaires

Hébergement Web