|
| 1 | +Not that proxying is super slow, but it does involve bouncing content |
| 2 | +through the proxy, and could be made faster. Some ideas: |
| 3 | + |
| 4 | +* A proxy to a local git repository spawns git-annex-shell |
| 5 | + to communicate with it. It would be more efficient to operate |
| 6 | + directly on the Remote. Especially when transferring content to/from it. |
| 7 | + But: When a cluster has several nodes that are local git repositories, |
| 8 | + and is sending data to all of them, this would need an alternate |
| 9 | + interface than `storeKey`, which supports streaming, of chunks |
| 10 | + of a ByteString. |
| 11 | + |
| 12 | +* Use `sendfile()` to avoid data copying overhead when |
| 13 | + `receiveBytes` is being fed right into `sendBytes`. |
| 14 | + Library to use: |
| 15 | + <https://hackage.haskell.org/package/hsyscall-0.4/docs/System-Syscall.html> |
| 16 | + |
| 17 | +* Getting a key from a cluster currently picks from amoung |
| 18 | + the lowest cost nodes at random. This could be smarter, |
| 19 | + eg prefer to avoid using nodes that are doing other transfers at the |
| 20 | + same time. |
| 21 | + |
| 22 | +* The cost of a proxied node that is accessed via an intermediate gateway |
| 23 | + is currently the same as a node accessed via the cluster gateway. So in |
| 24 | + such a situation, git-annex may make a suboptimal choice of path. |
| 25 | + To fix this, there needs to be some way to tell how many hops through |
| 26 | + gateways it takes to get to a node. Currently the only way is to |
| 27 | + guess based on number of dashes in the node name, which is not satisfying. |
| 28 | + |
| 29 | + Even counting hops is not very satisfying, one cluster gateway could |
| 30 | + be much more expensive to traverse than another one. |
| 31 | + |
| 32 | + If seriously tackling this, it might be worth making enough information |
| 33 | + available to use spanning tree protocol for routing inside clusters. |
| 34 | + |
| 35 | +(This is a deferred item from the [[todo/git-annex_proxies]] megatodo.) --[[Joey]] |
0 commit comments