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

48

La sortie de free -mest:

                     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?

amoooc
la source

Réponses:

41

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 gratuit (en mégaoctets à cause 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

Nanne
la source
Fondamentalement: "il suffit de regarder la deuxième ligne, celle avec les tampons / cache".
Nanne
25

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

  • total Votre mémoire totale, physique (sans 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, représentent une 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 la 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 allocations de l'utilisateur l'exigent, elles sont en quelque sorte "libres". Il existe une mémoire RAM qui peut être libérée par le noyau si vos applications activement en ont besoin.

C'est ce que la deuxième ligne vous dit. Il supprime la mémoire tampon et la mémoire cache de la usedcolonne (c'est ce que l'on -entend par), et les ajoute +à la freecolonne. (Le problème d'arrondi se produira.)

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

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

Ainsi, dans votre cas, 112 Mo correspondent à la mémoire entièrement libre et, si vous prenez en compte la mémoire utilisée pour la mise en cache, vous pouvez l’allouer aux applications de l’utilisateur si nécessaire; alors 501 Mo est la mémoire maximale réelle disponible pour utilisation.

saji89
la source
Une personne à la recherche d'une mémoire ne s'intéresse jamais (ou presque jamais) à la quantité de mémoire entièrement libre, mais à la quantité d'utilisation libre. la mémoire en cache est 'en cours d'utilisation' mais est également libre d'utilisation, vous devriez donc l'examiner.
Nanne
Je ne sais pas trop pourquoi tu dis ça? Cela semble impliquer que quelqu'un supprime délibérément le cache (ce qui est effectivement une mauvaise chose)? Le fait est que le chargement de tout un contenu (comme un programme que vous souhaitez utiliser) dans cette mémoire est en réalité une option. Vous voulez que le nombre 112 soit aussi bas que possible, mais cela signifierait dans votre théorie que vous ne pouvez ouvrir aucun programme. Pas le but que je dirais. De plus, ce cache ne se limite pas au cache disque, il s'agit également du cache système et des éléments du même type
Nanne
@ Nanne, d'accord. Je suis d'accord mec. Merci pour la correction. J'ai mis à jour ma réponse pour refléter la même chose.
Saji89
##### MERCI À TOUS @ Nanne @ devav2 @ saji89 POUR LE PARTAGE DE CONNAISSANCE - VOUS ÊTES IMPRESSIONNANT #####
amoooc Le
10

La réponse de @ saji89 est excellente, mais ces jours-ci free -mn'imprime plus la -/+ buffers/cacheligne, mais place la quantité de RAM disponible dans une nouvelle availablecolonne de 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 le commit pour ajouter la nouvelle availablecolonne .

Paul A Jungwirth
la source
4

free La commande affiche les informations sur la mémoire utilisée et inutilisée et l’espace de swap.

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 tampons 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 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 du système exécutées via l'utilisation d'appels système1 de read () et de 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 total de swap, 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 freecommande 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 120 Mo supplémentaires. 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é ce lien , qui fournit une bonne explication.

devav2
la source
Je ne pense pas que c'est correct. Si vous supprimez le cache, vous utilisez 93 Mo, il vous en reste donc 501.
Nanne
Pourquoi pensez-vous que ce n'est pas correct? La mémoire disponible sur le système d'exploitation est de 112 Mo + 324 Mo (mise en cache). Ainsi, lorsqu'un nouveau programme démarre, il utilise d'abord 112 Mo, puis le cache.
devav2
en gros, parce que 595-93=501 et (donnez ou prenez 1 Mo pour les arrondis), et cela se lit un peu comme si c’était 112le nombre que vous pensez que l’opérateur recherche.
Nanne
501 est correct et c'est ce que j'essaie d'expliquer. Sur 595, 482 sont utilisés. Dans lequel seule la mémoire active utilisée par les programmes est 93. Si 112 est libre + si nécessaire davantage, la mémoire peut être extraite du cache, qui était utilisé auparavant et qui n'est actuellement pas actif.
devav2
d'accord, d'accord alors :)
Nanne