Skip to content
This repository has been archived by the owner on Feb 8, 2023. It is now read-only.

flatfs observations #5

Closed
jbenet opened this issue May 6, 2015 · 0 comments
Closed

flatfs observations #5

jbenet opened this issue May 6, 2015 · 0 comments

Comments

@jbenet
Copy link
Member

jbenet commented May 6, 2015

some random collection of observations.

fanout

6k entries in top level

> ls ~/.ipfs/blocks/ | wc -l
6497

not yet sure whether this size (4bytes of fanout) is better than nesting multiple fanout levels. we'll need real benchmarks for the various platforms

  • currently have 4 bytes of fanout, and 1 level.
  • but 2 bytes are multihash prefix (mostly useless), so only 2 bytes of fanout.
  • git uses 1 byte of fanout (and 1 level?)
  • git uses pack files for storing most objects

multihash prefix in fanout

entries include the multihash prefix, maybe could definitely split on the multihash prefix (2 bytes), so that there's one dir per multihash combination, which helps since multihash combinations are very few (not uniform). this also avoids repeating each prefix on every entry. so maybe:

/Users/jbenet/.ipfs/blocks/
├── 1220
│   └── 0006
│              └── 12200006a05b63b68a923a5ad57c0830459697ef8922d69fb31a3efe72e563727b24.data

observations from @tv42

18:27 <Tv`> ipfs keys are "/", 2 bytes from multihash, and then uniform distribution
18:27 <Tv`> when i picked that value 4, that lead to a little higher than 256 way split
18:28 <Tv`> after that, a commit was added that stripped the "/" (and made assumptions i wasn't ready to make; if there ever is a key without that, it screws up; and if it's always there, what's the value of)
18:28 <Tv`> so now the sharding data is 2 non-random bytes, 2 random bytes
18:29 <Tv`> actually, let's see whether it shards before or after the skipping of "/" was added...
18:29 <Tv`> after
18:29 <Tv`> so what i said above holds, afaik
18:30 <Tv`> so by that logic, now the tunable 4 should result in up to about 65k top-level dirs in ~/.ipfs/blocks
18:30 <Tv`> which is fine, the dirs will be a little empty for small setups, which is mostly a waste of inodes, but not a huge concern
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants