Was macht --memory-reservation flag in der Praxis?

8

Ä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, -mist --memory-reservationdies in diesem Zusammenhang nicht sinnvoll?

Anentropisch
quelle
Ich habe eine verwandte Frage: Was passiert, wenn ein Container über dem Soft-Limit, unter dem Hard-Limit läuft und der Speicher zurückgefordert wird? Wird es getötet oder läuft es weiter?
Martin Höger
Ich habe keine Ahnung. Der Link aus der Antwort von @flo woo ( linux-mm.org/PageOutKswapd ) scheint jedoch so zu sein, als würde bei der "Rückgewinnung" des Speichers ein Paging- Vorgang durchgeführt , dh das, was ich in Windows 95 Tagen als "virtueller Speicher" kannte. Daher würde ich vermuten, dass der Container nicht getötet wird, sondern nur langsam wird.
Anentropic

Antworten:

7

Die memory-reservationOption ist ein Wrapper für die aufgerufene Option cgroup memory.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.txt

Weitere 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.

Flo Woo
quelle