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

Demande explications sur mémoire

11 réponses
Avatar
gatsbi
Bonsoir,

la commande free me donne ceci :

[user1@pcburo tc]# free
total used free shared buffers cached
Mem: 775504 331308 444196 0 53584 106468
-/+ buffers/cache: 171256 604248
Swap: 313228 0 313228

Quelqu'un pourrait-il m'expliquer ce que désignent exactement les termes
buffers et cached de la première ligne, ainsi que ceux de la deuxième
ligne ?

Merci beaucoup

Ern

10 réponses

1 2
Avatar
Frederic Bezies

Bonsoir,

la commande free me donne ceci :

[ tc]# free
total used free shared buffers cached
Mem: 775504 331308 444196 0 53584 106468
-/+ buffers/cache: 171256 604248
Swap: 313228 0 313228

Quelqu'un pourrait-il m'expliquer ce que désignent exactement les termes
buffers et cached de la première ligne, ainsi que ceux de la deuxième
ligne ?

Merci beaucoup

Ern


Euh... man free ?

-->[]


--
Frederic Bezies -
Site Perso : http://perso.wanadoo.fr/frederic.bezies/
Weblog : http://frederic.bezies.free.fr/blog/

Avatar
gatsbi

Euh... man free ?



Si man free répondait à mes interrogations, je n'aurais pas posé la
question !
- qu'estce exactement qu'un buffer ? et cached ( c'est le cache disque ? )
- pourquoi les valeurs de la 2ème ligne sont-elles différentes de la
1ère ?

Gatsbi

Avatar
Frederic Bezies


Euh... man free ?


Si man free répondait à mes interrogations, je n'aurais pas posé la

question !
- qu'estce exactement qu'un buffer ? et cached ( c'est le cache disque ?
)


Buffer = tampon. Cached ? On traduit cela par de l'antémémoire, je
penserais à une zone tampon précise.

- pourquoi les valeurs de la 2ème ligne sont-elles différentes de la
1ère ?



Car elles prennent en compte les parties "tampons" et autres ?

Gatsbi




--
Frederic Bezies -
Site Perso : http://perso.wanadoo.fr/frederic.bezies/
Weblog : http://frederic.bezies.free.fr/blog/


Avatar
Nicolas George
gatsbi wrote in message :
Quelqu'un pourrait-il m'expliquer ce que désignent exactement les termes
buffers et cached de la première ligne,


Cached, ça désigne le cache de pages, c'est à dire le mécanisme qui sert de
cache disque : les données lues depuis des fichiers qui sont conservées en
mémoire tant que le noyau n'a rien de mieux à y mettre.

Les buffers, c'est un peu plus subtil, et je ne suis pas sûr que l'idée que
je m'en fais soit parfaitement exacte, mais globalement ça correspond à la
même chose à un niveau inférieur.

ainsi que ceux de la deuxième
ligne ?


Sur la deuxième ligne, justement, il n'y en a pas : la deuxième correspond à
une ré-écriture de la première en considérant que les buffers et le cache
sont de la mémoire libre et pas de la mémoire occupée.

Avatar
Pascal Hambourg
Salut,


Cached, ça désigne le cache de pages, c'est à dire le mécanisme qui sert de
cache disque : les données lues depuis des fichiers qui sont conservées en
mémoire tant que le noyau n'a rien de mieux à y mettre.

Les buffers, c'est un peu plus subtil, et je ne suis pas sûr que l'idée que
je m'en fais soit parfaitement exacte, mais globalement ça correspond à la
même chose à un niveau inférieur.


Juste pour info, où est le cache des données en attente d'écriture sur
le disque ?

Avatar
Nicolas George
Pascal Hambourg wrote in message <ed3rn8$10rr$:
Juste pour info, où est le cache des données en attente d'écriture sur
le disque ?


Je ne suis pas bien sûr, mais j'ai l'impression que c'est un peu dans les
deux. Il y aurait clairement des expériences intéressantes à faire.

Avatar
Sébastien Monbrun aka TiChou
Dans le message <news:44f57552$0$15129$,
*Nicolas George* tapota sur f.c.o.l.configuration :

Juste pour info, où est le cache des données en attente d'écriture sur
le disque ?


Je ne suis pas bien sûr, mais j'ai l'impression que c'est un peu dans les
deux. Il y aurait clairement des expériences intéressantes à faire.


À une époque j'avais écrit, après diverses recherches, ceci :

http://groups.google.fr/group/fr.comp.os.linux.configuration/msg/cb019fcaf16aa47c

Je me souviens que je m'étais pas mal plongé dans les sources du noyau pour
saisir un minimum le fonctionnement de la mémoire sous Linux.

Aujourd'hui, je me rends compte que c'est pour moi encore confus. De plus,
avec les noyaux de la génération 2.6.x, cela a évolué alors que j'en suis
resté aux noyaux 2.4.x.

Quelqu'un se sent-il alors capable de faire une synthèse de tout ça ?

--
Sébastien Monbrun aka TiChou


Avatar
Stan
"Pascal Hambourg" a écrit dans le message de
news:ed3rn8$10rr$
Salut,


Cached, ça désigne le cache de pages, c'est à dire le mécanisme qui sert
de


cache disque : les données lues depuis des fichiers qui sont conservées
en


mémoire tant que le noyau n'a rien de mieux à y mettre.

Les buffers, c'est un peu plus subtil, et je ne suis pas sûr que l'idée
que


je m'en fais soit parfaitement exacte, mais globalement ça correspond à
la


même chose à un niveau inférieur.


Juste pour info, où est le cache des données en attente d'écriture sur
le disque ?


Le DD en posède un.

--
-Stan


Avatar
Nicolas George
"Stan" wrote in message <ed3t50$ve9$:
Le DD en posède un.


Minuscule et sans grand intérêt.

Avatar
Nicolas George
Sébastien Monbrun aka TiChou wrote in message
:
À une époque j'avais écrit, après diverses recherches, ceci :

http://groups.google.fr/group/fr.comp.os.linux.configuration/msg/cb019fcaf16aa47c


Je vais essayer de dire ce que j'ai compris, et qui a changé par rapport à
cette époque. Je garde tout le message cité pour aider la référence.

MemTotal : La taille totale de la mémoire physique dont dispose le noyau.
Elle est égale à la taille de la RAM moins la taille prise par le noyau dans
cette RAM (et moins je ne sais plus quoi précisément, mais quelque chose de
dérisoire).

MemFree : La taille de la mémoire physique non occupée.

MemShared : La taille de la mémoire physique partagée entre plusieurs
processus c'est-à-dire la mémoire qui est commune à plusieurs processus.
Mais, sur les noyaux de la génération >= 2.4.x, MemShared vaut 0 car on ne
comptabilise plus cette valeur pour des raisons de performances.

Buffers : La taille de la mémoire physique qui sert de « tampon » pour les
entrées et sorties.


C'est là qu'est à mon avis la plus grosse difficulté. Voilà ce que j'en
comprends : un buffer correspond très directement à une opération
d'entrée-sortie sur un périphérique par blocs. Mais la plupart du temps, une
telle opération est faite pour le compte d'un filesystem, et dans ce cas, le
segment de données du buffer appartient au cache de pages, ou bien y sera
promu assez immédiatement. Dans ces conditions, une machine en utilisation
normale doit avoir très peu de mémoire consacrée aux buffers.
Essentiellement, ça va être des blocs qui ne correspondent pas directement à
des fichiers : le journal, par exemple, ou bien des blocs qui ne sont pas
alignés par rapport au fichier qu'ils contiennent (je crois que ReiserFS
fait ça).

Une autre manière d'obtenir de faire gonfler les buffers, je crois, c'est de
lire le périphérique d'un filesystem monté.

Cached : La taille de la mémoire physique allouée au cache, généralement
utilisée pour stocker les données lus sur disque.

SwapCache : C'est la partie de la mémoire cache qui est passée de la zone
d'échange (le swap) vers la mémoire physique mais qui est toujours présente
sur la zone d'échange. Ainsi, si on doit de nouveau libérer cette partie de
la mémoire cache, il sera inutile de la replacer dans la zone d'échange
puisqu'elle y sera déjà.


Ce champ s'appelle maintenant SwapCached. Cette définition existe, mais la
doc officielle du noyau dit :

SwapCached: Memory that once was swapped out, is swapped back in but
still also is in the swapfile (if memory is needed it
doesn't need to be swapped out AGAIN because it is already
in the swapfile. This saves I/O)

Soit en français : de la mémoire qu'il a fallu envoyer dans le swap puis
relire, mais qui est toujours présente, telle quelle, dans le swap, et donc
peut être libérée instantanément (ce dernier point étant présent également
dans ta définition).

Je dois dire que je préfère la définition du noyau : l'idée présente dans la
tienne de swapper du cache est assez absurde : il vaut mieux aller relire
l'original que de prendre le temps d'en écrire une copie dans le swap (ce
n'est pas clair si le cache est sur un disque nettement plus rapide que
l'original, mais je ne crois pas que le noyau en soit à ce niveau de
subtilité).

Active : La taille de la mémoire (essentiellement buffers + cache) qui a été
utilisée le plus récemment et qui doit être conservée en priorité.

Selon le noyau, cette valeur peut être divisée en deux :

ActiveAnon : La taille de la mémoire active « anonyme » qui correspond à la
mémoire utilisée par les processus.

ActiveCache : La taille de la mémoire active de type cache.

Inactive : La taille de la mémoire qui a été le moins récemment utilisée et
qui peut être utilisée dès que des nouvelles opérations de cache sont
nécessaires.

Selon le noyau, cette valeur peut être divisée en trois :

Inact_dirty : C'est la partie de la mémoire inactive qui a besoin de plus de
temps que le reste pour être libérée. C'est généralement les données en
mémoire cache qui sont en attente d'être écrites sur disque.

Inact_laundry : C'est la partie de la mémoire inactive qui est prête à être
libérée après que les opérations de pagination sur cette partie soient
terminées.

Inact_clean : C'est la partie de la mémoire inactive qui peut être libérée.

On peut trouver aussi :

Inact_target : C'est une moyenne de la mémoire inactive que fait le noyau
régulièrement pour s'assurer qu'il y a suffisamment de mémoire inactive
libérable.

HighTotal : La taille totale de la mémoire physique HighMem au-dessus de
860Mo. Elle est séparée de la mémoire dite LowMem car le noyau y accède plus
difficilement et donc plus « lentement ». Si on a moins de 1Go de RAM,
HighTotal vaudra 0.


Ça a été dit dans le thread original, mais c'est bien de le rappeler : ça
vaudra également 0 sur les architectures 64 bits.

HighFree : La taille de la mémoire physique HighMem non occupée.

LowTotal : La taille de la mémoire physique LowMem en-dessous de 860Mo.

LowFree : La taille de la mémoire physique LowMem non occupée.

SwapTotal : La taille totale de la zone d'échange.

SwapFree : La taille de la zone d'échange non utilisée.

Pour résumer :

MemTotal = MemFree + champ used: de la ligne Mem:
= LowTotal + HighTotal

MemFree = LowFree + HighFree

Cached + SwapTotal = champ cached: de la ligne Mem:


Tu voulais dire SwapCached, là, non ?

Active = ActiveAnon + ActiveCache

Inactive = Inact_dirty + Inact_laundry + Inact_clean

Inact_target ~ Inact_dirty + Inact_laundry + Inact_clean


1 2