You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.8 KiB

  1. # PERFORMANCE
  2. mergerfs is at its core just a proxy and therefore its theoretical max
  3. performance is that of the underlying devices. However, given it is a
  4. FUSE filesystem working from userspace there is an increase in
  5. overhead relative to kernel based solutions. That said the performance
  6. can match the theoretical max but it depends greatly on the system's
  7. configuration. Especially when adding network filesystems into the mix
  8. there are many variables which can impact performance. Device speeds
  9. and latency, network speeds and latency, general concurrency,
  10. read/write sizes, etc. Unfortunately, given the number of variables it
  11. has been difficult to find a single set of settings which provide
  12. optimal performance. If you're having performance issues please look
  13. over the suggestions below (including the benchmarking section.)
  14. NOTE: be sure to read about these features before changing them to
  15. understand what behaviors it may impact
  16. - disable `security_capability` and/or `xattr`
  17. - increase cache timeouts `cache.attr`, `cache.entry`, `cache.negative_entry`
  18. - enable (or disable) page caching (`cache.files`)
  19. - enable `parallel-direct-writes`
  20. - enable `cache.writeback`
  21. - enable `cache.statfs`
  22. - enable `cache.symlinks`
  23. - enable `cache.readdir`
  24. - change the number of worker threads
  25. - disable `posix_acl`
  26. - disable `async_read`
  27. - test theoretical performance using `nullrw` or mounting a ram disk
  28. - use `symlinkify` if your data is largely static and read-only
  29. - use tiered cache devices
  30. - use LVM and LVM cache to place a SSD in front of your HDDs
  31. - increase readahead: `readahead=1024`
  32. If you come across a setting that significantly impacts performance
  33. please contact trapexit so he may investigate further. Please test
  34. both against your normal setup, a singular branch, and with
  35. `nullrw=true`