Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize download performance #40

Closed
7 tasks done
vimpunk opened this issue Sep 5, 2020 · 1 comment
Closed
7 tasks done

Optimize download performance #40

vimpunk opened this issue Sep 5, 2020 · 1 comment
Labels
meta used for tracking a set of related issues or todos optimization

Comments

@vimpunk
Copy link
Owner

vimpunk commented Sep 5, 2020

This issue tracks potential ways to speed up downloads.

  • Request pipelining. Done to a basic extent (fixed pipeline size).
  • Self-adjusting request queue size. We should always keep the download pipeline at capacity to ensure we don't waste bandwidth.
  • TCP like slow-start to reach optimal request queue size as fast as possible. The problem here is that if we linearly increment the request queue size, for fast links we would waste performance instead of ramping up the download rate exponentially.
  • Batch disk writes. This is done for the most part but configurability and maybe self-adjustment would be great.
  • Request timeouts, which are important when there are multiple peers with the same piece. If a peer has it but times out, we can try to download it from another peer faster. (Implement request timeouts #18)
  • Share downloads. This way, a piece may be completed faster if downloaded from multiple peers, resulting in fewer unfinished pieces overall. It's also important for end game mode. (Share a piece download among peers #45)
  • End game mode: here for the last n pieces (for a small n, possibly n = 1), we request all blocks from all peers (that have it), so that we're not stalled on a single peer to finish the download. If we receive a block, we send a cancel request to other peers. (End-game mode to speed up last part of downloads #70)
@vimpunk vimpunk added meta used for tracking a set of related issues or todos optimization labels Sep 5, 2020
@vimpunk
Copy link
Owner Author

vimpunk commented Dec 11, 2020

All currently outstanding tickets done, closing.

Reopening if new optimization avenues are found.

@vimpunk vimpunk closed this as completed Dec 11, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meta used for tracking a set of related issues or todos optimization
Projects
None yet
Development

No branches or pull requests

1 participant