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
Arol
"c-note" a écrit dans le message de news:
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.


uh ?

T'es sur de ce que tu dis ?

Avatar
c-note
"c-note" a écrit dans le message de news:
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.


uh ?

T'es sur de ce que tu dis ?




Oui je suis sur. Sauf qu'il arrive que les 2 programmes se chevauchent.
C'est a dire qu'il arrive que le programme 2 se lance alors que le
programme 1 n'est pas terminer (Ce qui est normal)

Ces 2 prog sont independants l'un de l'autre.


Avatar
c-note
Arol - <465c4d59$0$25951$ :

uh ?
T'es sur de ce que tu dis ?


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



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


Avatar
Nicolas George
c-note wrote in message <f3hgl1$30hh$:
Lorsque ce programme termine son execution la RAM n'est pas vider.


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

Avatar
Mihamina (R12y) Rakotomandimby
c-note - <f3hgl1$30hh$ :

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.


Je ne connais pas exactement comment le noyau gère la RAM, mais
indépendament de cela, si il (le noyau) ne sait pas récupérer la RAM
utilisée par un programme mort (MySQL dans ton cas) je ne vois pas en quoi
en tuer d'autres l'avancerait (il ne sait de toutes façons pas en récuperer
la RAM libérée...). Tu vois le truc?

De plus, en général, c'est le programm qui se lance qui se plaint de ne pas
avoir assez de RAM et du coup refuse de se lancer. C'est le cas avec Xen,
par exemple. Si la "vraie RAM" (il ne veut pas comptabiliser la swap) n'est
pas suffisante, il ne se lance pas et explique bien que c'est parcequ'il
n'y a pas assez de RAM.

Moi je pense que tes barettes de RAM sont defectueuses.

Sinon, ça nous aurait beaucoup aidé à te répondre de nous dire quelle est
l'application que tu lances et qui a besoin de beaucoup de RAM.

Avatar
c-note
c-note - <f3hgl1$30hh$ :

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.


Je ne connais pas exactement comment le noyau gère la RAM, mais
indépendament de cela, si il (le noyau) ne sait pas récupérer la RAM
utilisée par un programme mort (MySQL dans ton cas) je ne vois pas en quoi
en tuer d'autres l'avancerait (il ne sait de toutes façons pas en récuperer
la RAM libérée...). Tu vois le truc?

De plus, en général, c'est le programm qui se lance qui se plaint de ne pas
avoir assez de RAM et du coup refuse de se lancer. C'est le cas avec Xen,
par exemple. Si la "vraie RAM" (il ne veut pas comptabiliser la swap) n'est
pas suffisante, il ne se lance pas et explique bien que c'est parcequ'il
n'y a pas assez de RAM.

Moi je pense que tes barettes de RAM sont defectueuses.

Sinon, ça nous aurait beaucoup aidé à te répondre de nous dire quelle est
l'application que tu lances et qui a besoin de beaucoup de RAM.
programme 1 : sauvegarde de base (pgsql)

programme 2 : insertion dans la base des données (la vie continue).

Evidement je ne peux pas me permettre de verouiller la base pendant la
sauvegarde.


Avatar
Mihamina (R12y) Rakotomandimby
Arol - <465c4d59$0$25951$ :

uh ?
T'es sur de ce que tu dis ?


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

Avatar
c-note
c-note wrote in message <f3hgl1$30hh$:
Lorsque ce programme termine son execution la RAM n'est pas vider.


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 ?


Avatar
Nicolas George
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é.

Avatar
Thierry Boudet
On 2007-05-29, c-note wrote:

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

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

Tu es sur qu'il est bien terminé, qu'il ne reste pas un

processus en background pour, par exemple, cloturer les
bases de données ?

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

Est-ce possible ?


Le même phénomène se produit-il en ajoutant de la swap ?


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

1 2 3 4