OVH Cloud OVH Cloud

Kernel 2.4 et gestion de la RAM

8 réponses
Avatar
Finrod Felagund
Bonjour a tous,

C'est une petite question sur le noyau et sa maniere de gerer la RAM.

J'ai actuellement 1Go de RAM sur ma machine, j'ai active le HIGHMEM
a 4Go.

Quand je fais top au lancement du systeme (demarrage sous X), je
vois que la RAM utilise et de 300 Mo, et un peu plus de 700 Mo de
libre.

Apres plusieurs heures d'uptime (sans lance d'autres applications que
celle du depart), je relance top, et je vois que la RAM utilise est de
environ 1000Mo, avec 12 Mo de libre et 600 Mo Inactif. Quel surprise ! si
elle est inactive, pourquoi ne la libere t-il pas ? En changeant de
runlevel (init 3), la RAM utilise est toujours de 1000 Mo, seul la
quantite inactive a change.

Ma question est donc, comment le noyau gere t-il la RAM ? Est-ce un
probleme de configuration de ma part ? Ou est-ce normal ?

Malgre diverses recherches sur google et autres, je ne trouve pas de
réponses concretes a cette question.

Merci d'avance de vos reponses ! Si je n'ai pas donner assez d'infos,
veuillez m'en excuser ;) et n'hesitez pas a ma demander tout ce que vous
jugerez necessaire.

Bonne journee a tous.

--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.

8 réponses

Avatar
sans_flotus_spam
Finrod Felagund wrote:

Bonjour a tous,

C'est une petite question sur le noyau et sa maniere de gerer la RAM.

J'ai actuellement 1Go de RAM sur ma machine, j'ai active le HIGHMEM
a 4Go.

Quand je fais top au lancement du systeme (demarrage sous X), je
vois que la RAM utilise et de 300 Mo, et un peu plus de 700 Mo de
libre.

Apres plusieurs heures d'uptime (sans lance d'autres applications que
celle du depart), je relance top, et je vois que la RAM utilise est de
environ 1000Mo, avec 12 Mo de libre et 600 Mo Inactif. Quel surprise ! si
elle est inactive, pourquoi ne la libere t-il pas ? En changeant de
runlevel (init 3), la RAM utilise est toujours de 1000 Mo, seul la
quantite inactive a change.

Ma question est donc, comment le noyau gere t-il la RAM ? Est-ce un
probleme de configuration de ma part ? Ou est-ce normal ?

Malgre diverses recherches sur google et autres, je ne trouve pas de
réponses concretes a cette question.

Merci d'avance de vos reponses ! Si je n'ai pas donner assez d'infos,
veuillez m'en excuser ;) et n'hesitez pas a ma demander tout ce que vous
jugerez necessaire.

Bonne journee a tous.




tu as de la RAM ? tant mieux, Linux est content, il s'en sert !
plus y a de ram, plus y s'en sert, tu n'as pas payé 1 Go pour qu'elle reste
à la niche. Bon, linux cache un max en ram, pour l'avoir sous la main.
lance un max d'applis, tu verras que la ram utilisée ne change pas beaucoup.
ferme et relance tes applis, tu verras la vitesse !
A+

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Regis Decamps
scripsit (11.12.2003 10:40)
Finrod Felagund wrote:



Quand je fais top au lancement du systeme (demarrage sous X), je
vois que la RAM utilise et de 300 Mo, et un peu plus de 700 Mo de
libre.

Apres plusieurs heures d'uptime (sans lance d'autres applications que
celle du depart), je relance top, et je vois que la RAM utilise est de
environ 1000Mo, avec 12 Mo de libre et 600 Mo Inactif. Quel surprise ! si
elle est inactive, pourquoi ne la libere t-il pas ?





Bon, linux cache un max en ram, pour l'avoir sous la main.



Oui, pourquoi l'effacer (et s'interdire de l'utiliser plus tard si les
données redeviennent nécessaires) alors qu'on peut simplement la marquer
inactive.

Exemple: je lance mozilla, cela nécessite un tas de librairies qui sont
chargées.

Je quitte mozilla. Beaucoup reste en mémoire et est marqué "inactif".

Si je lance OpenOffice. Comme j'ai beaucoup de mémoire, OpenOffice,
utilise la mémoire libre. Ce phénomène contribue à réduire en permanence
la méoire libre.

Je peux ensuite relancer mozilla: tout était déjà chargé, il suffisait
de le marquer "actif" den nouveau.

Quand je commence à manquer de mémoire libre, je transfère des zones
incatives dans la swap. Le système essaye ainsi d'avoir toujours 10Mo
(par exemple) de RAM libre et immédiatement disponible.

Et le noyau lui-même cache énormément; par exemple les emplacements des
fichiers (remarque qu'un 'ls /usr/share' est long la première fois,
beaucoup plus rapide les suivantes).
--
Régis Décamps

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Michel BILLAUD
Finrod Felagund writes:

Bonjour a tous,

C'est une petite question sur le noyau et sa maniere de gerer la RAM.



Apres plusieurs heures d'uptime (sans lance d'autres applications que
celle du depart), je relance top, et je vois que la RAM utilise est de
environ 1000Mo, avec 12 Mo de libre et 600 Mo Inactif. Quel surprise ! si
elle est inactive, pourquoi ne la libere t-il pas ?



Bonne idée. et pendant qu'il y est, il pourrait éjecter les barrettes
mémoires dont il ne se sert pas.


Ma question est donc, comment le noyau gere t-il la RAM ? Est-ce un
probleme de configuration de ma part ? Ou est-ce normal ?



Ah non, ça fait trois questions. Les réponses sont:
1. bien
2. non
3. oui.

Bon, prenons le problème par le bon bout. Il y a une machine avec de
la mémoire. Tant qu'il y a de la mémoire libre, il est raisonnable de
s'en servir si ça fait gagner en performance par ailleurs. Donc le
noyau s'en sert pour y garder une copie des trucs qu'il a écrit sur le
disque, au cas où il en aurait besoin plus tard, ce qui évite d'aller
relire le disque. Si il se trouve en avoir besoin pour quelque chose
de plus utile (par exemple lancer un nouveau programme), c'est là que
le récupération a lieu.

MB

--
Michel BILLAUD
LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792
351, cours de la Libération http://www.labri.fr/~billaud
33405 Talence (FRANCE)

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Finrod Felagund
On Tue, 16 Dec 2003 14:21:43 +0000, Michel BILLAUD wrote:

Bonne idée. et pendant qu'il y est, il pourrait éjecter les barrettes
mémoires dont il ne se sert pas.




Merci de cette réponse inutile qu'on ne peut plus bateau ....

Ma question est donc, comment le noyau gere t-il la RAM ? Est-ce un
probleme de configuration de ma part ? Ou est-ce normal ?






Donc pour ceux que ca interesse (la gestion de la RAM), voici un lien
contenant plein de documentations sur l'architecture hardware, et le
fonctionnement de plusieurs noyaux, tout ceci tres bien explique :

http://kos.enix.org/docs.php?lang=fr

Tres bonne journée .

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Yannick LE GUEN
Le 10 Dec 2003 11:27:07 GMT, Finrod Felagund
a écrit:

Bonjour,


C'est une petite question sur le noyau et sa maniere de gerer la RAM.

J'ai actuellement 1Go de RAM sur ma machine, j'ai active le HIGHMEM
a 4Go.

Quand je fais top au lancement du systeme (demarrage sous X), je
vois que la RAM utilise et de 300 Mo, et un peu plus de 700 Mo de
libre.

Apres plusieurs heures d'uptime (sans lance d'autres applications que
celle du depart), je relance top, et je vois que la RAM utilise est de
environ 1000Mo, avec 12 Mo de libre et 600 Mo Inactif. Quel surprise ! si
elle est inactive, pourquoi ne la libere t-il pas ? En changeant de
runlevel (init 3), la RAM utilise est toujours de 1000 Mo, seul la
quantite inactive a change.




J'ai fait le test sur une machine équipée d'un PII 400, 384 MB de mem,
un noyau 2.4.22 et WMaker. Pour voir l'évolution, j'ai lancé Top au
démarrage et j'ai laissé le tout tourner pendant deux jours : la Ram
utilisée est toujours la même (230 KB), et toujours environ 150 MB libres.
A priori, j'aurais tendance à penser qu'une des applications qui tournent
sur ton système a des fuites de mémoire. As-tu essayé de suivre
l'évolution de la consommation mémoire par exemple toutes les 5 minutes
afin de déterminer si l'utilisation augmente doucement, ou par "palier"
brusque ? ...
Tu parles d'une application active lorsque tu as constaté le problème ?
As-tu refait le test sans cette application ?


Ma question est donc, comment le noyau gere t-il la RAM ? Est-ce un
probleme de configuration de ma part ? Ou est-ce normal ?



Je n'ai pas de détail sur la gestion mémoire de Linux en particulier, je
suppose qu'elle n'est pas très différente des divers unix. Ma référence en
la matière est le livre de Maurice J.BACH "Conception du système Unix"
(éditions Masson).


cordialement,

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Finrod Felagund
On Thu, 18 Dec 2003 09:36:55 +0000, Yannick LE GUEN wrote:
Bonjour,
Tu parles d'une application active lorsque tu as constaté le problème ?
As-tu refait le test sans cette application ?



Le serveur X, utilise toujours a peu pres 280 Mo de RAM, l'autre
application XMMS, utilise quand a elle environ 12 Mo. Pourtant sans XMMS,
l'utilisation de la RAM n'augmente que tres peu, meme avec plusieurs
heures d'uptime.

Serait-ce XMMS qui met en cache chaque MP3 joue ?( ne hurlait
pas tout de suite, ce n'est qu'un hypothese !). Ce qui amene cette
question :

Y a t-il une maniere quelconque de savoir ce que contient la RAM.

Je n'ai pas de détail sur la gestion mémoire de Linux en
particulier, je
suppose qu'elle n'est pas très différente des divers unix. Ma
référence en la matière est le livre de Maurice J.BACH "Conception du
système Unix" (éditions Masson).


cordialement,


Tout le plaisir etait pour moi :) Merci beaucoup.

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Yannick LE GUEN
Le 18 Dec 2003 13:07:00 GMT, Finrod Felagund
a écrit:


Le serveur X, utilise toujours a peu pres 280 Mo de RAM, l'autre
application XMMS, utilise quand a elle environ 12 Mo. Pourtant sans XMMS,
l'utilisation de la RAM n'augmente que tres peu, meme avec plusieurs
heures d'uptime.

Serait-ce XMMS qui met en cache chaque MP3 joue ?( ne hurlait
pas tout de suite, ce n'est qu'un hypothese !). Ce qui amene cette
question :

Y a t-il une maniere quelconque de savoir ce que contient la RAM.




Effectivement, je viens de faire le test avec xmms. On voit nettement la
consommation mémoire augmenter pendant la lecture d'un morceau.
L'application a l'air de le conserver en mémoire. De plus, lorsqu'on
change de morceau, il semble ne pas désallouer la mémoire utilisée pour le
premier morceau. Pour désallouer, il faut quitter l'application. Bug ?. La
version que j'ai testée est la 1.2.7. Il y a une 1.2.8 disponible sur le
site. Quand j'aurai un moment, je l'essaierai.

Cordialement, a +

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Vincent Bernat
OoO En cette fin de nuit blanche du jeudi 18 décembre 2003, vers
05:07, Finrod Felagund disait:

Le serveur X, utilise toujours a peu pres 280 Mo de RAM, l'autre



Cela commence très mal.

La gestion de la mémoire est compliquée. Une application ne prend pas
simplement x Mo de mémoire, il y a des tas de choses qui entrent en
jeu. Le plus souvent, il y a les bibliothèques dynamiques qui ne sont
présentes en mémoire qu'une seule fois mais dans top, l'espace mémoire
de chaque application contient également la place prise par la
librairie.

Ensuite, il y a quand on lance plusieurs fois une application ou
lorsque celle-ci forke. Une bonne partie de la place mémoire occupée
est partagée par toutes les instances.

Ensuite, il y a la possibilité de maper un fichier en mémoire : on
croit écrire en mémoire, mais en fait, on écrit dans un fichier.

Ensuite, on peut maper de l'espace mémoire, plusieurs fois, et pas
forcément de la mémoire centrale, c'est ce que fait X.

Etc.

Pour avoir des idées un peu plus précises, tu peux regarder le contenu
de proc, notamment le répertoire portant comme nom le pid de
l'application qui t'intéresse. lsof devrait aussi t'aider. Mais en
gros, les indications de top sont à prendre avec des pincettes.

Serait-ce XMMS qui met en cache chaque MP3 joue ?( ne hurlait
pas tout de suite, ce n'est qu'un hypothese !). Ce qui amene cette
question :



Le noyau met en cache les fichiers lus par XMMS, ce qui a pour effet
de faire monter l'utilisation de la mémoire cache, mais pas celle
utilisée par XMMS, qui peut effectivement augmenter à cause de fuites
mémoires (cela a été corrigé, notamment dans les versions 1.2.5 ou
dans le coin). Il est possible d'expliquer au noyau que l'on ouvre un
fichier pour ne le lire qu'une fois (cherche les archives de ce
groupe), mais ça n'a jamais été mis dans xmms.

Y a t-il une maniere quelconque de savoir ce que contient la RAM.



Le contenu de /proc est relativement complet, reste à savoir comment
recouper les infos...
--
Use debugging compilers.
- The Elements of Programming Style (Kernighan & Plaugher)

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.