¿Cómo interpretar la salida del comando "free -m"?

48

La salida de free -mes:

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

¿Qué valor de la memoria usada es correcto, 482 o 93?

amoooc
fuente

Respuestas:

41

Tiene 112 MB de memoria completamente libre, PERO los 501 mb que ve no tienen memoria 'en caché'. Esto significa que el sistema operativo ha puesto algunas cosas en su memoria para ser más rápido. Llama a esto "usado" (por lo tanto, su número 'gratuito' es solo 112), pero en realidad está disponible para usted si lo necesita.

Esto es algo bueno, porque la memoria no utilizada es memoria inútil. La memoria en caché se puede borrar si es necesario. Aquí no se necesita el viejo "Necesito limpiar la memoria" que la gente solía hacer para Windows 95: todo está bien y feliz :)

El número que está buscando es 501 gratis (en megabytes debido a -m).

ver para referencia estas páginas:

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

Nanne
fuente
Básicamente: "solo mira la segunda línea, la que tiene los buffers / cache".
Nanne
25

Interpretación de la salida de free:
La primera línea de las freelistas de salida:

  • total Su memoria física total (suponiendo que no haya virtualización)
  • used Cuánto de eso se usa actualmente (por cualquier cosa)
  • free Cuánto de eso es completamente gratis (no se usa en absoluto)
  • shared (nunca hay nada allí, ignora esa columna)
  • buffers Memoria utilizada por las memorias intermedias del núcleo
  • cached Memoria utilizada para caché

Los dos últimos elementos, caché y búferes, es memoria que no está asignada a procesos de usuario específicos. Es memoria reservada por el núcleo para mejorar el rendimiento general, pero no es memoria de "aplicación". Estas áreas crecerán o se reducirán dependiendo de las políticas del núcleo con respecto al almacenamiento en caché, la presión de la memoria, los patrones de E / S de la aplicación, etc.

Dado que estas dos columnas no son memoria asignada por el usuario, y las zonas pueden reducirse (prácticamente a cero) si las asignaciones del usuario lo requieren, en cierto sentido son "libres": hay memoria RAM que el núcleo puede liberar si sus aplicaciones Lo necesito activamente.

Eso es lo que te dice la segunda línea. Elimina el búfer y la memoria caché de la usedcolumna (eso es lo que -significa), y los agrega ( +) a la freecolumna. (Se producirá un problema de redondeo).

(La última línea muestra el estado de su espacio de intercambio).

Cortesía: https://unix.stackexchange.com/a/33549/14497

Entonces, en su caso, 112 MB es la memoria completamente libre, y si tiene en cuenta la memoria utilizada para el almacenamiento en caché, que puede asignarse a las aplicaciones del usuario, si es necesario; entonces 501 MB es la memoria máxima real disponible para su uso.

saji89
fuente
Una persona que busca una lectura de memoria nunca está interesada (o casi nunca) en cuánta memoria es completamente libre, pero cuánto es libre de usar. la memoria en caché está 'en uso' pero también es de uso gratuito, por lo que debe mirar eso.
Nanne
No estoy realmente seguro de por qué dices eso? ¿Parece implicar que alguien eliminaría deliberadamente el caché (que de hecho es algo malo)? El punto es que cargar cosas reales (como un programa que desea usar) en esa memoria es en realidad una opción. Desea que el número 112 sea lo más bajo posible, pero eso significaría en su teoría que no puede abrir ningún programa. No es el objetivo que diría. Además: ese caché no es solo caché de disco, también es caché del sistema y cosas por el estilo
Nanne
@Nanne, está bien. Estoy de acuerdo hombre. Gracias por la corrección. He actualizado mi respuesta para reflejar lo mismo.
saji89
##### GRACIAS A TODOS @ Nanne @ devav2 @ saji89 POR COMPARTIR CONOCIMIENTOS - ERES INCREÍBLE #####
amoooc
10

La respuesta de @ saji89 es excelente, pero en estos días free -mya no imprime la -/+ buffers/cachelínea, sino que coloca la cantidad de RAM disponible en una nueva availablecolumna en la primera línea, por ejemplo:

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

Puede leer el commit to free (1) que eliminó la línea en su repositorio . También el compromiso de agregar la nueva availablecolumna .

Paul A Jungwirth
fuente
4

free El comando muestra la información sobre la memoria y el espacio de intercambio no utilizados y utilizados.

A continuación se muestra la explicación proporcionada por http://www.linfo.org/free.html

La primera fila, denominada Mem , muestra la utilización de la memoria física, incluida la cantidad de memoria asignada a las memorias intermedias y los cachés. Un búfer, también llamado memoria de búfer, generalmente se define como una parte de la memoria que se reserva como un lugar de almacenamiento temporal para los datos que se envían o reciben de un dispositivo externo, como un HDD, teclado, impresora o red.

La segunda línea de datos, que comienza con - / + buffers / cache , muestra la cantidad de memoria física actualmente dedicada al caché del buffer del sistema. Esto es particularmente significativo con respecto a los programas de aplicación, ya que todos los datos a los que se accede desde los archivos en el sistema que se realizan mediante el uso de las llamadas al sistema read () y write () pasan a través de este caché. Este caché puede acelerar enormemente el acceso a los datos al reducir o eliminar la necesidad de leer o escribir en el HDD u otro disco.

La tercera fila, que comienza con Swap , muestra el espacio de intercambio total, así como la cantidad que está actualmente en uso y la cantidad disponible.

Analicemos el uso de memoria de su sistema

Ha utilizado el freecomando con la opción '-m', que se utiliza para mostrar el resultado en megabytes

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

La memoria total es 595 (usada + gratis)

Usado: 482 Gratis: 112

Su sistema utiliza 482 MB de los 595 MB, en el que solo los programas activos usan 93 MB y los 324 MB restantes están en caché

Entonces, cuando ejecute cualquier programa en el futuro, diga cuál requiere más 120 MB. Se proporcionarán todos los 112 MB (actualmente libres) y los 8 MB restantes se tomarán del búfer / caché del programa no activo.

Editar : Encontré este enlace , que proporciona una buena explicación.

devav2
fuente
No creo que esto sea correcto. Si descarta el caché, tiene 93mb utilizados, por lo que le quedan 501.
Nanne
¿Por qué crees que no es correcto? La memoria libre en el sistema OP es de 112 MB + 324 MB (que se almacena en caché). Entonces, cuando se inicia un nuevo programa, primero usará 112 MB y luego el caché.
devav2
básicamente, porque 595-93=501 y (más o menos 1mb para redondear), y se lee como si fuera 112el número que crees que está buscando el operador.
Nanne
501 es correcto y eso es lo que estoy tratando de explicar. De 595, se utilizan 482. En el que solo 93 es la memoria activa utilizada por los programas. Entonces 112 es el + disponible gratis, si se necesita más, la memoria se puede tomar del caché, que se usaba anteriormente y actualmente no está activo.
devav2
ok, de acuerdo entonces :)
Nanne