logo

Suche:

Bei einigen OpenVZ Servern war ich irritiert über die Ausgabe von vzfree.

vzfree macht ja aus dem Wert 'oomguarpages' einfach die Spalte: RAM fest zugesichert

Michael Welslau von MW-Internet hat mir das gut erklärt:

Die Angaben zu oomguarpages  (zugesicherter Speicher in einer
Out-Of-Memory-Situation) sind sehr widersprüchlich in der Literatur
interpretiert. Allgemein wird dies eben als der "zugesicherte Speicher"
angesehen, der für einen VServer garantiert verfügbar ist. Tatsächlich wird
der Wert aber aus privvmpages korrekt gebildet. Daher gibt es auch für
oomguarpages keinen gültigen Barrier-Wert, weil es keine Grenze darstellt.

Normalerweise werden alle VServer eines Hosts aus dessen normalen
Arbeitsspeicher bedient. Der Host verteilt seinen Arbeitsspeicher zusätzlich
auch noch auf Buffers und Caches und selbst wenn diese gen Null minimiert
werden und der Arbeitsspeicher für die Vserver nicht mehr ausreichend
bleibt, dann beginnt der Host nach den üblichen Verfahren zu Swappen. Sollte
aus irgendwelchen Gründen damit der gesamte verfügbare Speicher erschöpft
werden, dann kann der Host "in Not" geraten und wird noch vor einem
möglichen Absturz versuchen Prozesse zu beenden. Genau erst dann greift
dieser Parameter, indem der Host jedem VServer die mit oomguarpages
definierte Größe an physikalischen Speicher lässt und darüber hinaus
gehenden virtuellen Speicher schrittweise reduziert, bis der Host aus der
"Notlage" heraus gekommen ist.

Wie gesagt, das ist eine Art "Notfallplan" für den Host, tatsächlich hat
dieser noch über 1.25 GB verfügbaren Arbeitsspeicher, bevor dieser überhaupt
zu Swappen beginnen würde.
In verschiedenen Dokumentationen wird sogar von einem für oomguarpages
ausreichenden Wert um die 8 MB gesprochen, damit die Vserver noch ohne
Probleme laufen. Was ja häufig vergessen wird ist, dass die eigentlich
speicherfressenden Kernel-Ressourcen für alle VServer des Hosts nur einmalig
im Arbeitsspeicher abgelegt sind und für das korrekte Laufen des VServers
praktisch nur Arbeitsspeicher für die echten Memory-Bereiche der gestarteten
Prozesse benötigt werden. Eine Reduzierung der Ausführgeschwindigkeit ist in
solchen Situationen erst dann feststellbar, wenn Prozesse nicht durchgängig
laufen, sondern ständig neu geladen werden. Dies ist aber bei Serverdiensten
praktisch nie der Fall.

 


Eine weitere 'Merkwürdigkeit', wenn in vzfree oder vpsmem
'
Zugesichert: 36028797018963968 MB' auftaucht, hat mir KriS im Serversupportforum erklärt:

Der Wert 36028797018963968 kommt wie folgt zu Stande:
Virtuozzo und OpenVZ empfehlen für manche werte den sogenannten MAX_ULONG Wert zu verwenden.

MAX_ULONG
auf 64bit = 9223372036854775807 (264-1).
Nun werden die *pages in 4KB Werten angegeben.

Man rechne nun also:

9223372036854775807 * 4KB / 1024KB = 36028797018963967,99609375 MB.

Weshalb das ganze immer öfter auftaucht ist, das bei Virtuozzo 4.0 SLM ein neuer Memory Allocation Parameter per default aktiviert ist. Unter SLM werden die Werte unter /proc/user_beancounters ganz anders dargestellt.