Cómo calcular el uso de memoria del sistema Linux

Cómo calcular el uso de memoria del sistema Linux

Perspectiva de DevOps de Hao Chaoyang

Prefacio

A medida que la compañía usa gradualmente su propia plataforma en la nube basada en Docker, el sistema de monitoreo se migra gradualmente de open-falcon a Prometheus. Escribí un análisis automático del rendimiento del servidor de cada línea de negocio en el plazo de un mes y lo envié automáticamente a la persona a cargo de la línea de negocio correspondiente a las 10:30 cada mañana. Los datos se obtienen a través de la API de Prometheus. Entre ellos, existen grandes diferencias en el uso de la memoria. Los métodos de cálculo utilizados por las dos plataformas son muy diferentes, y el lado empresarial a menudo hace esta pregunta.
El método de cálculo de uso de memoria de open-falcon es: (memtotal- (free + buffer + cache)) / memtotal
El método de cálculo de uso de memoria de Prometheus es: (memtotal-available) / memtotal
La siguiente es la misma máquina, las dos plataformas seguir gráfico de uso de memoria del día algoritmos respectivos
Cómo calcular el uso de memoria del sistema Linux
open-falcon internet mostrar
Cómo calcular el uso de memoria del sistema Linux
gráfico de uso de memoria de acuerdo Prometheus internet (memtotal-available) / memtotal método de cálculo de la
Cómo calcular el uso de memoria del sistema Linux
plataforma Prometheus de acuerdo con (memtotal- (free + buffer + cache )) El gráfico obtenido por el El método de cálculo / memtotal puede ser consistente con el gráfico de la plataforma open-falcon.

Comprender las métricas de memoria

Si desea saber qué método de cálculo es más adecuado, debe tener una comprensión correcta de los indicadores de memoria.

libre

La definición de gratis en el manual gratuito es la siguiente:


free   Unused memory (MemFree and SwapFree in /proc/meminfo)

Free es la memoria no utilizada, correspondiente a MemFree de / proc / meminfo.
La definición de MemFree en el manual de proc es:


MemFree %lu
   The sum of LowFree+HighFree.

búfer 和 caché

Si desea saber qué fórmula utilizar para el cálculo es más apropiada, primero debe comprender el significado de los diversos indicadores de la memoria. Primero, entendamos el búfer y el caché.
Puede encontrar la introducción de búfer y caché a través del manual gratuito:


buffers    Memory used by kernel buffers (Buffers in /proc/meminfo)

cache  Memory used by the page cache and slabs (Cached and Slab in /proc/meminfo)

Saber:

  • Buffers es la memoria utilizada por el búfer del kernel, correspondiente al valor de los búferes en / proc / meminfo
  • Cache es la memoria utilizada por el caché de la página del kernel y Slab, que corresponde a la suma de Cached y Slab de / proc / meminfo.
    Aquí solo nos dice que los valores obtenidos a través de free provienen de / proc / meminfo, y más Buffers específicos, Cached y Slab El significado de, todavía no se dijo en detalle. ¿Cómo sabes una definición más detallada? Podemos mirar el manual del sistema de archivos proc.

Buffers %lu
    Relatively temporary storage for raw disk blocks that shouldn't get tremendously large (20MB or so).

Cached %lu
     In-memory cache for files read from the disk (the page cache).  Doesn't include SwapCached.

.....
Slab %lu
    In-kernel data structures cache.
SReclaimable %lu (since Linux 2.6.19)
    Part of Slab, that might be reclaimed, such as caches.
SUnreclaim %lu (since Linux 2.6.19)
    Part of Slab, that cannot be reclaimed on memory pressure.     

A través de la documentación del sistema de archivos proc, podemos saber:

  • Los búferes son un almacenamiento temporal de bloques de disco originales, es decir, que se utilizan para almacenar en caché los datos del disco, generalmente no demasiado grandes (alrededor de 20M).
  • El caché es un caché de página que lee archivos del disco, es decir, se utiliza para almacenar en caché los datos leídos de los archivos. Y no incluye SwapCached.
  • La losa incluye dos partes, SReclaimable y SUnreclaim. El SReclaimable recuperable es el registro SUnreclaim.

Resumiendo el búfer y el caché, se puede entender que el búfer es un caché de datos de disco y el caché es un caché de datos de archivo.

disponible

Introducción de manual gratuito disponible:


available    Estimation of how much memory is available for starting new applications, without swapping. Unlike the  data  provided  by the  cache or free fields, this field takes into account page cache and also that not all reclaimable memory slabs will be reclaimed due to items being in use (MemAvailable in  /proc/meminfo,  available  on  kernels  3.14,  emulated  on  kernels 2.6.27+, otherwise the same as free)

Puede saber que disponible es evaluar cuánta memoria hay disponible cuando desea iniciar una nueva aplicación sin intercambio. También tiene en cuenta la caché de la página y la parte de la memoria recuperable que se está utilizando. Corresponde al valor de MemAvailable en / proc / meminfo. En este punto, se puede sacar una conclusión: disponible incluye la memoria que se ha utilizado pero que se puede recuperar en el sistema. Por ejemplo, parte del caché, el búfer y la losa se pueden reciclar.

La definición de MemAvailable es la siguiente:


An estimate of how much memory is available for starting new applications, without swapping. Calculated from MemFree, SReclaimable, the size of the file LRU lists, and the low watermarks in each zone.  The estimate takes into account that the system needs some page cache to function well, and that not all reclaimable slab will be reclaimable, due to items being in use. The impact of those factors will vary from system to system.

Se puede sacar una conclusión: MemAvailable es aproximadamente igual a MemFree + Buffers + Cached, pero los dos no son iguales. MemAvailable es relativamente pequeño.

En conclusión

A partir de la introducción de cada elemento de memoria anterior, es más apropiado evaluar el uso de memoria MemAvailable en el nivel de la aplicación. Por lo tanto, el método de cálculo de uso de memoria (memtotal-disponible) / memtotal es el más adecuado para evaluar si el sistema puede iniciar una nueva aplicación.

Supongo que te gusta

Origin blog.51cto.com/15127511/2657921
Recomendado
Clasificación