Die RAM-Nutzung von bhyve stimmt nicht mit der Konfiguration überein

747
GiantTree

Ich verwende derzeit den bhyve-Hypervisor auf meinem FreeNAS-System, aber mit nur 16 GB RAM ist das Ausführen von virtuellen Maschinen für das System mehr oder weniger eine Ausdehnung.

Ich habe momentan nur eine VM, auf der Debian läuft.

Dies ist seine Konfiguration:

Getting debianguest iohyve properties... bargs -A_-H_-P boot 1 con nmdm1 cpu 2 description Wed Feb 8 18:16:58 CET 2017 install no loader grub-bhyve name debianguest os debian persist 1 ram 3G size 50G tap tap0 template NO vnc NO vnc_h 600 vnc_ip 127.0.0.1 vnc_tablet NO vnc_w 800 vnc_wait NO 

Das wichtige Bit gibt an, ram=3Gwo es den für die VM verfügbaren virtuellen Arbeitsspeicher angibt.

Nun kommt mein Problem: Diese virtuelle Maschine verwendet weitaus mehr RAM auf dem Host, als ich ihnen zugewiesen habe.

Ausgabe von ps aux -O %mem:

root 28769 9.1 32.2 7519108 5357236 - S 8:28PM 18:21.80 bhyve: ioh-debia 

Ausgabe von htop:

PID USER PRI NI VIRT RES S CPU% MEM% TIME+ Command 28769 root 20 0 7342M 5233M S 7.0 32.2 18:30.40 bhyve: ioh-debianguest 

Ausgabe von free -h:

 total used free shared buff/cache available Mem: 2.9G 1.1G 90M 71M 1.8G 1.6G 

Derzeit werden 5,2 GB RAM benötigt, wenn nur 3 konfiguriert sind.

Es verfügt auch über etwa 90 MB freien Speicherplatz, 1,6 GB für Anwendungen und 0 KB für Swap. Dies führt zu der Annahme, dass entweder der Hypervisor (bhyve) oder der Kernel Speicher verliert.

BEARBEITEN:

Ich verstehe zwar, dass die Zuweisung von mehr Arbeitsspeicher zur Verbesserung der Leistung eine gute Sache ist (und ich gehe davon aus, dass dies der Fall ist), doch zwingt mich der Zwang, den Prozess selbst zu tauschen oder sogar noch schlimmer, vom OOM-Killer getötet, zu fragen, wie aggressiv dieses Leistungsziel ist.

Gibt es eine Möglichkeit, herauszufinden, warum auf dem Host mehr RAM verwendet wird als zugeteilt, und gibt es eine Möglichkeit, den auf dem Host verwendeten RAM zu reduzieren?

0
Du hast keine Frage gestellt. Sie haben jedoch keinen Grund zu der Annahme, dass Speicherplatz verloren geht. Sie haben nach 3G in der VM gefragt, und das zeigt die VM. David Schwartz vor 7 Jahren 0
Ja, aber warum wird 5.2G auf dem Host verwendet? Dies ist im Grunde die Frage, die ich frage. GiantTree vor 7 Jahren 0
Weil es geht. Warum sollte es nicht so sein? Es ist nicht so, dass Sie diesen RAM für später speichern können. David Schwartz vor 7 Jahren 0
Also ich frage nach 3G von RAM und die Verwendung von 2.2G extra für nichts macht Sinn? Das Problem ist, dass ZFS * sehr * empfindlich auf Situationen mit wenig Arbeitsspeicher reagiert und in Puffer gehalten wird (was bedeutet, dass es verworfen werden kann, wenn mehr Speicher benötigt wird). Dies kann zu gelegentlichen Blockierungen führen (etwa 5 Minuten lang, sodass * nichts * funktioniert und ich fürchte, es ist in diesem Zustand gesperrt, die VM meldet sogar, dass die CPU gesperrt ist. GiantTree vor 7 Jahren 0
Ahh, also hast du die falsche Frage gestellt! Ihre Frage ist, warum der Speicher nicht freigegeben wird, wenn er benötigt wird, und nicht, warum er nicht verwendet wird, wenn er frei verfügbar ist. Natürlich sollten Sie es vorziehen, die 2.2G-Extra-Option zu verwenden, wenn dies möglich ist, und nicht verschwendet zu werden. David Schwartz vor 7 Jahren 0
Nun, ich kenne nicht einmal die richtige Frage, es ist eher so: Es verwendet mehr Speicher als ich konfiguriert habe und anstatt es zu veröffentlichen, weist es einfach mehr zu, ich hatte mal, als es fast 9G verwendete, aber nur 3G verfügbar ist an die VM (verwendetes RAM war etwa 1,5 G + Puffer). Es gibt keinen Grund dafür, * dass * viel mehr Speicher zu verwenden, wenn er nicht einmal für die VM verfügbar ist. GiantTree vor 7 Jahren 0
Es gibt einen Grund - die einzigen verfügbaren Optionen sind die Verwendung oder die Verschwendung. Daher wird die Verwendung bevorzugt, da das Verschwenden keinen Nutzen bringt und die Verwendung einige E / A-Vorgänge vermeiden kann. Es steht der VM in Form einer verbesserten Leistung zur Verfügung, unter anderem durch Vermeidung von E / A-Verzögerungen. Die von Ihnen konfigurierte RAM-Einstellung ist der Betrag, den der Gast als immer verfügbar betrachtet. Der Hypervisor kann mehr zur Verbesserung der Leistung verwenden und wird dies tun, wenn die Alternative diesen RAM verschwendet. Wenn Sie jedoch Leistungsprobleme sehen, ist dies ein Problem, und Sie sollten uns darüber informieren / fragen. David Schwartz vor 7 Jahren 0
Ich werde es genauer überwachen, ich verstehe das Erreichen einer höheren Leistung, aber so viel Speicherbedarf zu erzwingen, dass es ausgetauscht werden muss, scheint hier keine gute Strategie zu sein. GiantTree vor 7 Jahren 0
Angenommen, die VM schreibt 1 GB Daten auf die virtuelle Festplatte. Der Hypervisor könnte die VM warten lassen, bis diese Daten auf die physische Festplatte geschrieben werden. Da es jedoch über 1 GB RAM verfügt, der andernfalls verschwendet würde, sollte er den RAM verwenden, um die Schreibvorgänge zu speichern, bis sie an das Host-Betriebssystem geleert werden können. Und ja, du hast recht, wenn es ausgetauscht werden müsste, wäre das ein Problem. Aber darüber berichten Sie nicht und nicht nach dem Sie gefragt haben. Wenn es frei verfügbar ist, sollte es verwendet werden. Natürlich nicht anders. Sie melden jedoch kein Leistungsproblem oder Tausch. David Schwartz vor 7 Jahren 0
Nein, kein echtes Leistungsproblem. Ich habe nur die gesamte VM durch den OOM-Killer zum Absturz gebracht, weil ich keinen Speicherplatz mehr habe (heute zweimal passiert). GiantTree vor 7 Jahren 0
Wie gesagt, Sie haben nicht die richtige Frage gestellt. Wenn Sie ein tatsächliches Problem haben, sollten Sie es zuerst beschreiben! David Schwartz vor 7 Jahren 0
Ich stimme dir nicht zu. Die Frage ist gut: Warum verbraucht es so viel Speicher? Ein Hypervisor sollte sich entweder auf das Host-Caching verlassen oder einfach überhaupt nicht zwischenspeichern. Das Gastbetriebssystem wird sich darum kümmern. Aber hier muss wirklich nicht darüber gesprochen werden, und es ist auch nicht nötig, darüber zu spekulieren, was passiert. Was benötigt wird, sind bhyve-spezifische Fakten. Daniel B vor 7 Jahren 0
@DanielB Ich glaube nicht, dass er sich dafür interessiert, * warum * es so viel Speicher benötigt. Wenn dies der Fall ist, lautet die Antwort, dass dies kostenlos ist und die Leistung verbessern kann. Ich habe oben ein spezifisches Beispiel gegeben, Schreibvorgänge abpuffern. David Schwartz vor 7 Jahren 0

0 Antworten auf die Frage