Re: Gestion de la mémoire dans Linux

2002-06-26 Par sujet Leopoldo Ghielmetti

Tu as par hazard une carte NVidia dans ta machine? si c'est le cas c'est 
normal. Le driver NVidia est proprietaire et bogué, il bouffe à peu près 4K 
de mémoire par seconde et il ne la libère jamais.
Le problème c'est qu'il ne suffit pas de tout arrêter, il faut rebooter la 
machine parce que le driveur en question est un module kernel et la mémoire 
alloué au niveau des modules kernel n'est pas libérable automatiquement et 
qui plus est n'est pas swappable.

J'avais le même problème sur une machine au bureau, je devais la rebooter au 
moin une fois par jour. Elle avait 512M de RAM et au matin elle en occupait 
100M, en revenant le soir la mémoire occupée avoisinait les 300M, même on ne 
faisant strictement rien. Une fois je l'ai laissé tourner toute la nuit et 
quand elle à atteint a peu près les 512M de RAM kernel elle à rebooté toute 
seule.

Per contre le fait que tu utilises des logiciels comme Mozilla ou VMware 
n'aide pas vraiment, ils bouffent plein de RAM.

ciao, Leo

Il 10:54, martedì 25 giugno 2002, hai scritto:
> Hellowww,
>
> Je ne comprends pas très bien comment la mémoire est gérée dans Linux...
>
> Quand linux a démarré (sans X), j'ai env 25 MB (sur 128) d'utilisé.
> Je démarre X (uniquement xdm gdm etc..) et vlà pan 50MB de plus d'utilisé.
> Je me loggue sous X, afterstep me dit bonjour, j'ouvre mozilla, et pan
> 20MB supplémentaire...j'ouvre vmware et patatra ça swap à fond...Je referme
> tout, X compris, je me retrouve avec une simple console, je m'attends à
> retrouver mes 25MB utilisé mais non, il me reste plus rien...
>
> Je me pose alors deux question :
>
> - Pourquoi les progs ont besoin d'autant de mémoire ???
>
> - Pourquoi quand je quitte un programme, la mémoire n'est pas libérée et
>   reste utilisée ? (cache ou pas cache le prob est le même)
>
> Merci d'avance de vos réponses.
>
> NB : j'utilise debian et redhat avec des noyaux 2.4.18.
>
> @++
> JC
> --
> http://www-internal.alphanet.ch/linux-leman/ avant de poser
> une question. Ouais, pour se désabonner aussi.

-- 
Quando vedo un uomo piangere nel buio della sua stanza, mi domando cosa lo
spinga a non accendere la luce.
- Alessandro Bergonzoni
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: Gestion de la mémoire dans Linux

2002-06-26 Par sujet Marc SCHAEFER

On Wed, 26 Jun 2002, Jean-Claude Schopfer wrote:

> Je me suis retrouvé plusieurs fois dans le cas où la swap est utilisée
> et que malgré tout, la mémoire n'est pas non plus libérée.

swapoff -a; swapon -a

Encore que si c'est swappé et que cela reste swappé c'est que personne
n'en a besoin.  Utilise `vmstat 5' pour voir un peu s'il y a beaucoup de
swapin/out.

Linus recommande maintenant (2.4) au moins 2x swap par rapport à RAM
(méthode BSD). 

> Si le noyau gère tout seul au mieux, c'est bien, mais je devrai
> pouvoir lui dire "non c'est moi qui décide et now tu libères tout"
> ou encore "vide le cache, y'a plus besoin, tu vois pas que le prog
> est fermé ?"

Oui, mais si tu le relances ?  Lance SO5.2, quitte et relance, et compare.

NB: le noyau, dans certaines versions, a une gestion assez mauvaise (swap
trop vite, etc), mais bon, en règle générale cela ne pose pas de
problème.

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: Gestion de la mémoire dans Linux

2002-06-26 Par sujet Daniel Cordey

 On Wed, 26 Jun 2002, Jean-Claude Schopfer wrote:
> > Je me suis retrouvé plusieurs fois dans le cas où la swap est utilisée
> > et que malgré tout, la mémoire n'est pas non plus libérée.

Combien as-tu de MEM et de Swap ? 

La swap sera utilisée pour aller déposer des pages de data lorsqu'il n'y a 
plus assez de place en RAM. Il se peut que des programmes dormants aient 
toutes leurs pages sur la swap, mais que la mémoire ne soit (au moment ou 
vous la regarder) plus très utilisée, ou au contraire, pleine jusqu'à la 
gorge. On peut très bien avoir une swap pleine et un système avec de bonnes 
performances. Par contre, la situation est limite et peu basculer dans 
l'inutilisable très rapidement.

Je le répète, ne confondez pas buffer, cache et user+shared spaces. Les deux 
premiers sont dynamiques et dépendendent du kernel, alors que les process des 
utilisateurs sont responsables du troisième. Or, lorsqu'un programme fait 
beaucoup de malloc(), il ne fait quétendre son 'data segment size'. Il ne 
peut pas réduire cette valeur (see brk(0/sbrk()). Ce n'est pas parcequ'un 
programme a utilisé beaucoup de mémoire dynamique à un moment donné qu'il est 
un "memory hog". Non, il se peut qu'il n'ait plus besoin d'acceder à ces 
portions de mémoire, mais elles lui sont toujours attachées. Les pages non 
accèdées seront progressivement poussées vers la swap, et y resteront 
probablement (jusqu'a la fin du process). Remarquez que plusieurs programmes 
de ce genre peuvent remplir la swap et empêcher l'exécution de nouveaux 
programmes, sans que la mémoire soit massivement accèdée...

Moralité : Rachetez de la mémoire !!! (IBM patended) :-)

Daniel

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: Gestion de la mémoire dans Linux

2002-06-26 Par sujet Félix Hauri

On Wed, 26 Jun 2002, Jean-Claude Schopfer wrote:

> Je me suis retrouvé plusieurs fois dans le cas où la swap est utilisée
> et que malgré tout, la mémoire n'est pas non plus libérée.
As-tu relancer un truc. p.exemple
$ bzip2 -c -9 isocdrom.img >/dev/null
pour suivre l'évolution de l'occupation de la mémoire?

> Si le noyau gère tout seul au mieux, c'est bien, mais je devrai
> pouvoir lui dire "non c'est moi qui décide et now tu libères tout"
Non! C'est SON boulot...
Quoique, je crois que ce soit possible...
Ne sait pas trop comment...
Surtout, ne vois pas trop à quoi cela peut servir.

> ou encore "vide le cache, y'a plus besoin, tu vois pas que le prog
> est fermé ?"
La petite histoire ne parle pas de ``cache'' mais pire que ça:
La ``dé-allocation'' de mémoire n'aurra d'effet que lorsque la mémoire
``dé-allouée'' sera demandée ailleur ou dès que le kernel aurra un peu
de temps à consacrer pour lui.

--
 Félix Hauri  -  <[EMAIL PROTECTED]>  -  http://www.f-hauri.ch

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: Gestion de la mémoire dans Linux

2002-06-26 Par sujet Jean-Claude Schopfer

Surlignage Félix Hauri <[EMAIL PROTECTED]>:

> Est-tu sûr que tes tâches ne tournes plus! (Pas de zombies)

yep

> Tant que le kernel n'a pas BESOIN de libérer de la mémoire, il ne la
> libère pas. Si le swap n'est pas utilisé et qu'il reste de la mémoire
> libre, alors lorsque les programme désallouent des blocks mémoire, la
> mémoire n'est pas ``libérée'' par le kernel, qui a potentiellemnt autre
> chose à faire... Il le fera lorque ce sera nécessaire, ou lorsqu'il
> n'aurra rien d'autre a faire... 

Je me suis retrouvé plusieurs fois dans le cas où la swap est utilisée
et que malgré tout, la mémoire n'est pas non plus libérée.

Si le noyau gère tout seul au mieux, c'est bien, mais je devrai
pouvoir lui dire "non c'est moi qui décide et now tu libères tout"
ou encore "vide le cache, y'a plus besoin, tu vois pas que le prog
est fermé ?"

@++
JC
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: Gestion de la mémoire dans Linux

2002-06-26 Par sujet Félix Hauri

On Tue, 25 Jun 2002, Jean-Claude Schopfer wrote:

> - Pourquoi les progs ont besoin d'autant de mémoire ???
Par flemme de certainss programmeurs ou manque de connaissance.
(J'en suis! Il m'arrive de chercher à obtenir rapidement un résultat et
parfois de ne volontairement pas tenir compte de la rationalisation.)
... Personellement mon poste est un Pentium (I) 200Mhz: Si un outil est
``utilisable'' sur ma machine, il sera ``confortable'' sur une machine
plus puissamte! :)

> - Pourquoi quand je quitte un programme, la mémoire n'est pas libérée et
>   reste utilisée ? (cache ou pas cache le prob est le même)
Est-tu sûr que tes tâches ne tournes plus! (Pas de zombies)
Cette mémoire n'est-elle pas passée en cache ou buffer?

Mais aussi:
Tant que le kernel n'a pas BESOIN de libérer de la mémoire, il ne la
libère pas. Si le swap n'est pas utilisé et qu'il reste de la mémoire
libre, alors lorsque les programme désallouent des blocks mémoire, la
mémoire n'est pas ``libérée'' par le kernel, qui a potentiellemnt autre
chose à faire... Il le fera lorque ce sera nécessaire, ou lorsqu'il
n'aurra rien d'autre a faire... 
(ou quelque-chose comme ça, les plus experts que moi corrigeront;)

> NB : j'utilise debian et redhat avec des noyaux 2.4.18. 
Ah! Peut-être que la nouvelle gestion de mémoire, implémentée dans
la version 2.4.11-(dontuse) n'est pas encore totallement au point?!
A creuser! Je n'ai pas chercher à constater ce genre de choses...

--
 Félix Hauri  -  <[EMAIL PROTECTED]>  -  http://www.f-hauri.ch

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: Gestion de la mémoire dans Linux

2002-06-25 Par sujet Philippe Strauss

On Tue, Jun 25, 2002 at 11:35:06AM +0200, Daniel Cordey wrote:
> On Tuesday 25 June 2002 10:54, Jean-Claude Schopfer wrote:
> 
> > Quand linux a démarré (sans X), j'ai env 25 MB (sur 128) d'utilisé.
> 
> Correcte !
> 
> > Je démarre X (uniquement xdm gdm etc..) et vlà pan 50MB de plus d'utilisé.

note que la memoire utilise par le processus X, tel que reporte
par "top", inclus la memoire de la carte video dans
son espace d'adressage. Avec une carte video contemporaine
ca fait 32MB de la taille totale du processus X qui est
a maitre sur le compte de la ram video.

aplus


-- 
Philippe Strauss
http://philou.ch/

L'indifférence est le plus grand risque de notre temps,
la forme civilisée de la cruauté.  -- Zenta Maurina
--
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Re: Gestion de la mémoire dans Linux

2002-06-25 Par sujet Daniel Cordey

On Tuesday 25 June 2002 10:54, Jean-Claude Schopfer wrote:

> Quand linux a démarré (sans X), j'ai env 25 MB (sur 128) d'utilisé.

Correcte !

> Je démarre X (uniquement xdm gdm etc..) et vlà pan 50MB de plus d'utilisé.

Ah, ah, ah. Et tu pensais que le serveur X allait te bouffer 10 KB ?

> Je me loggue sous X, afterstep me dit bonjour, 

Et voilà, nous y sommes... le serveur X, plus un petit window manager... et 
vlan... une barette de plus ! Les widgets, pixmap, fonts... tout ça c'est 
très cher en mémoire... hélas :-(

> j'ouvre mozilla, et pan 20MB supplémentaire...

T'as de la chance et tu n'en es qu'au début... après deux jours d'utilisation 
de Mozilla/Netscape (si tu y arrives), tu te retrouves avec 45 Mb...

> j'ouvre vmware et patatra ça swap à fond...Je referme
> tout, X compris, je me retrouve avec une simple console, je m'attends à
> retrouver mes 25MB utilisé mais non, il me reste plus rien...

> - Pourquoi les progs ont besoin d'autant de mémoire ???

Pour Mozilla/Netscape, ça reste un mystère... en tout cas pour moi. Je ne 
comprends pas pourquoi ils se vautrent dans la mémoir à ce point. J'utilise 
Konqueror et Opera qui sont beaucoup moins gourmand.

> - Pourquoi quand je quitte un programme, la mémoire n'est pas libérée et
>   reste utilisée ? (cache ou pas cache le prob est le même)

La gestion des caches et structure kernel sont dynamiques. Par opposition à ce  
qui se faisait dans les UNIX il y a quelques années. En fait le kernel essaie 
de s'adapter. Par exemple, la part de buffer-cache diminue lorsque le systême 
a besoin de mémoir epour les process utiilisateurs. Ceci est bien visible le 
matin lorsque tu reposes les mains sur ton clavier.

Concernnat les prog utilisateurs, brk(2) se contente d'augmenter le data size 
d'un programme, mais ne libère rien...

Daniel

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.



Gestion de la mémoire dans Linux

2002-06-25 Par sujet Jean-Claude Schopfer

Hellowww,

Je ne comprends pas très bien comment la mémoire est gérée dans Linux...

Quand linux a démarré (sans X), j'ai env 25 MB (sur 128) d'utilisé.
Je démarre X (uniquement xdm gdm etc..) et vlà pan 50MB de plus d'utilisé.
Je me loggue sous X, afterstep me dit bonjour, j'ouvre mozilla, et pan
20MB supplémentaire...j'ouvre vmware et patatra ça swap à fond...Je referme
tout, X compris, je me retrouve avec une simple console, je m'attends à 
retrouver mes 25MB utilisé mais non, il me reste plus rien...

Je me pose alors deux question : 

- Pourquoi les progs ont besoin d'autant de mémoire ???

- Pourquoi quand je quitte un programme, la mémoire n'est pas libérée et
  reste utilisée ? (cache ou pas cache le prob est le même)

Merci d'avance de vos réponses.

NB : j'utilise debian et redhat avec des noyaux 2.4.18. 

@++
JC
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.