summaryrefslogtreecommitdiff
path: root/doc/todo/get_round_robin.mdwn
blob: 9fad9da9dc13ca30b37e38e36b44378f74e7f7dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
`git annex get` always gets files from the remote with the lowest cost.

When two remotes have the same cost, it breaks the tie somehow, 
and consistently prefers one of them over the other.

It would be nice if it instead round-robined amoung remotes with
the same cost that have the file. In particular, with -J2, and 2 remotes
A and B having each file, one thread could download from A and the other
from B. That might be much faster than the current behavior of two threads
downloading everything from A.

Maybe a way to implement it is to keep a list of recently used remotes,
and when starting a new get from a set of remotes that have the same cost,
prefer the remote that is futher down the recently used list (or not on it
at all). (Or, since git-annex has a remote list already, it could rotate
the remotes of the same cost whenever starting a download from one.)

While this would be a nice improvement to -J2 from network remotes,
it might not really be desirable when not run in parallel. In particular,
if A and B are on different spinning disks, then an access pattern of
A,B,A,B might keep the disks idle enough that they spin down in-between
access.