[Libguestfs] More parallelism in VDDK driver (was: Re: CFME-5.11.7.3 Perf. Tests)
Richard W.M. Jones
rjones at redhat.com
Wed Aug 5 11:58:40 UTC 2020
On Wed, Aug 05, 2020 at 02:39:44PM +0300, Nir Soffer wrote:
> Can we use something like the file plugin? thread pool of workers,
> each keeping open vddk handle, and serving requests in parallel from
> the same nbd socket?
Yes, but this isn't implemented in the plugins, it's implemented in
the server. The server always uses a thread pool, but plugins can opt
for more or less concurrency by adjusting the thread model:
http://libguestfs.org/nbdkit-plugin.3.html#Threads
The file plugin uses PARALLEL:
$ nbdkit file --dump-plugin | grep thread
max_thread_model=parallel
thread_model=parallel
The VDDK plugin currently uses SERIALIZE_ALL_REQUESTS:
$ nbdkit vddk --dump-plugin | grep thread
max_thread_model=serialize_all_requests
thread_model=serialize_all_requests
The proposal is to use SERIALIZE_REQUESTS, with an extra mutex added
by the plugin around VixDiskLib_Open and _Close calls. PARALLEL is
not possible.
> This is kind of ugly but simple, and it works great for the file
> plugin - we get better
> performance than qemu-nbd.
>
> But since we get low throughput even when we have 10 concurrent
> handles for 10 different disks, I'm sure this will help, and the
> issue may be deeper in vmware. Maybe they intentionally throttle the
> clients?
The whole server side seems very heavyweight, judging by how long it
takes to answer single requests. It might just be poor implementation
rather than throttling though.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW
More information about the Libguestfs
mailing list