On 02/09/2015 04:23 PM, Piotr Kliczewski wrote:
Hi,

As you may know I currently work on event infrastructure which will
let vdsm push information to the engine. I already pushed some drafts
providing event functionality and started to think which part of
engine <-> vdsm interaction could be changed to events. The goal is to
build usable api for it as well as provide example how to migrate
other parts of code to events.

Initially we started to look at VM.getStats [1] but we still want to
have Host.getAllVmStats run by quartz job. I had a chat with Vinzenz
about the structure and frequency of data change for VM.getStats and
it seems that the data changes ~2s so this verb is not the best choice
to send events with deltas containing the change since we are polling
every 3s for the information.
Just a correction here: We're currently polling the stats every 15 seconds.
What the wiki page showed was an attempt to apply classification to the
data returned by getAllVmStats to avoid polling data that does not change
that often.

In an event based system the content of the there [2] proposed verbs:
'getVmStatus', 'getVmConfInfo' and 'getVmGuestDetails' could be potentially
changed to events.

The contents of the proposed 'getAllVmRuntimeStats' verb was under the consideration of the periodic polling (~3seconds) approach, which does not fit anymore in an
event based system.
One thing is clear though, this data changes quite frequently and is used by the engine
(ignoring the hashes which were part of the proposal)
The fields cpuSys, cpuUser, memUsage are needed for the frontend and must be distributed
frequently.
The value of 'elapsedTime' and 'statsAge' are changing constantly basically with every request, however I am not sure about the value to the engine. This is a point to discuss.

The VM 'status' should, in normal/expected scenarios, change rarely, however when it does, in most, but necessary not all cases (to be determined), the engine must know immediately.
(This is why it is polled every 3 seconds)

The 'hashes.config' value, probably gets kind of irrelevant on an event based system, since we would send changed devices / configuration as the aforementioned deltas in an event.
But I might be wrong about that.

The 'getAllVmDeviceStats' data is something that should be periodically, kind of, requested. Part of the data is used by SLA, other parts are used by the engine to display it, and then parts of it, might be used by the DWH. How we are going about those things, is also open for discussion.

I hope I haven't left out anything so far. I just wanted to give a bit of an idea how the page should be considered
in relation to the new message based implementations.


We started to explore which data generated by vdsm/guest agent could
be sent as events and he pointed me to [2].

I would like to trigger discussion about how to dived data to maximize
benefits of sending events with deltas and for some parts of data keep
polling functionality as it is now.

Do you have any suggestion which verb we could safely use as reference
implementation for events?

Thanks,
Piotr

[1] http://gerrit.ovirt.org/#/c/37488/
[2] http://www.ovirt.org/Proposal_VDSM_-_Engine_Data_Statistics_Retrieval


--
Regards,

Vinzenz Feenstra | Senior Software Engineer
RedHat Engineering Virtualization R & D
Phone: +420 532 294 625
IRC: vfeenstr or evilissimo

Better technology. Faster innovation. Powered by community collaboration.
See how it works at redhat.com

_______________________________________________
Devel mailing list
Devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/devel

Reply via email to