Max FUSE throughput
FUSE (Filesystem in Userspace) is a Linux kernel interface that allows filesystems to be implemented in userspace programs rather than in the kernel itself. MooseFS uses FUSE to expose its distributed filesystem as a standard mount point on Linux and FreeBSD.
FUSE communicates with the kernel through a pipe. A single pipe has a maximum throughput, and that throughput is simultaneously the upper limit for a single mount — summing all I/O operations in both directions.
Each mount creates a new FUSE connection instance with its own pipe, so the limit applies per mount, not per machine.
The exact throughput depends on the kernel version and the hardware it runs on, so no fixed number can be given. On reasonably modern hardware, the order of magnitude is 4–5 GiB/s per mount.
Bypassing the per-mount limit
When saturating high-speed networks from a single machine, the per-mount ceiling can be worked around in two ways:
- Use the MooseFS Client library directly — this approach bypasses the FUSE single-pipe limitation (and any other FUSE limitation) by having your program communicate with MooseFS components directly. It requires the program to be customized to use MooseFS I/O calls (which are generally POSIX-compatible), rather than relying on standard POSIX calls.
- Use multiple mounts on the same machine — this approach allows you to scale up throughput, as each mount gets its own pipe and therefore its own throughput budget. However, it requires you to be able to divide your tasks into independent groups, as each mount has its own independent data cache.
If you are not sure which approach suits your needs better, contact MooseFS Support.