|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 5 ![]() |
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 |
|
|
00
|
|
|
#2 |
![]() ![]() Nicolas ValléeIngénieur Système Inscription : décembre 2005 Messages : 9 774 ![]() |
n'y aurait-il pas une taille maximale de mémoire allouée par processus ?
32 bits => 4 Go |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 5 ![]() |
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... |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Inscription : février 2003 Messages : 236 ![]() |
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... |
|
|
00
|
|
|
#5 | |
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 5 ![]() |
Citation:
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 ! |
|
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : février 2003 Messages : 236 ![]() |
A part modifier les sources du noyau
Toute plaisanterie mise à part, ne peux tu pas optimiser ton programme en libérant un maximum de mémoire au fur et à mesure? |
|
|
00
|
|
|
#7 | |
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 5 ![]() |
Citation:
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 Merci en tous cas. |
|
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() Inscription : octobre 2005 Messages : 344 ![]() |
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é. |
|
|
00
|
|
|
#9 |
![]() ![]() Michaël TodorovicIngénieur systèmes et réseaux Inscription : juillet 2003 Messages : 3 493 ![]() |
ça ne serait pas quelque chose comme ça que tu cherches ?
__________________
- Installation et configuration de Exchange 2010 new! - Installation d'Office Communications Server (OCS) 2007 R2 Standard - Présentation de Microsoft Online Services - Installation d'Active Directory sous Windows Server 2008 R2 - Mon blog sur Windows Server, Exchange, OCS et AD | Mes articles |
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 5 ![]() |
Citation:
Citation:
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com