[[!comment format=mdwn
 username="joey"
 subject="""comment 7"""
 date="2015-08-13T18:27:35Z"
 content="""
I've made --debug be passed along to git-annex-shell, so here's a more
detailed view:

	[2015-08-13 15:29:05.183231] read: rsync ["--progress","--inplace","--perms","-e","'ssh' '-S' '.git/annex/ssh/localhost' '-o' 'ControlMaster=auto' '-o' 'ControlPersist=yes' '-T' 'localhost' 'git-annex-shell ''sendkey'' ''/home/joey/tmp/r'' ''--debug'' ''SHA256E-s30--6b1bd2aa19d658de59c3a5a1eb239cefb87bdfa0f9b64d1a670d88c211972c0d'' --uuid ba2a51f9-f356-40a7-9600-2ac4193c7d58 ''--'' ''remoteuuid=72078ee3-1150-45f0-b00e-53e971921982'' ''direct='' ''associatedfile=ook2'' ''--'''","--","dummy:",".git/annex/tmp/SHA256E-s30--6b1bd2aa19d658de59c3a5a1eb239cefb87bdfa0f9b64d1a670d88c211972c0d"]
	[2015-08-13 15:29:05.219572] transfer start
	[2015-08-13 15:29:05.221625] call: rsync ["--server","-t","--inplace","-e.Lsf",".","--sender","tmp/r/.git/annex/objects/wX/k9/SHA256E-s30--6b1bd2aa19d658de59c3a5a1eb239cefb87bdfa0f9b64d1a670d88c211972c0d/SHA256E-s30--6b1bd2aa19d658de59c3a5a1eb239cefb87bdfa0f9b64d1a670d88c211972c0d"]
	[2015-08-13 15:29:05.226709] process done ExitSuccess # rsync server
	[2015-08-13 15:29:05.22709] transfer done
	[2015-08-13 15:29:05.247464] process done ExitSuccess # rsync client

1. 0.036341s -- starting local rsync, ssh connection (using mux), and git-annex-shell startup to the point it parses parameters and can start
   printing debug messages
2. 0.002053s -- time git-annex-shell spends starting transfer (locking file, etc)
3. 0.005084s -- actual file transfer time (including rsync server startup)
4. 0.000381s -- git-annex-shell shutdown time
5. 0.020374s -- time from when git-annex-shell exits until the local rsync exits.  
   This must consist of rsync writing the file, the ssh connection shutdown, and rsync shutdown. 
   I don't know in what porportions, except that writing the file is only a very small part of it.

So, over 25000 files, I'd estimate the newly optimised git-annex to take
around 28 minutes here (unoptimized would have taken 171 minutes).
The rough time breakdown is:

* 15 minutes is needed to start the rsync clients, ssh connections, git-annex-shell processes
* 9 minutes more overhead seems to be involved in shutting down those 
  connections
* 1 minute is used by git-annex-shell to do locking, etc
* 2 minutes is used by git-annex to find files to transfer, update location logs, etc
* 1 minute is used by rsync server to start running and send the files (assuming very small files and fast network)
"""]]
