-
Notifications
You must be signed in to change notification settings - Fork 11
Filesystem Package Managers and rsync #81
Comments
👍 The work being done around the overarching FS API effort (#71) should likely tie into this. It seems likely that there will be a lot of overlap between a purpose made syncing tool, and a performant FS API. Semi-related: #74 (comment) |
During our meeting, we talked about the idea of using existing benchmarking tools, that are meant for traditional filesystems, and using them to target our mount implementation. As well as the idea of building harnesses that simply act as 9P clients that attach to our FS server (on the daemon). This would also give us an idea of the overhead associated with using the FS protocol, when compared against benchmarks that are using the underlying APIs directly. The nice thing about this, is that it should just come naturally as the implementation progresses. As it becomes more technically correct (spec compliant), we can simply target it with existing testing software. |
I think that the performance problems are simple enough to find. For example just reading a locally cached file is incredibly slow and
|
@kevincox I believe there have been a number of performance improvements made recently, although they have not been released yet as 0.5.0, might be worth testing against master of go-ipfs as well |
I tried again on latest git and while the results were better they weren't great. It was now using <400% CPU and transferring a bit fast. I think this is more than "performance improvement" range. Someone needs to take a look at the architecture and make fundamental changes.
|
@kevincox do you mind giving a little more information on what you are doing?
|
|
One other note. I tried with default fixed-sized chunking and rabin. The speed was roughly the same in either case. |
@kevincox the FUSE implementation definitely needs some reworking. A contributor was working on an upgrade #74, but unfortunately got pulled away before it could be completed. If you're interested in helping out take a look, I'm sure the help would be appreciated, I know the contributor is interested in continuing work on the implementation as well once he's available. |
[This post is meant to give some insight as to what those branches are, and my intent on what to do with them.] I would advise against focusing on the experimental mount branches as they are complete rewrites that were not well received. They covered more platforms and were more performant when functioning, but are a practical dead end due to their large complexity/breadth. Focusing on improving the existing implementation seems more likely to have impact in the short term. (albeit at the cost of being platform bound.) At current, I am working on a branch which combines the efforts and orchestrates them via the As for my availability, I'm struggling with some personal difficulty that could go either way. I'd honestly rather work on this but I don't know when I'll be freed up, if at all. |
We seem to be running into issues where using
rsync
on top of IPFS to load filesystem Package Manager registries into IPFS. These issues largely stem from IPFS simply being a different application than an OS's file system. There are a number of potential avenues to explore here that can each solve this problem.ipfs pin add --recursive --best-effort --force <path>
which would change the folder from being strongly pinned (data is definitely kept) to weakly pinned (it's probably there, but no promises). Then dorsync
, thenipfs pin add --recursive <path>
to strongly re-pin the data.Notably each of these approaches basically amount to writing an IPFS application that properly handles rsync, whether we do it explicitly (ipsync, or a shell script) or implicitly (FUSE). When deciding a path forward we'll need to take into account Performance, DX for package managers, and Reusability beyond package managers.
Note: See #21 for more info
The text was updated successfully, but these errors were encountered: