Pregunta Significado de los buffers / línea caché en la salida de free


¿Por qué mi servidor muestra

            total      used      free   shared buffers    cached
    Mem: 12286456  11715372    571084        0   81912   6545228
-/+ buffers/cache:  5088232   7198224
   Swap: 24571408     54528  24516880

No tengo idea sobre el cálculo de la memoria en Linux. Creo que dice que se usa 5088232 donde 7198224 es gratis, lo que significa que en realidad consume 5GB de RAM.


150
2017-11-17 10:37


origen


serverfault.com/questions/23433/… - Kyle Brandt♦
linuxatemyram.com - Sasha


Respuestas:


Significado de los valores

La primera línea significa:

  • total: Su RAM total (física) (excluyendo un pequeño bit que el kernel se reserva permanentemente para sí mismo en el inicio); por eso se muestra ca. 11.7 GiB, y no 12 GiB, que probablemente tenga.
  • used: memoria en uso por el sistema operativo.
  • free: memoria no en uso.

total = used + free

  • shared / buffers / cached: Esto muestra el uso de la memoria para propósitos específicos, estos valores se incluyen en el valor de used.

La segunda línea da valores de primera línea ajustados. Da el valor original para used  menos la suma buffers+cached y el valor original de free  más la suma buffers+cached, de ahí su título. Estos nuevos valores suelen ser más significativos que los de primera línea.

La última línea (Swap:) proporciona información sobre el uso del espacio de intercambio (es decir, los contenidos de la memoria que se han movido temporalmente al disco).

Fondo

Para entender realmente qué significan los números, necesita un poco de información sobre el subsistema de memoria virtual (VM) en Linux. Solo una versión corta: Linux (como la mayoría de los sistemas operativos modernos) siempre intentará usar RAM libre para almacenar cosas en caché, por lo que Mem: free Casi siempre será muy bajo. Por lo tanto la linea -/+ buffers/cache: se muestra, porque muestra cuánta memoria queda libre al ignorar las cachés; los cachés se liberarán automáticamente si la memoria escasea, por lo que realmente no importan.

Un sistema Linux tiene muy poca memoria si el free valor en -/+ buffers/cache: línea baja

Para obtener más detalles sobre el significado de los números, consulte, por ejemplo, las preguntas:

Cambios en procps 3.3.10

Tenga en cuenta que la salida de free se modificó en procps 3.3.10 (lanzado en 2014). Las columnas reportadas son ahora "total", "used", "free", "shared", "buff / cache", "available", y los significados de algunos de los valores cambiaron, principalmente para explicar mejor la caché de la losa del kernel de Linux.

Ver Informe de error de Debian # 565518 por la motivación, y ¿Qué hacen los cambios en free salida de 14.04 a 16.04 significa? para más información de detalles.


215
2017-11-17 11:42



¿Podría ampliar qué tipo de cosas puede estar almacenando en caché Linux? ¿Serían archivos a los que se haya accedido o cosas de red? - CMCDragonkai
@CMCDragonkai: La respuesta a serverfault.com/questions/23433/… aborda en detalle lo que constituye "cache" y "buffer". - sleske
No creo que la declaración "total = utilizado + gratis" sea correcta, vea la siguiente salida en mi máquina: $ free -h  total used free shared buff/cache available  Mem: 3.4G 585M 152M 11M 2.6G 2.5G  Swap: 4.0G 84M 3.9G - Sebastian
@Sebastian: Ah, interesante. Parece que la salida de free fue cambiada (en 3.3.10). Edité mi respuesta para mencionar esto. Si está interesado en este cambio, considere hacer una nueva pregunta :-). - sleske
total = used + free + buff/cache - danger89


Para cualquier persona que necesite una explicación paso a paso aún más simple, verifique http://thoughtsbyclayg.blogspot.com/2008/09/display-free-memory-on-linux-ubuntu.html, su explicación me ayudó mucho.


7
2018-02-13 22:06



meta.stackexchange.com/q/8231/133242 - Matt Ball


La línea de búferes / caché muestra la cantidad de memoria que usan los programas (la primera de esas columnas), y es gratuita para que los programas la usen (segunda columna). Es un número bastante esotérico, y no es algo que realmente se vea mucho en la práctica.


2
2017-11-17 11:03



¿Y qué significa la primera línea (línea mem)? - Muahmmad Zeeshan
Que tienes 12GB de RAM instalados en el sistema, de los cuales 11.5GB se usan y 0.5GB no están en uso actualmente. Aproximadamente 82 MB de la memoria utilizada se utilizan para búferes (conexiones de red, etc.), mientras que se utilizan aproximadamente 6,5 GB para almacenar copias de datos en el disco, por lo que no será necesario volver a leer los datos si se necesitan nuevamente. - womble♦
@Muhammad: "82MB es gratis". - no, 57MiB es gratis (pero eso no importa realmente, vea mi respuesta). "Ahora todo significa que el sistema ha alcanzado sus límites" - No, en absoluto. El sistema tiene 6.9GiB en uso para el almacenamiento en caché, que se entregará fácilmente a las aplicaciones, por lo que hay mucho espacio. Además, el uso de swaps es muy bajo (solo ca. 50MiB). Si la memoria comienza a reducirse, el uso del intercambio aumentará. En este momento apenas estás utilizando la mitad de la memoria RAM que tienes. - sleske
¿Has considerado hacer una nueva pregunta en algún momento? - womble♦
No estoy de acuerdo, la línea de búferes / caché es la memoria libre real del sistema y, por lo tanto, es más relevante si desea saber si el sistema tiene espacio para los programas. - eckes