„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum melden die „pprof“- und Docker-Statistiken von Go unterschiedliche Speichernutzung?

Warum melden die „pprof“- und Docker-Statistiken von Go unterschiedliche Speichernutzung?

Veröffentlicht am 22.12.2024
Durchsuche:219

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 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ückfordern

Wenn ein Container seine erreicht Wenn das Speicherlimit erreicht ist, versucht Docker, ungenutzten Speicher zurückzugewinnen. Dies unterscheidet sich von einem 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 Speicherlimits über Kontrollgruppen können Sie unkontrolliertes Speicherwachstum in Ihren Containern verhindern.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3