Add a git config to limit the bandwidth of transfers to/from remotes. rsync has --bwlimit, so used to work, but is not used with modern git-annex for p2p transfers. (bup also has a --bwlimit) This should be possible to implement in a way that works for any remote that streams to/from a bytestring, by just pausing for a fraction of a second when it's running too fast. The way the progress reporting interface works, it will probably work to put the delay in there. --[[Joey]] [[confirmed]] > Implemented and works well. [[done]] --[[Joey]] > Note: A local git remote, when resuming an interrupted > transfer, has to hash the file (with default annex.verify settings), > and that hashing updates the progress bar, and so the bwlimit can kick > in and slow down that initial hashing, before any data copying begins. > This seems perhaps ok; if you've bwlimited a local git remote, > remote you're wanting to limit disk IO. Only reason it might not be ok > is if the intent is to limit IO to the disk containing the remote > but not the one containing the annex repo. (This also probably > holds for the directory special remote.) > Other remotes, including git over ssh, when resuming don't have that > problem. Looks like chunked special remotes narrowly avoid it, just > because their implementation choose to not do incremental verification > when resuming. It might be worthwhile to differentiate between progress > updates for incremental verification setup and for actual transfers, and > only rate limit the latter, just to avoid fragility in the code. > I have not done so yet though, and am closing this.. > --[[Joey]] > (One other small caveat is that it pauses after each chunk, which means > it pauses unncessarily after the last chunk of the file. It doesn't know > it's the last chunk, and it would be hard to teach it. And the chunks > tend to be 32kb or so, and the pauses a small fraction of a second. So > mentioning this only for completeness.) --[[Joey]]