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

168

¿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 de calcular la memoria en Linux. Creo que dice que 5088232 se usa donde 7198224 es gratis, lo que significa que en realidad está consumiendo 5 GB de RAM.

Muahmmad Zeeshan
fuente

Respuestas:

232

Significado de los valores

La primera línea significa:

  • total: Su RAM (física) total (excluyendo un pequeño bit que el núcleo se reserva permanentemente para sí mismo al inicio); es por eso que 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 memoria para propósitos específicos, estos valores están incluidos en el valor de used.

La segunda línea da los valores de la primera línea ajustados. Da el valor original para used menos la suma buffers+cachedy el valor original para free más la suma buffers+cached, de ahí su título. Estos nuevos valores son a menudo 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, el contenido de la memoria que se ha movido temporalmente al disco).

Antecedentes

Para comprender realmente lo que 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 en caché, por Mem: freelo que casi siempre será muy bajo. Por lo tanto, -/+ buffers/cache:se muestra la línea , porque muestra la cantidad de memoria libre al ignorar los 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 freevalor en -/+ buffers/cache:línea es bajo.

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 freese modificó en procps 3.3.10 (lanzado en 2014). Las columnas informadas ahora son "total", "usado", "libre", "compartido", "buff / cache", "disponible" , y los significados de algunos de los valores cambiaron, principalmente para tener mejor en cuenta la losa del kernel de Linux cache.

Consulte el informe de errores de Debian # 565518 para conocer la motivación, y ¿qué significan los cambios en la freesalida de 14.04 a 16.04? Para más información detallada.

sleske
fuente
¿Podría ampliar qué tipo de cosas Linux puede estar almacenando en caché? ¿Serán archivos a los que se haya accedido o cosas de la red?
CMCDragonkai
@CMCDragonkai: La respuesta a serverfault.com/questions/23433/… aborda en detalle qué constituye "caché" y "búfer".
sleske
55
No creo que la afirmación "total = usado + libre" 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 se cambió la salida de free (en 3.3.10). Edité mi respuesta para mencionar esto. Si está interesado en este cambio, considere hacer una nueva pregunta :-).
sleske
3
total = used + free + buff/cache
peligro89
2

La línea de búferes / caché le muestra cuánta memoria usan los programas (primera de esas columnas), y los programas la pueden usar gratis (segunda columna). Es un número bastante esotérico, y no es algo que realmente mirarías mucho en la práctica.

womble
fuente
¿Y qué significa la primera línea (línea mem)
Muahmmad Zeeshan
8
Que tienes 12 GB de RAM instalados en el sistema, 11,5 GB de los cuales se usan y 0,5 GB aproximadamente no se usan actualmente. Aproximadamente 82 MB de la memoria utilizada se utiliza para memorias intermedias (conexiones de red, etc.), mientras que se utilizan aproximadamente 6,5 GB para almacenar copias de datos en el disco, por lo que los datos no tendrán que volver a leerse si es necesario nuevamente.
womble
3
@Muhammad: "82MB es gratis". - no, 57MiB es gratis (pero eso realmente no importa, mira 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 dará fácilmente a las aplicaciones, por lo que hay mucho espacio. Además, el uso de intercambio es muy bajo (solo unos 50MiB). Si la memoria comienza a ajustarse, aumentará el uso de intercambio. En la actualidad, apenas usa la mitad de la RAM que tiene.
sleske
44
¿Has considerado hacer una nueva pregunta en algún momento?
womble
3
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 programas.
eckes