On Thu, Feb 02, 2023 at 04:26:04PM +0000, Richard W.M. Jones wrote:
...
> > > $ time nbdkit -r curl 
> > > https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
> > >  --filter=multi-conn multi-conn-mode=unsafe timeout=2000 --run ' nbdcopy 
> > > --no-extents -p $uri jammy-server-cloudimg-amd64.img '
> > 
> > Yay - I'm glad my multi-conn filter makes it easier to test things
> > like this!
> > 
> > Should we tweak the docs in nbdkit-multi-conn-filter(1) to mention
> > that despite multi-conn-mode=unsafe being unsafe for a plugin that
> > does not have consistency, it is useful for timing tests on a plugin
> > where we suspect consistency is available in order to test timing to
> > see if it actually makes a difference?
> 
> Yes, sounds good.

How about:

diff --git i/filters/multi-conn/nbdkit-multi-conn-filter.pod 
w/filters/multi-conn/nbdkit-multi-conn-filter.pod
index 87b31692..7f70ade9 100644
--- i/filters/multi-conn/nbdkit-multi-conn-filter.pod
+++ w/filters/multi-conn/nbdkit-multi-conn-filter.pod
@@ -118,7 +118,11 @@ passed on to the plugin.
 When B<unsafe> mode is chosen, this filter blindly advertises
 multi-conn to the client even if the plugin lacks support.  This is
 dangerous, and risks data corruption if the client makes assumptions
-about flush consistency that were not actually met.
+about flush consistency that were not actually met.  However, for a
+plugin that does not yet advertise multi-conn, but where it is
+suspected that the plugin behaves consistently, this is a great way to
+run timing and accuracy tests to see enabling multi-conn in the plugin
+will make a difference.

 =item B<multi-conn-track-dirty=fast>

> > > Is there any work on adding multi-conn support to qemu's NBD client?
> > 
> > Not that I'm aware of at the moment, but we have proof that it may
> > prove fruitful to have someone spend time on.
> 
> Kubernetes team are complaining that this particular case (stream
> qcow2 file from a website and convert it to raw without a temporary
> file) is slow.  This is not a case that I've encountered before
> because it's not relevant to virt-v2v, but it does appear to be
> important.
> 
>       - * - * -
> 
> I didn't want to complicate the original message with irrelevant
> stuff, but there's something else I want to mention now.  If we just
> use qemu's curl driver (thus eliminating NBD & nbdkit from the mix),
> it gets even slower:
> 
>   $ time ~/d/qemu/build/qemu-img convert -p -W -f qcow2 'json:{ 
> "file.readahead": 67108864, "file.driver": "http", "file.url": 
> "http://oirase.annexia.org/tmp/jammy-server-cloudimg-amd64.qcow2";, 
> "file.timeout":2000 }' -O raw jammy-server-cloudimg-amd64.img.raw 
>       (100.00/100%)
> 
>   real        3m53.923s
>   user        0m13.751s
>   sys 0m15.346s
> 
> Now this is not something I'm personally concerned about (since I've
> long been arguing we should deprecate the qemu curl driver and use
> nbdkit), but it's also very surprising.

I'm also not surprised if qemu's curl driver is not efficient, because
it does not seem to be a case frequently used.  Offloading it to other
paths, like nbdkit, is indeed a good goal.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org
_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs

Reply via email to