Maison  >  Article  >  Tutoriel système  >  La mémoire Linux est mangée

La mémoire Linux est mangée

PHPz
PHPzavant
2024-02-20 10:48:10672parcourir

C'est la différence entre Windows et Linux dans la gestion de la mémoire. À première vue, le système Linux mange notre mémoire (Linux a mangé ma RAM), mais en fait c'est aussi la caractéristique de sa gestion de la mémoire.

La mémoire Linux est mangée

introduction gratuite aux commandes

Ce qui suit est le résultat de l'utilisation de la commande gratuite pour afficher la mémoire de notre serveur de fichiers de laboratoire. L'option -m signifie utiliser Mo comme unité :

La mémoire Linux est mangée

La deuxième ligne de sortie indique l'utilisation de la mémoire système :

Mem : total = 3920 Mo,

utilisé(utilisé) = 1938 Mo,

libre (inactif) = 1982 Mo,

partagé (mémoire partagée) = 0 Mo,

tampons = 497 Mo,

en cache = 1235 Mo

Remarque : les quatre premiers éléments sont relativement faciles à comprendre. Il n'existe pas de mots appropriés pour traduire tampon et cache. La différence entre eux est :

.
  • Un tampon est quelque chose qui n'a pas encore été « écrit » sur le disque.
  • Un cache est quelque chose qui a été « lu » sur le disque et stocké pour une utilisation ultérieure.

C'est-à-dire que le tampon est utilisé pour stocker les données à afficher sur le disque, tandis que le cache correspond aux données lues sur le disque et stockées dans la mémoire pour une utilisation ultérieure. Ils sont introduits pour fournir des performances d’E/S.

La troisième ligne de sortie indique ce qui est obtenu en fonction de la deuxième ligne -/+ buffers/cache :

– tampons/cache utilisés = Mémoire utilisée – tampons – mis en cache = 1938 Mo – 497 Mo – 1235 Mo = 205 Mo

+ tampons/cache libre = Mémoire libre + tampons + cache = 1982 Mo + 497 Mo + 1235 Mo = 3714 Mo

La troisième ligne de sortie indique l'utilisation de la partition swap :

Échange : total = 4095 Mo

utilisé(utilisé) = 0 Mo

gratuit (inactif)= 4095 Mo

Étant donné que le système dispose actuellement de suffisamment de mémoire, la partition d'échange n'est pas utilisée.

La troisième ligne des résultats de sortie ci-dessus peut être plus difficile à comprendre. Pourquoi cette ligne de données devrait-elle être affichée à l'utilisateur ? Que signifie l'utilisation de la mémoire moins la mémoire tampon/mise en cache du système ? la mémoire signifie Que signifie la mémoire ?

Classification de la mémoire

Nous divisons la mémoire en trois catégories, avec des noms différents pour son utilisation du point de vue des utilisateurs et des systèmes d'exploitation :

Quelque chose dans le tableau ci-dessus représente la mémoire des "buffers/cached" dans la commande free Puisque cette mémoire est bien utilisée du point de vue du système d'exploitation, mais si l'utilisateur souhaite l'utiliser, cette mémoire peut être rapidement recyclée par. l'utilisateur. Le programme l'utilise, donc du point de vue de l'utilisateur, cette mémoire doit être classée comme inactive.

Retournez aux résultats générés par la commande free. Les résultats affichés dans la troisième ligne doivent être compréhensibles. Les chiffres de cette ligne représentent l'utilisation de la mémoire système du point de vue de l'utilisateur. Par conséquent, si vous utilisez la commande top ou free pour vérifier la quantité de mémoire restante dans le système, vous devez en fait ajouter la mémoire libre à la mémoire tampon/mise en cache, c'est-à-dire la mémoire libre réelle du système.

buffers/avantages mis en cache

La gestion de la mémoire Linux a fait de nombreuses conceptions soignées. En plus de la mise en cache dentry (utilisée dans VFS pour accélérer la conversion des noms de chemin de fichier en inodes), elle adopte également deux méthodes de cache principales : le cache tampon et le cache de page. est d'améliorer les performances des E/S du disque. Les données lues à partir d'un périphérique à bloc lent sont temporairement conservées en mémoire. Même si les données ne sont plus nécessaires à ce moment-là, la prochaine fois que l'application accédera aux données, elles pourront être lues directement à partir de la mémoire, contournant ainsi les périphériques à bloc lent. , améliorant ainsi les performances globales du système.

Linux utilisera pleinement cette mémoire libre. L'idée de conception est que si la mémoire est libre, il est préférable de l'utiliser pour mettre en cache plus de données la prochaine fois que le programme accédera à nouveau aux données, ce sera plus rapide. Le programme veut utiliser de la mémoire et la mémoire du système est insuffisante. À ce stade, au lieu d'utiliser la partition d'échange, une partie du cache est rapidement recyclée et laissée aux programmes utilisateur.

Par conséquent, on peut voir que les tampons/mises en cache sont vraiment bénéfiques et inoffensifs. Le véritable inconvénient peut donner aux utilisateurs l'illusion que Linux consomme de la mémoire !

En fait, ce n'est pas le cas. Linux n'a pas consommé votre mémoire. Tant que la partition d'échange n'a pas été utilisée et que votre mémoire est faible, vous devriez vous sentir chanceux car Linux met en cache une grande quantité de données. j'en profiterai la prochaine fois.

Preuve expérimentale

Les expériences suivantes sont utilisées pour vérifier la conclusion ci-dessus :

Nous lisons un gros fichier l'un après l'autre et comparons les pratiques de lecture deux fois :

1. Générez d’abord un gros fichier de 1 Go

La mémoire Linux est mangée

2. Vider le cache

La mémoire Linux est mangée

3. Lisez ce fichier et testez le temps que cela prend

La mémoire Linux est mangée

4. Relisez le fichier et testez le temps passé

La mémoire Linux est mangée

Comme le montre ce qui précède, il faut environ 18 secondes pour lire ce fichier 1G pour la première fois, mais il ne faut que 0,3 seconde pour le lire la deuxième fois, ce qui représente une amélioration de 60 fois

 !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer