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

Path to landing Bitswap PoC #6782

Closed
12 of 16 tasks
dirkmc opened this issue Dec 4, 2019 · 8 comments
Closed
12 of 16 tasks

Path to landing Bitswap PoC #6782

dirkmc opened this issue Dec 4, 2019 · 8 comments
Labels

Comments

@dirkmc
Copy link
Contributor

dirkmc commented Dec 4, 2019

We're currently working on a proof-of-concept for Bitswap to improve performance by disseminating information about how blocks are distributed amongst peers. This issue outlines the remaining steps required to complete it:

After landing PoC:

@dirkmc dirkmc added topic/meta Topic meta epic labels Dec 4, 2019
@dirkmc
Copy link
Contributor Author

dirkmc commented Jan 29, 2020

Performance comparison of master vs proof-of-concept

We collected performance data comparing Bitswap master against the proof-of-concept branch using a testground test suite.

In particular we are interested in comparing

  • time to fetch at different latency / bandwidth, for varying numbers of leeches and seeds
  • number of duplicate blocks fetched

5ms latency, variable bandwidth: 1 seed, 2 seeds, 4 seeds

5ms-1024MB5ms-160MB5ms-40MB5ms-20MB5ms-10MB

These graphs are for 1 leech fetching from 1, 2 and 4 seeds with 5ms latency and 10MB, 20MB, 40MB, 160MB and 1024MB bandwidth.

For high bandwidth:

  • the PoC gets better performance with more seeds whereas master gets worse performance with more seeds
  • the PoC performs much better than master

For low bandwidth:

  • the PoC and master both get better performance with more seeds
  • the PoC performs somewhat better than master

5ms latency, variable bandwidth: 3 leeches fetching from 3 seeds

3x3-5ms-1024MB3x3-5ms-160MB3x3-5ms-40MB3x3-5ms-10MB

These graphs are for 3 leeches downloading simultaneously from 3 seeds. It seems like at any bandwidth the results are similar:

  • PoC is faster, particularly for higher bandwidth / file size
  • PoC results seem to be more consistent (points are less scattered)

Duplicate blocks - 5ms latency, variable bandwidth: 1 seed, 2 seeds, 4 seeds

dups-5ms-1024MBdups-5ms-160MBdups-5ms-40MBdups-5ms-20MBdups-5ms-10MB

These graphs show the number of duplicate blocks received by the leech for 1, 2 and 4 seeds.
Note that in the case of 1 leech / 1 seed, there will be no duplicates.
The points are highly scattered, but the results are generally as expected:

  • For the PoC there are rarely any duplicates, at any bandwidth
  • For master there are more duplicates when there are more seeds, and at lower bandwidths

100ms latency / variable bandwidth: 1 seed, 2 seeds, 4 seeds

100ms-1024MB100ms-160MB100ms-40MB100ms-20MB100ms-10MB

These results for variable bandwidths with 100ms latency are similar to those with 5ms latency above.

@momack2
Copy link
Contributor

momack2 commented Jan 29, 2020

OMG SHIP IT! (@hinshun - some pretty graphs to show off validating all the great work)

@jbenet
Copy link
Member

jbenet commented Jan 30, 2020

Fantastic perf improvements! Great graphs! 🎉🎆❤️🚀

@bertrandfalguiere
Copy link

Holy ship! 🚀

@dirkmc
Copy link
Contributor Author

dirkmc commented Jan 30, 2020

Shout out to @Stebalien with whom we came up with the design ideas, and who reviewed the 9,000 line PR, @hinshun who created the test environment to validate the initial proof-of-concept and to the testground team ❤️

@obo20
Copy link

obo20 commented Jan 30, 2020

This is amazing. Great work all around. We're super excited to see this make it to production.

@whyrusleeping
Copy link
Member

Fantastic! This is great stuff @dirkmc :)

@Stebalien Stebalien mentioned this issue Feb 13, 2020
21 tasks
Stebalien added a commit that referenced this issue Mar 12, 2020
This also updates graphsync to use the new peertaskqueue.

fixes #6782
Stebalien added a commit that referenced this issue Mar 12, 2020
This also updates graphsync to use the new peertaskqueue.

fixes #6782
@dirkmc
Copy link
Contributor Author

dirkmc commented Mar 13, 2020

🎉

ralendor pushed a commit to ralendor/go-ipfs that referenced this issue Jun 6, 2020
This also updates graphsync to use the new peertaskqueue.

fixes ipfs#6782
ralendor pushed a commit to ralendor/go-ipfs that referenced this issue Jun 6, 2020
This also updates graphsync to use the new peertaskqueue.

fixes ipfs#6782
ralendor pushed a commit to ralendor/go-ipfs that referenced this issue Jun 8, 2020
This also updates graphsync to use the new peertaskqueue.

fixes ipfs#6782
ralendor pushed a commit to ralendor/go-ipfs that referenced this issue Jun 8, 2020
This also updates graphsync to use the new peertaskqueue.

fixes ipfs#6782
ralendor pushed a commit to ralendor/go-ipfs that referenced this issue Jun 8, 2020
This also updates graphsync to use the new peertaskqueue.

fixes ipfs#6782
ralendor pushed a commit to ralendor/go-ipfs that referenced this issue Jun 8, 2020
This also updates graphsync to use the new peertaskqueue.

fixes ipfs#6782
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants