On Sat, May 29, 2021 at 09:46:08PM +0100, Richard W.M. Jones wrote:
In short the default settings for nbdcopy are wrong and more
performance could be gained by having better settings.
To be clearer, I mean that if we allocate (default) 32MB buffers and
have (default) 64 requests in flight and have (default) 4 connections
open, then in theory there could be 32 * 64 * 4 MB of memory being
used at once. That is 8 GB -- although in reality it would probably
not be that much.
Also each single buffer is larger than my test machine's L3 cache.
Then there's the problem that Nir also pointed out that we don't reuse
these memory buffers, so we depend on whatever malloc() does, and may
or may not be reusing the memory in a cache-efficient way.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html