[libvirt] [RFC][scale] new API for querying domains stats
Daniel P. Berrange
berrange at redhat.com
Fri Jul 4 08:45:44 UTC 2014
On Thu, Jul 03, 2014 at 01:49:41PM -0600, Eric Blake wrote:
> On 07/01/2014 03:33 AM, Daniel P. Berrange wrote:
>
> > 1. Time to write() the RPC call to the socket
> > 2. Time for libvirtd to process the RPC call
> > 3. Time to recv() the RPC reply from the socket
> > ...and so on..
> >
> > If the time for item 2 dominates over the time for items 1 & 2 (which
> > it should really) then the client thread is going to be sleeping in a
> > poll() for the bulk of the duration of the libvirt API call. If we had
> > an async API mechanism, then the VDSM time would essentially be consumed
> > with
> >
> > 1. Time to write() the RPC call to the socket
> > 2. Time to write() the RPC call to the socket
> > 3. Time to write() the RPC call to the socket
> > 4. Time to write() the RPC call to the socket
> > 5. Time to write() the RPC call to the socket
> > 6. Time to write() the RPC call to the socket
> > 7. wait for replies to start arriving
> > 8. Time to recv() the RPC reply from the socket
> > 9. Time to recv() the RPC reply from the socket
> > 10. Time to recv() the RPC reply from the socket
> > 11. Time to recv() the RPC reply from the socket
> > 12. Time to recv() the RPC reply from the socket
> > 13. Time to recv() the RPC reply from the socket
> > 14. Time to recv() the RPC reply from the socket
>
> This assumes you are still calling one async call per domain query.
>
> With regards to a bulk API, are you thinking synchronous?
>
> 1. Time to write() the RPC call - one bulk request
> 2. wait for reply - oh, and we'd better increase our on-wire size limits
> 3. Time to recv() the RPC reply - one bulk response
>
> or asynchronous?
>
> 1. Time to write() the RPC call - one bulk request
> 2. wait for replies to start arriving
> 3. Time to recv() an RPC async reply - first domain
> 4. Time to recv() an RPC async reply - second domain
> ...
> n. Time to recv() final RPC async reply
>
> The asynchronous works nicely in that we don't have to size up our max
> RPC on-wire limits, but implies that you still need a callback invoked
> once per reply received, instead of getting all data back in one giant
> memory blob.
I was thinking the former actually, but the latter is another possibility
to consider I guess.
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list