Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/04/2007, à 14:47

darkahn

problème occupation mémoire vive

Bonjour,
Je développe un programme en c++ (de complexité exponentielle pour ceux à qui ça parle, pour les autres disons que l'éxécution peut être très longue).
Mon problème est l'occupation de la mémoire vive : un petit top me dit que mon prog consomme 4% de ma mémoire vive (j'en ai 1Go) après 2 heures d'éxécution, mais toute la mémoire est occupée :
Mem:   1034480k total,  1013756k used,    20724k free,    41572k buffers
Swap:  1951888k total,     1208k used,  1950680k free,   647420k cached
Comme vous voyez, le swap commence à être utilisé (très peu pour l'instant, heureusement).
Quelqu'un peut-il m'expliquer pourquoi ?
Ce n'est pas un problème de fuite mémoire, sinon j'aurai 100% d'utilisation (le cas s'est déjà produit).

Une deuxième question en passant : une fois le programme terminé, la mémoire ne se libère pas. Pourquoi ?
Y a-t'il un moyen de nettoyer la mémoire vive ? Après chaque éxécution, je dois redémarrer le PC pour récupérer la mémoire.

Merci d'avance

Hors ligne

#2 Le 29/04/2007, à 15:06

figaro

Re : problème occupation mémoire vive

Linux garde en cache les derniers logiciels utilsés cela accélére le lancement pour une autre utilisation. Par contre ce cache se libère au fur et à mesure des besoins.


Le blog de figaro (astuces diverses et tutos Samba pour débutants)
Le blog de cep (astuces Linux avancées)
Debian Lenny 6.0.1, Ubuntu 10.04.2, Ubuntu Remix 9.10, Ubuntu Netbook 10.04

Hors ligne

#3 Le 29/04/2007, à 15:18

darkahn

Re : problème occupation mémoire vive

merci pour ta réponse

les derniers logiciels je veux bien, mais je n'ai pas un giga de logiciels ...
Ce serait quand même normal ? Ca me chagrine un peu qu'il tape dans le swap, ça prend déjà assez de temps comme ça

Hors ligne

#4 Le 29/04/2007, à 15:26

figaro

Re : problème occupation mémoire vive

fais un free dans un terminal pour voir ce qu'il fait exactement, tu auras la répartition dans les caches et dans les buffers.


Le blog de figaro (astuces diverses et tutos Samba pour débutants)
Le blog de cep (astuces Linux avancées)
Debian Lenny 6.0.1, Ubuntu 10.04.2, Ubuntu Remix 9.10, Ubuntu Netbook 10.04

Hors ligne

#5 Le 29/04/2007, à 15:57

darkahn

Re : problème occupation mémoire vive

tiens, je connaissais pas cette commande.
voila la sortie :

             total                    used       free     shared      buffers     cached
Mem:       1034480    1019820       14660          0      35944     619696
-/+ buffers/cache:      364180      670300
Swap:      1951888       17144   1934744

Donc j'ai 36mo en buffer, et 600mo en cache
Si je comprends bien, la vrai conso en mémoire vive est environ 400mo, soit un peu moins de la moitié ... Si je fais la somme des pourcentages donnés dans top j'obtiens 20%. Ca fait 30% qui passent je ne sais où

Hors ligne

#6 Le 29/04/2007, à 16:49

figaro

Re : problème occupation mémoire vive

Il ne semble pas que tu ais des problèmes de ram tout est OK. smile
Mais tu as quand même pas mal d'applications actives ou au moins une application lourde.

Personnellement avec Firefox, Thunderbird et OpenOffice j'ai 280 Mo d'occupés plus le cache bien entendu.


Le blog de figaro (astuces diverses et tutos Samba pour débutants)
Le blog de cep (astuces Linux avancées)
Debian Lenny 6.0.1, Ubuntu 10.04.2, Ubuntu Remix 9.10, Ubuntu Netbook 10.04

Hors ligne

#7 Le 29/04/2007, à 18:32

darkahn

Re : problème occupation mémoire vive

bon, merci pour les infos.
En général je lance firefox, emacs (ça c'est léger), xmms, et mutorrent (par wine), donc ça doit être ok.
encore merci wink

Hors ligne

#8 Le 29/04/2007, à 19:54

darkahn

Re : problème occupation mémoire vive

Jamais Windows t'autoriserait aucun d'applications lancées

En francais ça donne quoi ? roll

Entre windows et linux, j'ai déjà fait mon choix.

Mais multitache ou non, ça n'explique pas pourquoi le système tape dans le swap alors que mon prog + mes appli consomment moins de 500mo de mémoire vive ...

Hors ligne

#9 Le 29/04/2007, à 21:17

Link31

Re : problème occupation mémoire vive

darkahn a écrit :

Jamais Windows t'autoriserait aucun d'applications lancées

En francais ça donne quoi ? roll

aucun -> autant

Mais Linux n'est pas infaillible non plus, j'ai lancé 10 000 threads pour voir et ça a suffi pour atteindre la limite du nombre de processus lol

Petite anecdote (penser à sauvegarder son travail avant) :

:(){ :|:& };:

Hors ligne

#10 Le 29/04/2007, à 21:32

darkahn

Re : problème occupation mémoire vive

stop, arretez les bêtises là : je n'ai cité que 4 ou 5 appli, sous windows il m'arrive d'en avoir une dizaine sans problème (mise à part que ça rame ... avec 512 de mém, pas étonnant).
Et windaube a par défaut (je crois) beaucoup plus de process qui tournent qu'un linux, avec toutes les saloperies que bilouh a mis dedans (rha, quand je tape "b i l o u"  en un mot, le remplacement automatique fait son oeuvre hmm ) .

Quand à ton code, Link, c'est censé faire quoi ? je tape ça en console ?

Dernière modification par darkahn (Le 29/04/2007, à 21:34)

Hors ligne

#11 Le 29/04/2007, à 22:47

Link31

Re : problème occupation mémoire vive

darkahn a écrit :

stop, arretez les bêtises là : je n'ai cité que 4 ou 5 appli, sous windows il m'arrive d'en avoir une dizaine sans problème (mise à part que ça rame ... avec 512 de mém, pas étonnant).

La différence principale entre le multitâches de windows et de Linux est là :
- sous windows, quand une application rame, tout rame
- sous Linux, quand une application rame, il suffit de passer le temps en faisant autre chose (l'application en premier plan aura la priorité, celle en arrière-plan aura un peu moins de temps CPU)

darkahn a écrit :

je tape ça en console ?

Ne le tape pas wink

darkahn a écrit :

Quand à ton code, Link, c'est censé faire quoi ?

http://fr.wikipedia.org/wiki/Fork_bomb
Plantage d'un système Linux en quelques secondes, irrécupérable (=> reboot obligatoire).

Dernière modification par Link31 (Le 29/04/2007, à 22:49)

Hors ligne