Heim >Backend-Entwicklung >Golang >Warum melden Gos „pprof'- und Docker-Statistiken unterschiedliche Speichernutzung?

Warum melden Gos „pprof'- und Docker-Statistiken unterschiedliche Speichernutzung?

Susan Sarandon
Susan SarandonOriginal
2024-11-20 01:39:03497Durchsuche

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

Diskrepanz bei der Speichernutzung zwischen Go Tool Pprof und Docker Stats

Bei der Verwendung von Go 1.11 kann es zu einer Diskrepanz bei der von Go gemeldeten Speichernutzung kommen Tool pprof (runtime.MemStats.sys) und Docker-Statistiken. Docker-Statistiken stützen sich auf cgroups, um Informationen zur Speichernutzung zu erhalten, darunter Seiten-Cache und Resident Set Size (RES). Andererseits zeigt pprof einen Fuzz-Wert für die Speichernutzung an, was einen direkten Vergleich zwischen den beiden erschwert.

Verstehen von cgroups-Speichernutzung

cgroups bieten eine Möglichkeit um die Ressourcennutzung innerhalb eines Containers zu begrenzen und zu verfolgen. Die Metrik „usage_in_bytes“ in cgroups umfasst sowohl den vom Prozess verwendeten Speicher als auch den zwischengespeicherten Speicher. Wenn ein Container Dateien vom Hostsystem liest, wird auch der vom Kernel zwischengespeicherte Speicher in „usage_in_bytes“ gezählt.

Speicher in Docker zurückgewinnen

Wenn ein Container seine erreicht Wenn das Speicherlimit erreicht ist, versucht Docker, ungenutzten Speicher zurückzugewinnen. Dies ist anders als ein OOM-Fehler, der auftritt, wenn der gesamte Speicher belegt ist.

Möglichkeiten zur Begrenzung der Speichernutzung

Um die Speichernutzung eines Docker-Containers zu steuern, können Sie Sie können ein Speicherlimit im Docker-Run-Befehl oder in der Datei docker-compose.yml mithilfe von mem_limit angeben Parameter.

Schlussfolgerung

Die Diskrepanz in der Speichernutzungsberichterstattung zwischen pprof und Docker Stats ergibt sich aus der unterschiedlichen Art und Weise, wie sie die Speichernutzung messen. cgroups, wie sie von Docker Stats verwendet werden, beziehen den Datei-Cache-Speicher in ihre Berechnung ein, während pprof einen Fuzz-Wert ohne Berücksichtigung des Caches darstellt. Durch die Verwaltung von Speichergrenzen über Kontrollgruppen können Sie unkontrolliertes Speicherwachstum in Ihren Containern verhindern.

Das obige ist der detaillierte Inhalt vonWarum melden Gos „pprof'- und Docker-Statistiken unterschiedliche Speichernutzung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn