"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que o `pprof` e o Docker Stats do Go relatam diferentes usos de memória?

Por que o `pprof` e o Docker Stats do Go relatam diferentes usos de memória?

Publicado em 2024-12-22
Navegar:174

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

Discrepância de uso de memória entre Go Tool Pprof e Docker Stats

Ao usar Go 1.11, você pode encontrar uma discrepância no uso de memória relatada por Go ferramenta pprof (runtime.MemStats.sys) e estatísticas do docker. As estatísticas do Docker dependem de cgroups para obter informações de uso de memória, que incluem cache de página e tamanho do conjunto residente (RES). Por outro lado, o pprof exibe um valor fuzz para o uso de memória, tornando difícil a comparação direta entre os dois. para limitar e rastrear o uso de recursos dentro de um contêiner. A métrica usage_in_bytes em cgroups inclui a memória usada pelo processo e a memória em cache. Se um contêiner ler arquivos do sistema host, a memória armazenada em cache pelo kernel também será contada em uso_em_bytes.

Recuperação de memória no Docker

Se um contêiner atingir seu limite de memória, o Docker tenta recuperar a memória não utilizada. Isso é diferente de um erro OOM, que ocorre quando toda a memória foi usada.

Maneiras de limitar o uso de memória

Para controlar o uso de memória de um contêiner docker, você pode especificar um limite de memória no comando docker run ou no arquivo docker-compose.yml usando o mem_limit parâmetro.

Conclusão

A discrepância nos relatórios de uso de memória entre pprof e docker stats surge das diferentes maneiras como eles medem a utilização de memória. cgroups, conforme usado pelo docker stats, inclui memória cache de arquivo em seu cálculo, enquanto pprof apresenta um valor fuzz sem levar em conta o cache. Ao gerenciar limites de memória por meio de cgroups, você pode evitar o crescimento descontrolado de memória em seus contêineres.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3