Repository navigation
Any plans for FUSE passthrough (kernel 6.9+) to cut per-op overhead on cached reads? #7293
Replies: 2 comments 3 replies
|
|
Thanks, this was really helpful — profile/accesslog pointed straight at the bottleneck. Context on the workload: it's a build-output tree, ~740k files, median size ~2.6 KB (very small-file heavy), though ~95% of the bytes are in the 7.6% of files over 128 KB. Reads during a build are a mix — lots of small random opens plus some large sequential reads during image packaging. I tried So it's almost entirely Two questions if you have a moment:
Thanks again! |
Uh oh!
There was an error while loading. Please reload this page.
We're evaluating JuiceFS to serve a large build cache — a big tree of build outputs (100+ GB, hundreds of thousands of mostly-small files) kept in S3. We mount it read-only with OverlayFS on top so builds write locally and never modify the cache, pull content lazily, and use
juicefs warmupto pre-load the working set into the local cache before/while the build runs.One thing stood out in benchmarking: even once the working set is fully cached locally, reads are noticeably slower than reading the same files from a plain local ext4 copy of the tree — about 25% slower end-to-end for the identical workload. Since the data is already on local disk at that point, the gap looks like the FUSE userspace round-trip on every open/read rather than actual I/O or network.
Kernel 6.9 added FUSE passthrough, which lets read/write/mmap go straight to a backing file and skip the userspace hop, and go-fuse (which JuiceFS uses) already has the primitives —
FOPEN_PASSTHROUGHand backing-fd registration. Is using passthrough for fully-cached files something that's been considered, or on the roadmap? I'm guessing the chunked block cache makes it tricky, since a cached file isn't a single contiguous backing file on disk — is that the main blocker, or is there more to it?More broadly, if there's a recommended way to reduce per-op overhead for read-heavy, mostly-cached workloads (short of the Python SDK — that doesn't fit here since the reader is an ordinary build tool using normal file syscalls), I'd be glad to hear it. Thanks!
All reactions