Ahoj,
Dělá se to z userspace - "něco" musí
hypervizoru říct, aby balloon ovladač odebral hostovi třeba 3.8GB RAM (aby mu nějaká cache
zůstala). Jádro hosta pak vrátí diskové cache, protože bez těch se obejde - jo, když se to
přežene, nastoupí oom killer.
Je to přesně tak. Obvykle je vyžadován i guest agent, aby se dalo vhodně počítat, kolik
paměti ta VM používá.
Red Hat na to asi nějakého démona mít bude, to už
nevím.
MoM -
http://gerrit.ovirt.org/gitweb?p=mom.git;a=summary
Ale je dost magie to vyladit.. zvlášť, když nastoupí ještě KSM (deduplikace stránek na
hypervizoru). Linux totiž klidně vrátí všechnu volnou pamět.. a pak stačí, když si kernel
řekne o nějaký buffer a Oops…. OOM killer nemá šanci vůbec reagovat. A když to je
pomalejší, tak se občas stane, že OOM killer zabije guest agenta a tím znemožní vrácení
paměti (protože MOM toho guesta začne ignorovat) :)
Jako jeden z hlavních vývojářů MoMu jsem takových situací viděl a vyvolal dost... Správa
prostředků ve virtualizaci je občas velká "sranda". Vůbec to Pavlovi nezávidím
(a mám VPS na jiném nodu ;).
--
Martin Sivák