[Libguestfs] parallelization

Richard W.M. Jones rjones at redhat.com
Tue Feb 26 15:07:19 UTC 2013


On Tue, Feb 26, 2013 at 03:00:42PM +0000, Daniel P. Berrange wrote:
> On Tue, Feb 26, 2013 at 02:56:53PM +0000, Richard W.M. Jones wrote:
> > On Tue, Feb 26, 2013 at 09:36:30AM -0500, Colin Walters wrote:
> > > So Richard recently blogged about running many libguestfs mounts in
> > > parallel.
> > > 
> > > I actually want parallelization in the other way; I use guestmount to
> > > access a disk image, and my program is multithreaded.  It does
> > > read/write and most especially calls to link() and fdatasync() from
> > > threads.
> > > 
> > > However, this all ends up being serialized, because the guestfsd
> > > protocol is synchronous, and the daemon side is single-threaded.
> > > Related to this, the qemu instance is always booted with only one
> > > vCPU.
> > > 
> > > Have there been any thoughts on fixing this?
> > 
> > Yes.  However it requires changes to the virtio-serial protocol or
> > perhaps its entire replacement with VMware's vsock protocol (currently
> > being discussed in upstream qemu).  Without this, it's pretty clunky
> > to open more than one connection from the library to the appliance.
> 
> That's if you need to open multiple connections though. Sounds like
> in Colin's case he just has one multi-threaded app, in which case
> all apps could just share one connection & have the RPC messages
> multi-plexed as we do with libvirt. Of course still needs the daemon
> to be multithreaded to get any benefit from that.

I'm really extremely cautious about making any change to the protocol.

I found and fixed yet another bug (a crasher) in it only a few days
ago (RHBZ#914931).  You'd have thought we would have worked out all
the bugs in it after 5 years, but apparently not ...

Having parallel connections avoids making any protocol changes (except
if you consider parallel connections to be a protocol change, but I
guess you know what I mean ...)

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://libguestfs.org




More information about the Libguestfs mailing list