Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment Vider la RAM

33 réponses
Avatar
c-note
Bonjour a tous,

j'ai un programme (SGBD) qui tourne et utilise presque toutes la RAM
dispo sur mon serveur.

Mem: 3354852K av, 3236376K used, 118476K free, 0K shrd, 30408K buff

Lorsque ce programme termine son execution la RAM n'est pas vider.

J'ai un deuxiemme programme qui se lance et ne dispose pas d'assez de
RAM. Du coup, le systeme (kernel 2.4) tue certain service (snmpd, sshd)
au hasard pour liberer de la RAM.

Idealement, je souhaiterais vider la RAM apres l'execution du premier
programme.

Est-ce possible ?

Merci

10 réponses

1 2 3 4
Avatar
Thierry Boudet
On 2007-05-29, c-note wrote:

Non, c'est faux. Si la RAM est encore occupée, c'est que le programme est
encore là, au moins en partie.


Pas exactement. Un contre exemple : quitter un prog C sans faire un free
proportionnel au malloc !

Peut-etre que je me trompe ?


[OUI]

--
--{ http://tontonth.free.fr/ }--


Avatar
c-note
c-note wrote in message <f3hjdi$3v$:
Pas exactement. Un contre exemple : quitter un prog C sans faire un free
proportionnel au malloc !

Peut-etre que je me trompe ?


Tu te trompes. Quand un programme se termine, toutes les ressources qu'il
utilisait sont libérées, c'est le cas sous n'importe quel OS sérieux.

Il y a quelques exceptions :

- IPC BSD, parce que c'est une API à chier ;

- fichiers temporaires, parce qu'il n'y a pas de moyen d'indiquer dès le
départ leur durée de vie souhaitée ;

- ressources occupées auprès d'un programme tiers mal programmé.


ok merci. Je continue a chercher dans ce cas


Avatar
Mihamina (R12y) Rakotomandimby
c-note - <f3hj1a$319u$ :

Le SWAp n'est pas sollicité.
Mem: 3354852K av, 3234940K used, 119912K free, 0K shrd, 13924K buff
Swap: 2048276K av, 780K used, 2047496K free 3022920K cached


Alors je penche encore plus vers un problème matériel. Avant de se plaindre
et de tuer des process, il devrait utiliser la swap.

Avatar
Denis Beauregard
Le 29 May 2007 16:27:33 GMT, Nicolas George
<nicolas$ écrivait dans
fr.comp.os.linux.configuration:

c-note wrote in message <f3hjdi$3v$:
Pas exactement. Un contre exemple : quitter un prog C sans faire un free
proportionnel au malloc !

Peut-etre que je me trompe ?


Tu te trompes. Quand un programme se termine, toutes les ressources qu'il
utilisait sont libérées, c'est le cas sous n'importe quel OS sérieux.

Il y a quelques exceptions :

- IPC BSD, parce que c'est une API à chier ;

- fichiers temporaires, parce qu'il n'y a pas de moyen d'indiquer dès le
départ leur durée de vie souhaitée ;

- ressources occupées auprès d'un programme tiers mal programmé.


Pourtant, il me semble que la mémoire est gérée par 2 systèmes
différents. D'un côté, les appels au bios et de l'autre, ceux au
noyau Linux. Si une application a été mal portée dans Linux, il
se peut qu'il reste des appels au bios, quoique ce ne soit pas
très habituel sans doute.


Denis


Avatar
Pascal Hambourg
Salut,


C'est reproductible (ou presque) en faisant un "swapoff -a" quand la swap
est utilisée ;-)


Ce n'est pas comparable. D'un côté, on essaie d'allouer de la mémoire
qu'on n'a pas. De l'autre, on retire de la mémoire qui était occupée.

Avatar
Thierry Boudet
On 2007-05-29, Nicolas George <nicolas$ wrote:

Il y a quelques exceptions :

<pinaille>

Eventuellement des bouts de stack ip (SO_REUSE, toussa)
</>

--
As Snow White said to Pinocchio, "Tell a lie! Tell the truth! Tell a lie!
Tell the truth!..."

Avatar
Pascal Hambourg
c-note - <f3hj1a$319u$ :

Le SWAp n'est pas sollicité.
Mem: 3354852K av, 3234940K used, 119912K free, 0K shrd, 13924K buff
Swap: 2048276K av, 780K used, 2047496K free 3022920K cached


Alors je penche encore plus vers un problème matériel.


Qu'est-ce qui te fait penser ça ?

Avant de se plaindre et de tuer des process, il devrait utiliser la swap.


Avant d'utiliser le swap, il devrait songer à récupérer une partie de la
mémoire occupée par du cache, étant donné qu'ici c'est apparemment le
cache qui occupe la plus grande partie de la mémoire (~3 Go sur 3,4 Go).
Dans ces circonstances, l'hypothèse du manque de mémoire me paraît très
suspecte.


Avatar
Pascal Hambourg

Pourtant, il me semble que la mémoire est gérée par 2 systèmes
différents. D'un côté, les appels au bios et de l'autre, ceux au
noyau Linux.


Euh, des appels BIOS sous Linux ?

Avatar
Mihamina (R12y) Rakotomandimby
Pascal Hambourg - <f3hr88$2vt$ :
Le SWAp n'est pas sollicité.
Mem: 3354852K av, 3234940K used, 119912K free, 0K shrd, 13924K buff
Swap: 2048276K av, 780K used, 2047496K free 3022920K cached
Alors je penche encore plus vers un problème matériel.

Qu'est-ce qui te fait penser ça ?



Le fait que je pense aux deux questions que je pose plus bas, mais sans
avoir de réponse rigoureuses.

Avant de se plaindre et de tuer des process, il devrait utiliser la swap.
Avant d'utiliser le swap, il devrait songer à récupérer une partie de la

mémoire occupée par du cache


- Qu'est-il censé ce passer si la partie physique de/des barette(s) sur
lesquelles se trouvaient ce cache sont defectueuses?
- Est-ce que le noyau "defragmente" ce qui se trouve en RAM (genre: y a une
grosse usine qui se pointe, je pousse un peu ce que j'ai déjà pour lui
laisser un gros bloc)? Accessoirement, est-ce que les RAM actuelles ont
encore besoin d'etre rafraichies?



Avatar
Mihamina (R12y) Rakotomandimby
Pascal Hambourg - <f3hquk$2og$ :

C'est reproductible (ou presque) en faisant un "swapoff -a" quand la swap
est utilisée ;-)
Ce n'est pas comparable. D'un côté, on essaie d'allouer de la mémoire

qu'on n'a pas. De l'autre, on retire de la mémoire qui était occupée.


Attends.
Le P.O. dit que le fait de lancer l'usine à gaz tue "certains" process
parcequ'ils leur "piquent" leur RAM. Je ne pense pas que ce soit vraiment
ce qui se passe, mais si c'était le cas, le "gros" a "retiré de la mémoire
qui était occupée" par "certains".


1 2 3 4