GNU/Linux >> Tutoriales Linux >  >> Linux

Significado de la línea buffers/cache en la salida de free

Solución 1:

Significado de los valores

La primera línea significa:

  • total :Su RAM (física) total (excluyendo una pequeña parte que el núcleo se reserva permanentemente al inicio); por eso muestra ca. 11,7 GiB y no 12 GiB, que probablemente tengas.
  • 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 fines específicos, estos valores se incluyen 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+cached y el valor original para free más la suma buffers+cached , de ahí su título. Estos nuevos valores suelen ser más significativos que los de la 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 cosas en caché, por lo que Mem: free casi siempre será muy bajo. Por lo tanto, la línea -/+ buffers/cache: se muestra porque muestra la cantidad de memoria libre cuando se ignoran 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 free valor en -/+ buffers/cache: la línea se vuelve baja.

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

  • En Linux, ¿cuál es la diferencia entre "búferes" y "caché" informados por el comando libre?
  • ¿Por qué Red Hat Linux informa menos memoria libre en el sistema de la que realmente está disponible?

Cambios en procps 3.3.10

Tenga en cuenta que la salida de free se cambió en procps 3.3.10 (lanzado en 2014). Las columnas informadas ahora son "total", "usado", "gratis", "compartido", "mejorado/caché", "disponible" , y los significados de algunos de los valores cambiaron, principalmente para explicar mejor el caché de losa del kernel de Linux.

Consulte el informe de errores de Debian n.º 565518 para conocer la motivación y ¿Qué cambios tienen en free? salida de 14.04 a 16.04 media? para obtener más información detallada.

Solución 2:

La respuesta actualmente aceptada de 2009 está desactualizada. Es importante asegurarse de que la información que obtiene sea correcta y coincida con la versión de free (distribuido en el paquete Debian procps o equivalente en su distribución). También es útil mirar la salida de man free , y también man 5 proc , que contiene información sobre /proc/meminfo , el archivo donde free obtiene sus datos de Linux.

Por defecto, free La salida está en kibibytes (1 kibibyte =1024 bytes), como puede ver en la página del manual. Prefiero usar el -h argumento, que muestra sufijos, como este:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       6.1Gi       1.9Gi       301Mi       7.5Gi       8.8Gi
Swap:         979Mi          0B       979Mi

La primera línea Mem significa:

  • total (Mem):memoria total instalada (es decir, MemTotal de /proc/meminfo ), esta toda la memoria en RAM
  • used (Mem):memoria usada, igual a total - free - buffers - cache
  • free (Mem):memoria no utilizada (es decir, MemFree ), esta es toda la memoria que no se usa para nada (incluso cachés) en RAM
  • shared (Mem):esta es la cantidad de memoria utilizada principalmente para tmpfs (Shmem )
  • buff/cache (Mem), suma de buffers y cache :<último>
  • buffers :memoria utilizada por los búferes del kernel (Buffers ), que es memoria que el kernel puede aprovechar
  • cache :memoria utilizada por la caché de página y losas (Cached y SReclaimable ). La memoria caché de la página contiene el contenido de los archivos del sistema de archivos almacenados en memoria RAM y, por lo general, es bueno que sea un número elevado. Supongo que las "losas" son una función de almacenamiento en caché similar.
  • available (Mem):esta es una estimación de la cantidad de memoria disponible para iniciar nuevas aplicaciones, sin intercambio. Incluye la mayor parte de la memoria contada en el cache (ya que la memoria caché de la página se puede eliminar para iniciar nuevas aplicaciones), pero no cuenta el intercambio (ya que generalmente es preferible no usar el espacio de intercambio lento).
  • La segunda línea es Swap . Esta es mi explicación:

    • total (Swap):esta es la cantidad total de espacio en disco reservado para swap (SwapTotal en proc/meminfo ). Puede verificar verificando que esto coincida con la salida de swapon -s .
    • used (Intercambio):la cantidad de espacio de disco de intercambio que se está utilizando actualmente. Nuevamente, puede verificar esto comparándolo con la salida de swapon -s
    • free (Intercambio):la cantidad de espacio de disco de intercambio que actualmente no se está utilizando (SwapFree en /proc/meminfo ). Es igual a total (Swap) - used (Swap)

    Linux
    1. ¿Cómo imprimir una salida de varias líneas en la misma línea?

    2. ¿Cuál es el significado de POSIX?

    3. ¿Cómo registrar el consumo de memoria en Linux?

    4. Omitir la primera línea de cualquier salida de comando de Linux

    5. Alineación con la línea de caché y conocimiento del tamaño de la línea de caché

    Usando el comando libre de Linux

    ¿Cuál es la diferencia entre el búfer y la memoria caché en Linux?

    Linux gratis muestra un alto uso de memoria pero la parte superior no

    significado de la salida auxiliar ps

    ¿Cómo puedo determinar el tamaño actual del ARC en ZFS y cómo se relaciona el ARC con la memoria caché o libre?

    ¿Puedo hacer que rsync genere solo el resumen?