[Précédent (date)] [Suivant (date)] [Précédent (sujet)] [Suivant (sujet)] [Index par date] [Index par sujet]

Re: Libérer la mémoire...



Francois Jacques wrote:
> 
> Bonjour tout le monde,
> 
> Je débute avec linux et j'ai un petit problème, des gens se connecte via Telnet sur mon serveur Linux (redHat 7.0), au début de la journée, lorsque je fais la commande "free", le système indique qu'il reste environ 120 Mo de mémoire de libre et tout au long de la journée, ça décroit proportionnelement au nombre de personnes qui se connecte, à la fin de la journée, il indique qu'il reste parfois seulement 7 à 8 Mo de mémoire de libre, pourtant, il n'y a personne de connecter lorsque je fais la commande "who", et le serveur ne sert qu'à ça, (se connecter via telnet !)...
> 
> Premièrement, que peut-etre la cause de ce problème, et si c'est normal, exite-t-il une commande qui fait un "refresh" de la mémoire ou qui libère la mémoire inutilisée au lieu de faire un shutdown -r now de façon systématique à chaque matin ?
> 
> Merci à l'avance !
> 
> Francois Jacques
> [email protected]

Bonjour,

Ce que tu regardais peut-être dans les informations de "free", c'était
la mémoire réellement libre de ton système. Après le démarrage de ton
système, la mémoire est en grande partie inutilisée. Mais comme tu l'a
remarqué, au fûr et à mesure de son utilisation, la mémoire devient de
plus en plus remplis jusqu'au point de n'avoir que 2 ou 3MB de
réellement libre.

Linux considère la mémoire non utilisé (libre) comme du gaspillage, il
tentera d'en utiliser le maximum. Plus la mémoire est remplis, moins il
y a de gaspillage. L'espace libre est utilisée par Linux pour stocker
des fichiers du disque. Cet espace est nommé le buffer/cache. Ainsi, à
chaque lecture d'un fichier (et il y en a beaucoup sous linux), il
restera en mémoire jusqu'à ce qu'il ait été décidé qu'il n'est plus
utile en mémoire. C'est pour cette raison que si 58 usagers taperaient
la commande "ls", chacun à 20ns d'intervalle, la vitesse de ton disque
ne poserait pas de problème, il lirait en mémoire (Là où ça poserait
problème, ça serait plutôt dans l'exécution des 58 processus ls). Pour
en être convaincu, tape une première fois "cat unfichier.txt" une
première fois. Tu remarqueras avec la LED de ton disque dur qu'il y a eu
un accès disque. En retapant cette même commande une deuxième fois, ta
LED ne s'allumera plus.

Que se passe-t-il lorsque la mémoire nécessaire à tes programmes vient à
manquer car Linux utilise trop de mémoire pour stocker ces fichiers? Il
va diminuer la taille du buffer cache et oublier certains de ces
fichiers en mémoire. Tes programmes auront donc toujours l'espace
nécessaire en mémoire (jusqu'à la limite de ta taille mémoire
évidemment).

Quelle magie donc! À défaut d'avoir un disque lent, si tu as beaucoup de
mémoire, la vitesse d'un disque devient un problème moindre au fur et à
mesure que le buffer cache en mémoire se remplie.

En somme, plus tu as de mémoire utilisée, moins elle est gaspillée.
Avoir 2 ou 3MB de réellement libre en mémoire est tout à fait normal, le
contraire serait même inquiétant! Par contre, avoir 125MB utilisé par
les programmes sur une taille de mémoire de 128MB, là, ce n'est pas bon,
et tu as réellement un problème de mémoire.

Effectuer un shutdown quotidiennement enlève cet avantage de la gestion
de mémoire par Linux, vous videz le buffer/cache inutilement. Et si je
ne me trompe, la commande "update" sert à vider les caches en mémoire,
quoique cette commande ne semble pas effectuer ce rôle chez moi.

La mémoire "libre" comme un usager habitué à windows l'entend est en
réalité la mémoire totale utilisée, moins la taille du buffer et du
cache en mémoire. Avec la commande "free", il as déjà une ligne qui fait
la soustraction: -/+ buffers/cache: 133556 122512, dans mon cas, j'ai
122MB de "libre", ou en d'autres mots, probablement 122MB de fichiers en
attentes d'être lus en mémoire.

Bref, un long texte pour dire ce qui aurait put être dit en une phrase:

Une mémoire "pleine" est tout à fait normale et souhaitable sous Linux,
et effectuer un shutdown quotidien n'est certainement pas la meilleure
chose à faire ;-)

-Hervé