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

pebble+kubo setup instructions needed #29

Open
pyromaniac3010 opened this issue Mar 22, 2023 · 3 comments
Open

pebble+kubo setup instructions needed #29

pyromaniac3010 opened this issue Mar 22, 2023 · 3 comments
Labels
effort/weeks Estimated to take multiple weeks exp/expert Having worked on the specific codebase is important P2 Medium: Good to have, but can wait until someone steps up

Comments

@pyromaniac3010
Copy link

Hello,

we are about to setup a multi terabyte size ipfs server with kubo and would love to directly try out the pebble datastore. I know it is still experimental, but running kubo with several terabytes of data on flatfs is a big pain as garbage collection is not working at all.
Unfortunately I cannot find any documentation on how to set this up.
It would be great if you could share some setup instructions on how to use go-ds-pebble with kubo.

Thanks a lot in advance!

@Dreamacro
Copy link

kubo doesn't provide pebble store. I have a custom ipfs implementation depending on boxo. I chose pebble as datastore, and flatfs as blockstore (which stores the real file block).

After changing leveldb store to pebble store, the speed of GC has increased by at least dozens of times. So it's not flatfs that's to blame for slow GC, it's leveldb. I also tried leveldb and pebble as blockstore, but the CPU and memory usage is unacceptable.

@lidel lidel changed the title setup instructions needed pebble+kubo setup instructions needed Feb 20, 2024
@lidel
Copy link
Member

lidel commented Feb 20, 2024

FWIW I've filled ipfs/kubo#10347 to track bunding the pebbleds plugin with kubo, just like we do with legacy badgerds. Documentation + profiles are part of that.

@Dreamacro mind sharing more information about your experience with pebble?
did you end up using it only for pins, or do you also use it for blocks (flatfs replacement)?
what is the size of your repo (in GiB, and number of pins/blocks)?

@lidel lidel added P2 Medium: Good to have, but can wait until someone steps up exp/expert Having worked on the specific codebase is important effort/weeks Estimated to take multiple weeks labels Feb 20, 2024
@Dreamacro
Copy link

Dreamacro commented Feb 23, 2024

@lidel Sure, we use two modes in different situations:

  1. On Windows, we use filestore only to store raw files, all machines store around 50GiB~300GiB. We need often to add or delete files so we need to do GC frequently. Since filestore only stores file references to /blocks/, so finally we choose pebble store only. We tested a variety of stores (including leveldb badger3/4 and pebble), of which pebble is amazingly good on GC.
  2. On Linux, we use old-school pebble and flatfs for /blocks/, all nodes store less than 1TB, and we need to clean and do GC when the disk is almost full. pebble wins the test again.

did you end up using it only for pins, or do you also use it for blocks (flatfs replacement)?

When not storing raw file blocks at all, such as filestore, pebble can be used exclusively instead of flatfs. Otherwise, just use pebble+flatfs instead of the current leveldb+flatfs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
effort/weeks Estimated to take multiple weeks exp/expert Having worked on the specific codebase is important P2 Medium: Good to have, but can wait until someone steps up
Projects
None yet
Development

No branches or pull requests

3 participants