[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: KVM - RAM Cache begrenzen & KSM



Am 14.06.2011 13:10, schrieb David Raab:

> Derzeit habe ich auf dem Host System KSM aktiviert das es doch erlaubt
> mehrere Gäste laufen zu lassen. Kann hier jemand empfehlen wie man KSM
> automatisch beim Booten startet ohne jedesmal "echo 1 >
> /sys/kernel/mm/ksm/run" einzugeben? Über syctl kann ich den wert nicht
> setzen wodurch ich denke das ein eintrag in sysctl.conf keine auswirkung
> hat. Eventuell weiß hier jemand wo man sonst soetwas eintragen kann
> bevor ich ein eigenen startup skript dafür generiere?

Sowas kannst du in die /etc/rc.local eintragen.

> Ansonsten zu der eigentlichen Frage wegen des Overcommiten. Linux selber
> nutzt ja aggressiv den Cache. In der regel wenn das System länger
> benutzt wird, ist der Cache vollständig ausgenutzt.

Du meinst den Hauptspeicher.

> Wenn man nicht
> Virtualisierten Server hat finde ich das verhalten ja ganz richtig, den
> dafür ist RAM ja nunmal da. In der Virtualisierten Umgebung bedeutet es
> aber das wenn ich einer VM 2 Gigabyte RAM zuteile diese früher oder
> später auch 2 Gigabyte nutzen wird, und das primär
> vom RAM des Host Systems. Ich persönlich finde es aber etwas ungeschickt
> das der ganze RAM für den Cache der VMs verloren geht, und das Host
> System zu swappen anfängt. Das macht das ganze Prinzip des
> "Overcommiten" auch zunichte, da man praktisch sowieso nie mehr RAM
> zuteilen darf als man hat, sonst werden eventuell VMs zu langsam da
> dessen RAM im Swap Bereich auf dem Host System liegt.

Das verstehe ich gerade nicht. Wenn du eine VM mit z.B. 2 GByte RAM
anlegst, dann wird von KVM ein Prozess erzeugt der 2 GByte Speicher vom
Kernel anfordert - denn die 2 GByte werden ja dann von VM-Betriebssystem
verwaltet.
Wenn deine Maschine nur 1 GByte RAM hat und du die 2 GByte RAM deiner VM
nutzt wird deine Hostmaschine swappen. Nutzt du in der VM nur ein paar
MByte der zugeteilten 2 GByte dann wird praktisch nicht geswappt.

KVM reserviert zwar immer den gesamten, der VM zugeteilten Speicher, das
heißt aber nicht dass das immer auch RAM deines Hostsystems ist. Je
nachdem ob der Speicher auch benutzt wird, und wenn ja wie oft, können
Teile davon nur reserviert sein oder zugeteilt aber ausgelagert (in den
Swapspace). Wenn Linux der Meinung ist, die Performance des
Gesamtsystems wäre höher wenn ein Teil des VM-RAMs auf die Platte des
Hostsystems ausgelagert (also geswappt) wird, dann geschieht das. Wann
das der Fall ist wird durch die "Swappiness" eingestellt (vm.swappiness
in sysctl.conf). Der restlichen RAM des Hostsystems wird als
Plattencache benutzt.

Wenn du nun mehrere gleichartige VMs am Laufen hast, z.B. 10x RedHat mit
Websphere, dann schafft es KSM einige Speicherbereiche, die den gleichen
Inhalt haben, nur einmal zu belegen und schafft so freien Hauptspeicher
am Hostsystem.


Reply to: