[ovirt-devel] Reference implementation of events

Vinzenz Feenstra vfeenstr at redhat.com
Tue Feb 10 11:00:05 UTC 2015


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




More information about the Devel mailing list