Cet article présente les principes et les opérations pratiques du mécanisme de mémoire Linux, de l'échange de mémoire virtuelle, de la libération de tampon/cache, etc.
1. Quel est le mécanisme de mémoire de Linux ?
2. Quand Linux a-t-il commencé à utiliser la mémoire virtuelle (swap) ?
3. Comment libérer de la mémoire ? 4. Comment libérer le swap ?
Nous savons que la lecture et l'écriture de données directement à partir de la mémoire physique sont beaucoup plus rapides que la lecture et l'écriture de données à partir du disque dur. Par conséquent, nous espérons que toutes les lectures et écritures de données seront effectuées en mémoire et que la mémoire sera limitée. conduit aux concepts de mémoire physique et de mémoire virtuelle.
La mémoire physique est la taille de la mémoire fournie par le matériel du système. Par rapport à la mémoire physique, il existe un concept de mémoire virtuelle sous Linux. La mémoire virtuelle est une stratégie proposée pour répondre au manque de mémoire physique. l'utilisation d'un morceau de mémoire logique virtualisé par l'espace disque. L'espace disque utilisé comme mémoire virtuelle est appelé espace d'échange.
En tant qu'extension de la mémoire physique, Linux utilisera la mémoire virtuelle de la partition de swap lorsque la mémoire physique est insuffisante. Plus précisément, le noyau écrira les informations du bloc de mémoire temporairement inutilisées dans l'espace de swap. la mémoire est libérée, cette mémoire peut être utilisée à d'autres fins. Lorsque le contenu original est nécessaire, les informations seront à nouveau lues de l'espace d'échange dans la mémoire physique.
La gestion de la mémoire de Linux adopte un mécanisme d'accès par pagination. Afin de garantir que la mémoire physique peut être pleinement utilisée, le noyau échangera automatiquement les blocs de données rarement utilisés dans la mémoire physique vers la mémoire virtuelle au moment approprié, tandis que les blocs de données fréquemment utilisés le seront. automatiquement échangées dans la mémoire virtuelle au moment approprié. Les informations utilisées sont conservées dans la mémoire physique.
Pour avoir une compréhension approfondie du mécanisme de fonctionnement de la mémoire Linux, vous devez connaître les aspects suivants :
Le système Linux effectuera des opérations d'échange de pages de temps en temps pour maintenir autant de mémoire physique libre que possible, même s'il n'y a rien. qui nécessite de la mémoire, Linux Les pages de mémoire temporairement inutilisées seront également remplacées. Cela évite le temps nécessaire à l’attente de l’échange.
L'échange de pages sous Linux est conditionnel. Toutes les pages ne sont pas échangées vers la mémoire virtuelle lorsqu'elles ne sont pas utilisées. Le noyau Linux échange uniquement certains fichiers de pages rarement utilisés vers la mémoire virtuelle en fonction de l'algorithme "le plus récemment utilisé". ce phénomène : Linux a encore beaucoup de mémoire physique, mais beaucoup d'espace de swap est également utilisé. En fait, cela n'est pas surprenant.Par exemple, lorsqu'un processus qui occupe beaucoup de mémoire doit consommer beaucoup de ressources mémoire lors de son exécution, certains fichiers d'échange inhabituels seront échangés dans la mémoire virtuelle, mais plus tard, ce processus qui occupe beaucoup Des ressources mémoire seront échangées. Lorsque le processus se termine et qu'une grande partie de la mémoire est libérée, le fichier d'échange qui vient d'être échangé ne sera pas automatiquement échangé dans la mémoire physique. À moins que cela ne soit nécessaire, la mémoire physique du système sera beaucoup plus libre. en ce moment, et l'espace d'échange est également utilisé. Le phénomène que nous venons de mentionner s'est produit. Il n’y a pas de quoi s’inquiéter à ce stade, tant que vous savez ce qui se passe.
Les pages de l'espace d'échange seront d'abord échangées vers la mémoire physique lors de leur utilisation. S'il n'y a pas assez de mémoire physique pour accueillir ces pages à ce moment-là, elles seront immédiatement échangées. Par conséquent, il se peut qu'il n'y ait pas assez d'espace. dans la mémoire virtuelle pour stocker Ces pages d'échange finiront par causer des problèmes tels que de faux plantages et des anomalies de service sous Linux. Bien que Linux puisse récupérer tout seul dans un certain laps de temps, le système récupéré est fondamentalement inutilisable.
Par conséquent, il est très important de planifier et de concevoir correctement l'utilisation de la mémoire Linux.
Dans le système d'exploitation Linux, lorsqu'une application a besoin de lire des données dans un fichier, le système d'exploitation alloue d'abord de la mémoire et lit les données à partir de ce dernier. le disque dans ces mémoires, puis distribue les données à l'application ; lorsqu'il est nécessaire d'écrire des données dans un fichier, le système d'exploitation alloue d'abord de la mémoire pour recevoir les données utilisateur, puis écrit les données de la mémoire sur le disque. Cependant, s'il y a une grande quantité de données qui doivent être lues du disque vers la mémoire ou écrites de la mémoire vers le disque, les performances de lecture et d'écriture du système deviennent très faibles, car s'il lit des données depuis le disque ou écrire des données sur le disque, c'est un processus très long qui consomme du temps et des ressources. Dans ce cas, Linux a introduit les tampons et les mécanismes de mise en cache.
Les tampons et la mise en cache sont deux opérations de mémoire, utilisées pour enregistrer les fichiers et les informations sur les attributs de fichiers qui ont été ouverts par le système. De cette façon, lorsque le système d'exploitation a besoin de lire certains fichiers, il recherchera d'abord dans les tampons et les zones de mémoire mises en cache. .S'ils sont trouvés, ils seront lus directement. Si les données requises ne sont pas trouvées, elles seront lues à partir du disque. Il s'agit du mécanisme de mise en cache du système d'exploitation. Grâce à la mise en cache, les performances du système d'exploitation sont grandement améliorées. Mais le contenu des tampons et des tampons mis en cache est différent.
Les tampons sont utilisés pour mettre en mémoire tampon les périphériques de blocage. Ils enregistrent uniquement les métadonnées du système de fichiers et le suivi des pages en vol, tandis que le cache est utilisé pour mettre les fichiers en mémoire tampon. Pour faire plus simple : les tampons sont principalement utilisés pour stocker le contenu du répertoire, les attributs et autorisations des fichiers, etc. Et le cache est directement utilisé pour mémoriser les fichiers et programmes que nous avons ouverts.
Afin de vérifier si notre conclusion est correcte, vous pouvez ouvrir un très gros fichier via vi pour voir les modifications dans le cache, puis vi à nouveau le fichier pour ressentir les similitudes et les différences dans la vitesse de son ouverture deux fois, et si c'est la deuxième fois qu'il est ouvert nettement plus vite que la première fois ? Exécutez ensuite la commande suivante :
find / -name .conf pour voir si la valeur des tampons change, puis exécutez la commande find à plusieurs reprises pour voir la différence de vitesse d'affichage entre les deux fois.
[root@wenwen ~]# cat /proc/sys/vm/swappiness 60
Le 60 ci-dessus signifie que le swap sera utilisé lorsque 40 % de la mémoire physique est utilisée (reportez-vous aux informations réseau : lorsque la mémoire physique restante est inférieure à 40 % (40=100-60), le l'espace d'échange sera utilisé) Lorsque swappiness = 0, cela signifie que la mémoire physique est utilisée au maximum, puis lorsque swappiness = 100, cela signifie que la partition d'échange est activement utilisée et les données sur la partition d'échange. la mémoire est déplacée vers l'espace d'échange en temps opportun.
Plus la valeur est grande, plus vous êtes susceptible d'utiliser le swap. Il peut être fixé à 0, ce qui n'interdit pas l'utilisation du swap, mais minimise seulement la possibilité d'utiliser le swap.
通常情况下:swap分区设置建议是内存的两倍 (内存小于等于4G时),如果内存大于4G,swap只要比内存大就行。另外尽量的将swappiness调低,这样系统的性能会更好。
B.修改swappiness参数
临时性修改: [root@wenwen ~]# sysctl vm.swappiness=10 vm.swappiness = 10 [root@wenwen ~]# cat /proc/sys/vm/swappiness 10
永久性修改:
[root@wenwen ~]# vim /etc/sysctl.conf 加入参数: vm.swappiness = 35 然后在直接: [root@wenwen ~]# sysctl -p /etc/sysctl.conf 查看是否生效: cat /proc/sys/vm/swappiness 35
立即生效,重启也可以生效。
一般系统是不会自动释放内存的关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就是不释放缓存。他的值可以为0~3之间的任意数字,代表着不同的含义:
0 – 不释放1 – 释放页缓存2 – 释放dentries和inodes3 – 释放所有缓存
实操:
很明显多出来很多空闲的内存了吧
Prérequis : Tout d'abord, assurez-vous que la mémoire restante est supérieure ou égale à l'utilisation du swap, sinon il plantera ! Selon le mécanisme de mémoire, une fois la partition d'échange libérée, tous les fichiers stockés dans la partition d'échange seront transférés vers la mémoire physique. La libération du swap s'effectue généralement en remontant la partition de swap.
a. Vérifiez où la partition de swap actuelle est montée ? b. Arrêtez cette partition c. Vérifiez l'état : d. Vérifiez si la partition de swap est arrêtée. e. Montez le swap sur /dev/sda5 f.
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!