Heim >Backend-Entwicklung >Golang >Warum melden Gos „pprof'- und Docker-Statistiken unterschiedliche Speichernutzung?
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!