"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué `pprof` de Go y Docker Stats informan un uso de memoria diferente?

¿Por qué `pprof` de Go y Docker Stats informan un uso de memoria diferente?

Publicado el 2024-12-22
Navegar:782

Why Do Go\'s `pprof` and Docker Stats Report Different Memory Usage?

Discrepancia en el uso de la memoria entre Go Tool Pprof y Docker Stats

Mientras usa Go 1.11, puede encontrar una discrepancia en el uso de la memoria informada por Go herramienta pprof (runtime.MemStats.sys) y estadísticas de Docker. Las estadísticas de Docker se basan en cgroups para obtener información sobre el uso de la memoria, que incluye la caché de página y el tamaño del conjunto residente (RES). Por otro lado, pprof muestra un valor difuso para el uso de memoria, lo que dificulta la comparación directa entre los dos.

Comprender el uso de memoria de cgroups

cgroups proporciona una manera para limitar y rastrear el uso de recursos dentro de un contenedor. La métrica use_in_bytes en cgroups incluye tanto la memoria utilizada por el proceso como la memoria caché. Si un contenedor lee archivos del sistema host, la memoria almacenada en caché por el kernel también se contará en use_in_bytes.

Recuperación de memoria en Docker

Si un contenedor alcanza su límite de memoria, Docker intenta recuperar la memoria no utilizada. Esto es diferente a un error OOM, que ocurre cuando se ha usado toda la memoria.

Formas de limitar el uso de la memoria

Para controlar el uso de la memoria de un contenedor acoplable, Puede especificar un límite de memoria en el comando docker run o en el archivo docker-compose.yml usando mem_limit parámetro.

Conclusión

La discrepancia en los informes de uso de memoria entre pprof y docker stats surge de las diferentes formas en que miden la utilización de la memoria. cgroups, tal como lo utilizan Docker Statistics, incluye la memoria caché de archivos en su cálculo, mientras que pprof presenta un valor difuso sin tener en cuenta la memoria caché. Al administrar los límites de memoria a través de cgroups, puede evitar el crecimiento descontrolado de la memoria en sus contenedores.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3