mergerfs/mkdocs/docs/config/readahead.md
Antonio SJ Musumeci 75d7a93724 Rework mkdocs based documentation
Lots of restructoring and extra information.
2025-01-03 12:17:26 -06:00

38 lines
1.6 KiB
Markdown

# readahead
Sets the mergerfs and underlying filesystem `readahead` values. The
value unit is in kibibytes.
* `readahead=1024`
While the max size of messages sent between the kernel and mergerfs is
configurable via the [fuse_msg_size](fuse_msg_size.md) option that
doesn't mean that is the size used by the kernel for read and
writes.
Linux has a max read/write size of 2GB. Since the max FUSE message
size is just over 1MB the kernel will break up read and write requests
with buffers larger than that 1MB.
When page caching is disabled (`cache.files=off`), besides the kernel
breaking up requests with larger buffers, requests are effectively one
for one to mergerfs. A read or write request for X bytes is made to
the kernel and a request for X bytes is made to mergerfs. No
[readahead](https://en.wikipedia.org/wiki/Readahead) behavior will
occur because there is no page cache available for it to store that
data. In FUSE this is referred to as "direct IO". Note that "direct
IO" is not the same as `O_DIRECT`.
When page caching is enabled the kernel can and will utilize
`readahead`. However, there are two values which impact the size of
the `readahead` requests. The filesystem's `readahead` value and the
FUSE `max_readahead` value. Whichever is lowest is used. The default
`max_readahead` in mergerfs is maxed out meaning only the filesystem
`readahead` value is relevant.
Preferably this value would be set by the user externally since it is
a generic feature but there is no standard way to do so mergerfs added
this feature to make it easier to set.
There is currently no way to set separate values for different
branches through mergerfs.