
----- Original Message -----
On 09/27/2011 12:52 AM, Adam Litke wrote:
First of all I think this is great! Thanks Adam! Wrt the question above, the way I see vdsm going forward is a lot more policy management, especially once we start talking about SLAs. This will involve a lot more than just memory policies, and although I may be impartial here, I think that this should fall under vdsm or under a policy engine project (bigger scope than just memory) which vdsm would use. To elaborate, in addition to memory, we need to manage policies around network, storage and cpu and manipulate cgroups, tc, page cache etc. If we take page cache as an example, it affects memory on the machine hence, MOM would like to tweak it (also in the preso), but we already have recent results from the perf team to change the defaults here to significantly increase I/O throughput, improve fairness and reduce effect of buffered writers on VMs and we know that going forward we'll have to tweak these parameters dynamically to adjust to varying workloads, esp if we ever plan on making good the claim for a hybrid server. Having separate projects tweaking the same params will not lead to good results. Ayal, I definitely agree. I must admit that the project name MOM (while a nice acronym), implies a restricted scope (memory only) but the architecture of MOM does not limit its functionality to memory tuning only. I assert that MOM can easily become the policy engine piece that you are speaking of.
The framework is very extensible (a set of Collectors that expose system state, a set of Controllers that expose "tuning knobs", and a policy that reads the state and manipulates the knobs. Adding control for cgroups is as simple as writing a cgroups Collector and Controller.
It would be nice to agree on the initial (more limited scope maybe) for the code within vdsm so the work be able to be done soonish. Since vdsm is a relevantly a new open source project there will be many future changes and imho there is no need to wait for the perfect policy engine framework.
The project can initially contain only memory management, that is not an issue whatsoever. But the project mission should be correct from the start so that design decisions are made with the full picture in mind.