Ärzte sagen:
Wenn der Container in dieser Konfiguration mehr als 200 MB und weniger als 500 MB Speicher belegt, versucht der nächste Systemspeicher, den Containerspeicher unter 200 MB zu verkleinern.
Aber was bedeutet das eigentlich?
Angenommen, ich habe einen Container mit Solr und:
docker run -m 1G --memory-reservation 768M solr
Welche Auswirkung hat es auf den Solr-Prozess im Container, wenn 800 MB Speicher verwendet werden? Nichts?
Ist es nur, wenn / wenn die Speichernutzung anschließend unter 768M fällt ... dieses Flag ermöglicht es Docker, den Speicher aus dem SolR-Container zurückzugewinnen? ... sonst würde der Container weiterhin verbrauchen, was auch immer der Hochwasserspeicher war?
Wie hängt das mit der Schwarmplanung zusammen? Wenn der Schwarm dem Container immer 1G zuweist, -m
ist --memory-reservation
dies in diesem Zusammenhang nicht sinnvoll?
Antworten:
Die
memory-reservation
Option ist ein Wrapper für die aufgerufene Option cgroupmemory.soft_limit_in_bytes
. Sie können das (veraltete) Handbuch im Abschnitt "Soft Limits" lesen: http://elixir.free-electrons.com/linux/latest/source/Documentation/cgroup-v1/memory.txtWeitere Informationen zum Rückforderungsprozess finden Sie hier: http://linux-mm.org/PageOutKswapd
Soweit ich weiß, kann Ihr Solr-Prozess 800 MB verwenden. Solange keine Konflikte mit anderen Gruppen auftreten, wird der Speicher nicht zurückgefordert. Es kann den Speicher behalten und bis zu einer festen Grenze von 1 GB verwenden. Wenn es Konflikte gibt, versucht der Kernel, den Speicher zurückzugewinnen, jedoch gemäß den Anweisungen des Dokuments
soft limits is a best-effort feature.. no guarantees
.quelle