Here's an example:
( cp /tmp/one /nfs/one ) &
( cp /tmp/two /nfs/two ) &
( cp /tmp/three /nfs/three ) &
( cp /tmp/four /nfs/four ) &
( cp /tmp/five /nfs/five ) &
wait
Against a busy NFS server, does doing this gain anything vs
cp /tmp/one /nfs/one;
cp /tmp/two /nfs/two;
cp /tmp/three /nfs/three;
cp /tmp/four /nfs/four;
cp /tmp/five /nfs/five;
My thought is that I may be spending more time in the first example spinning up subshells (especially on a machine doing this many times at once, spinning up lots of user processes) where because of the bandwidth and NFS inode updating limitations, its not gaining me anything.
The files in question are between 20k and 2mb, never more than 6 at a time, and they're always getting copied to the same full path (just different filenames). There are a number of these happening on an array of servers (~50) all referencing the same small set of NFS mounts.