Sous Linux, free est une commande intégrée pour vérifier l'état d'utilisation de la mémoire. Elle peut afficher l'utilisation de la mémoire physique du système, de la mémoire virtuelle (partition d'échange), de la mémoire partagée et du cache système. La syntaxe est "free [option]. "; commande libre La sortie est très similaire à la partie mémoire de la commande top.
L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.
La commande gratuite est utilisée pour afficher l'état de la mémoire système, y compris l'utilisation de la mémoire physique du système, de la mémoire virtuelle (partition swap swap), de la mémoire partagée et du cache système, sa sortie est la même que la commande top. La partie mémoire est très similaire. Le format de base de la commande
free est le suivant :
# free [选项]
Le tableau 1 répertorie les options couramment utilisées de cette commande et leurs significations respectives.
Option | Signification |
-b | Affiche l'utilisation de la mémoire en octet (octet). |
-k | Affiche l'utilisation de la mémoire en Ko. Cette option est l'option par défaut de la commande gratuite. |
-m | Affiche l'utilisation de la mémoire en Mo. |
-g | Affiche l'utilisation de la mémoire en Go. |
-t | Dans le résultat final de la sortie, affichez la quantité totale de mémoire et la partition d'échange. |
-o | Ne pas afficher la colonne du tampon système. |
-s Secondes d'intervalle | Continuez à afficher l'utilisation de la mémoire en fonction de l'intervalle spécifié. |
free 命令可以显示系统中剩余及已用的物理内存和交换内存,以及共享内存和被核心使用的缓冲区。
如果加上 -h 选项,输出的结果会友好很多:
有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数:
$ free -h -s 3
La commande ci-dessus affichera l'utilisation de la mémoire toutes les 3 secondes jusqu'à ce que vous appuyiez sur ctrl + c.
Étant donné que la commande free elle-même est relativement simple, cet article se concentrera sur la façon de comprendre l'utilisation actuelle de la mémoire du système via la commande free.
Expliquons d'abord le contenu de la sortie :
Mem La deuxième ligne (la deuxième ligne) est l'utilisation de la mémoire. La ligne
Swap (la troisième ligne) est l'utilisation de l'espace d'échange. La colonne
total affiche la mémoire physique totale disponible et la taille de l'espace d'échange du système. Les colonnes
used affichent la mémoire physique et l'espace d'échange qui ont été utilisés. La colonne
free indique la quantité de mémoire physique et d'espace d'échange disponible. La colonne
shared indique la taille de la mémoire physique partagée. La colonne
buff/cache indique la taille de la mémoire physique utilisée par le tampon et le cache. La colonne
available indique la quantité de mémoire physique qui peut également être utilisée par les applications.
Je pense que le résultat ci-dessus peut nous aider à comprendre l'état de la mémoire du système seulement après avoir compris certains concepts de base.
Laissez-moi d'abord poser une question : le tampon et le cache devraient être deux types de mémoire, mais pourquoi la commande free les rassemble-t-elle ? Répondre à cette question nécessite une certaine préparation. Clarifions d’abord la signification du tampon et du cache.
tampon Dans le système d'exploitation, il fait référence au cache tampon, qui est généralement traduit par « tampon » en chinois. Pour comprendre les buffers, deux autres concepts doivent être compris : « secteur » et "morceau". Un secteur est la plus petite unité d'adressage d'un appareil, également appelée « secteur dur » ou « bloc d'appareil ». Le bloc est la plus petite unité d'adressage du système de fichiers dans le système d'exploitation, également appelée « bloc de fichiers » ou « E/S ». "bloc". Chaque bloc contient un ou plusieurs secteurs, mais ne peut pas être plus grand qu'une page, donc une page peut contenir un ou plusieurs blocs en mémoire, lorsqu'un bloc est chargé en mémoire, il est stocké dans une zone tampon. correspond à un bloc, ce qui équivaut à la représentation d'un bloc disque en mémoire (l'image ci-dessous provient d'Internet) :
A noter que le cache tampon n'a que la notion de blocs et aucun fichier . Concept, il déplace simplement les blocs du disque directement dans la mémoire sans se soucier du format du fichier stocké dans le bloc.
cache fait référence au cache de pages dans le système d'exploitation, et est généralement traduit par. "page cache" en chinois. ". Le cache de pages est un cache disque implémenté par le noyau. Il est principalement utilisé pour réduire les opérations d'E/S sur le disque. Plus précisément, il transforme l'accès au disque en accès au disque par mise en cache. les données du disque dans la mémoire physique. Accès à la mémoire physique. Le cache de pages met en cache les pages de mémoire provenant de la lecture et de l'écriture de fichiers ordinaires, de fichiers de périphérique bloc (cela fait référence au cache tampon) et de fichiers mappés en mémoire. Cache de pages. Nous pouvons comprendre le cache des fichiers ordinaires comme ceci : lorsque le noyau veut lire un fichier (comme
/etc/hosts), il vérifiera d'abord si les données de ce fichier sont déjà dans le cache des pages. Si tel est le cas, abandonnez l’accès au disque et lisez directement depuis la mémoire. Ce comportement est appelé accès au cache. Si les données ne sont pas dans le cache, cela signifie un échec du cache et le noyau planifiera le bloc.
Les opérations d'E/S lisent les données du disque. Le noyau place ensuite les données lues dans le cache des pages. Ce cache cible les fichiers reconnus par le système de fichiers (tels que /etc/hosts).
Le cache des fichiers de périphérique de bloc du cache de page est le cache tampon que nous avons présenté plus tôt. Parce que les blocs de disque individuels sont également stockés dans le cache de pages via le tampon (le tampon est finalement hébergé par le cache de pages).
Alors pourquoi
La commande gratuite n'est-elle pas directement appelée cache au lieu de buff/cache ? En effet, les implémentations de tampon et de cache de pages ne sont pas intrinsèquement unifiées. sous Linux
Noyau 2.4
C’est seulement alors qu’ils pourront être unifiés. Il y avait deux caches disque distincts dans les noyaux précédents : le cache de pages et le cache de tampons. Le premier met en cache les pages et le second met en cache les tampons. Une fois que vous connaissez l’histoire, les noms des colonnes dans la sortie n’ont plus d’importance. 在 free 命令的输出中,有一个 free 列,同时还有一个 available 列。这二者到底有何区别? swap
space 是磁盘上的一块区域,可以是一个分区,也可以是一个文件。所以具体的实现可以是 swap 分区也可以是 swap
文件。当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问
swap 上存储的内容时,再将 swap
上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。 现在的机器一般都不太缺内存,如果系统默认还是使用了
swap 是不是会拖累系统的性能?理论上是的,但实际上可能性并不是很大。并且内核提供了一个叫做 swappiness
的参数,用于配置需要将内存中不常用的数据移到 swap 中去的紧迫程度。这个参数的取值范围是 0~100,0 告诉内核尽可能的不要将内存数据移到
swap 中,也即只有在迫不得已的情况下才这么做,而 100 告诉内核只要有可能,尽量的将内存中不常访问的数据移到 swap 中。在
ubuntu 系统中,swappiness 的默认值是 60。如果我们觉着内存充足,可以在 /etc/sysctl.conf 文件中设置
swappiness: 如果系统的内存不足,则需要根据物理内存的大小来设置交换空间的大小。具体的策略网上有很丰富的资料,这里笔者不再赘述。 其实 free 命令中的信息都来自于 /proc/meminfo 文件。/proc/meminfo 文件包含了更多更原始的信息,只是看起来不太直观:
有兴趣的同学可以直接查看这个文件。 free 命令是一个既简单又复杂的命令。简单是因为这个命令的参数少,输出结果清晰。说它复杂则是因为它背后是比较晦涩的操作系统中的概念,如果不清楚这些概念,即便看了 free 命令的输出也 get 不到多少有价值的信息。 相关推荐:《Linux视频教程》free 与 available
free
是真正尚未被使用的物理内存数量。至于 available 就比较有意思了,它是从应用程序的角度看到的可用内存数量。Linux
内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,就是我们介绍的 buffer 和 cache。所以对于内核来说,buffer 和
cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache
中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available = free + buffer + cache。请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差。交换空间(swap space)
vm.swappiness=10
/proc/meminfo 文件
$ cat /proc/meminfo
总结
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!