web-dev-qa-db-fra.com

Comment interpréter la sortie de la commande "free -m"?

Le résultat de free -m est:

                     total    used    free    shared  buffers  cached
Mem:                  595      482     112         0       63     324
-/+ buffers/cache:              93     501
swap:                   0        0       0

Quelle valeur de la mémoire utilisée est correcte, 482 ou 93?

48
amoooc

Vous avez 112 Mo de mémoire totalement libre, MAIS les 501 Mo que vous voyez sont sans mémoire 'en cache'. Cela signifie que le système d'exploitation a mis des éléments dans votre mémoire pour être plus rapide. Il appelle cela "utilisé" (votre numéro "gratuit" n'est donc que 112), mais il est effectivement disponible si vous en avez besoin.

C'est une bonne chose, car la mémoire non utilisée est une mémoire inutile. La mémoire en cache peut être effacée si nécessaire. L'ancien "J'ai besoin de nettoyer la mémoire" que les gens font pour Windows 95 n'est pas nécessaire ici: tout va bien et heureux :)

Le nombre que vous recherchez est 501 gratuitement (en mégaoctets en raison de -m).

voir pour référence ces pages:

http://www.linuxatemyram.com/
http://www.itworld.com/it-managementstrategy/280695/making-sense-memory-usage-linux

38
Nanne

Interprétation de la sortie de free:
La première ligne de la sortie free répertorie:

  • total Votre mémoire totale, physique (en l’absence de virtualisation)
  • used Quelle quantité de celle-ci est actuellement utilisée (par n'importe quoi)
  • free Combien de cela est totalement gratuit (pas utilisé du tout)
  • shared (jamais rien là-bas, ignorez cette colonne)
  • buffers Mémoire utilisée par les tampons du noyau
  • cached Mémoire utilisée pour le cache

Les deux derniers éléments, cache et tampons, correspondent à de la mémoire qui n'est pas allouée à des processus utilisateur spécifiques. C'est une mémoire réservée par le noyau pour améliorer les performances globales, mais ce n'est pas de la mémoire "d'application". Ces zones augmenteront ou diminueront en fonction des politiques du noyau en matière de mise en cache, de pression de mémoire, de schémas d'E/S d'application, etc.

Étant donné que ces deux colonnes ne sont pas de la mémoire allouée par l'utilisateur et que les zones peuvent être réduites (pratiquement à zéro) si les affectations utilisateur l'exigent, elles sont en quelque sorte "libres" - il y a RAM pouvant être libérées. par le noyau si vos applications en ont activement besoin.

C'est ce que la deuxième ligne vous dit. Il supprime la mémoire tampon et la mémoire cache de la colonne used (c'est ce que signifie -) et les ajoute (+) à la colonne free. (Le problème d'arrondi se produira.)

(La dernière ligne indique l'état de votre espace d'échange.)

Courtoisie: https://unix.stackexchange.com/a/33549/14497

Ainsi, dans votre cas , 112 Mo correspond à la mémoire entièrement libre, et si vous prenez en compte la mémoire utilisée pour la mise en cache, celle-ci peut être allouée aux applications utilisateur. , si besoin; then 501 Mo est la mémoire maximale réelle disponible pour utilisation.

25
saji89

La réponse de @ saji89 est excellente, mais de nos jours, free -m n'imprime plus la ligne -/+ buffers/cache, mais place plutôt la quantité de RAM disponible dans une nouvelle colonne available sur la première ligne, par exemple:

ubuntu@pg_master:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:          61406        1571         506       17131       59328       42150
Swap:             0           0           0
ubuntu@pg_master:~$ free -V
free from procps-ng 3.3.10

Vous pouvez lire le commit to free (1) qui a supprimé la ligne dans leur repo . Aussi la validation pour ajouter la nouvelle colonne available .

10
Paul A Jungwirth

free affiche les informations sur la mémoire utilisée et inutilisée ainsi que sur l’espace de permutation.

Ci-dessous l'explication fournie par http://www.linfo.org/free.html

La première ligne, intitulée Mem , affiche l'utilisation de la mémoire physique, y compris la quantité de mémoire allouée aux mémoires tampon et aux caches. Une mémoire tampon, également appelée mémoire tampon, est généralement définie comme une partie de la mémoire réservée comme emplacement de stockage temporaire pour les données envoyées ou reçues par un périphérique externe, tel qu'un disque dur, un clavier, une imprimante ou un réseau.

La deuxième ligne de données, qui commence par -/+ buffers/cache , indique la quantité de mémoire physique actuellement consacrée au cache de la mémoire tampon du système. Cela est particulièrement utile en ce qui concerne les programmes d’application, car toutes les données accédées à partir de fichiers sur le système et exécutées via l’utilisation des appels système read () et write () traversent ce cache. Ce cache peut considérablement accélérer l’accès aux données en réduisant ou en éliminant le besoin de lire ou d’écrire sur le disque dur ou un autre disque.

La troisième ligne, qui commence par Swap , indique l'espace de swap total, ainsi que la quantité actuellement utilisée et la quantité encore disponible.

Permet d'analyser l'utilisation de la mémoire de votre système

Vous avez utilisé la commande free avec l'option '-m', qui permet d'afficher le résultat en mégaoctets.

-m, --mega
              Display the amount of memory in megabytes.

La mémoire totale est 595 (Utilisé + libre)

Utilisé: 482 Gratuit: 112

Votre système utilise 482 Mo sur 595 Mo. Dans les systèmes actifs, seuls 93 Mo sont utilisés par les programmes actifs et 324 Mo restants sont en cache.

Ainsi, lorsque vous exécuterez n’importe quel programme à l’avenir, dites qu’il faut plus de 120 Mo. Tous les 112 Mo (actuellement disponibles) seront attribués et les 8 Mo restants seront extraits du tampon/cache de programme non actif.

Edit : Trouvé ceci lien , ce qui fournit une bonne explication.

4
devav2