-
-
Notifications
You must be signed in to change notification settings - Fork 3k
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
Add 'nosync' option #1616
Comments
yeah this option would be nice. |
I can add it pretty easily by patching flatfs in dev0.4.0 (where we actually respect the config for datastores) |
Thanks. Performance of |
@davidar i'll set up a branch for you with nosync hardcoded so you can work faster. |
@whyrusleeping much appreciated :) |
@whyrusleeping I'm getting the following error when trying to build (on both temp-nosync and dev0.4.0 branches):
|
@davidar for now https://github.com/rht/go-ipfs/tree/dev0.4.0 and https://github.com/rht/go-ipfs/tree/temp-nosync, rebased on current master. |
Thanks @rht |
@whyrusleeping @rht Hmm, no dice. The temp-nosync branch is still painfully slow trying to add a directory with lots of small files (eta approaching 400h). |
Dependency: ipfs/go-datastore#30. (sync) up to 1000 files with each 1KB (nosync) up to 1000 files with each 1KB (nosync) up to 5000 files with each 1KB (the bottleneck hasn't been characterized yet) |
@rht only git is fair comparison. other's not really. but anyway, sure. let's add it both:
|
@jbenet git still beats the pants off ipfs though (if I squint, I can almost see the line for git :p) |
nice. @rht want to shepherd these changes? we need:
|
This is a major bottleneck to the archiving effort (otherwise ipfs archive could have meshed with ia sooner). It's rather I'm writing the change (global config one) right away after you merge the sync flag in go-datastore. |
(and on top of dev0.4.0 after dev0.4.0 rebase, since it has a lot of datastore changes) |
Even with nosync, there's still a major bottleneck somewhere :/ |
Yes but at least faster than sync-sqlite. Here is a breakdown of why things are slow: git: 278ms
Bottleneck of both
|
The slowest part that can be optimized is perhaps What about |
It seems like a zipper could help here, which allows efficient traversal and mutation of persistent datastructures (like merkledags). This is what @argonaut-io uses, for example. |
Worth implementing, I think. It appears that there exists a filesystem based on zipper (http://okmij.org/ftp/continuations/zipper.html). The merkle version of zipper is possible if the root hash and the sub-root hashes along the path to the nodes (node(s) for the case of concurrent mutation) aren't precomputed. In (@davidar now you don't have to squint #1964 (comment)) |
(@whyrusleeping perhaps zipper could be a name for what you requested in https://github.com/ipfs/go-ipfs/blob/master/unixfs/mod/dagmodifier.go#L36 ?) |
@rht i forgot about that comment, something along the lines of zipper sounds good to me there |
zipper 👍 |
Haha, of course Oleg would have written such a thing |
@rht I want to deploy nosync to castor.i.ipfs.io, which branch should I use? Is there one based on dev0.4.0? |
@lgierth https://github.com/ipfs/go-ipfs/tree/dev0.4.0 contains nosync (by @whyrusleeping since 3 days ago). Sorry should have notified. |
lovely :) |
is this issue good to be closed, then? |
|
From #1324:
The text was updated successfully, but these errors were encountered: