GANESHA-CACHE-CONFIG(8)
NAME π
ganesha-cache-config β the NFS Ganesha Cache Configuration File, bestie. it's the whole vibe of how ganesha caches stuff β¨
SYNOPSIS π
/etc/ganesha/ganesha.conf
DESCRIPTION πΈ
okay so, NFS-Ganesha reads the configuration data from: /etc/ganesha/ganesha.conf
and literally, this file is where all the NFS-Ganesha Cache config options live. that's the whole thing. that's the file. π
MDCACHE {} π¦
the main character section fr. everything in here is about the mdcache, no cap.
NParts(uint32, range1to32633, default7) β Partitions in the MDCACHE tree. that's it, that's the number of partitions π«ΆCache_Size(uint32, range1toUINT32_MAX, default32633) β Per-partition hash table size. so like, each partition gets its own hash table and this is how big it is β¨Use_Getattr_Directory_Invalidation(bool, defaultfalse) β Use getattr for directory invalidation. lowkey self-explanatory, she's doing directory invalidation via getattr.Dir_Chunk_Enable(bool, defaulttrue) β Enable or disable directory chunking. and listen, if you wanna turn it off, set this tofalseinstead of settingDir_Chunkto0. that's the move πDir_Chunk(uint32, range0toUINT32_MAX, default128) β Size of per-directory dirent cache chunks.0means directory chunking is not enabled. Dir_Chunk should always be enabled, fr fr. Most FSAL modules β especiallyFSAL_RGW/FSAL_GLUSTERβ need it to make readdir work well. note that if you set it to0, thenDir_Chunk_Enablewill be set tofalseandDir_Chunkwill be set to the default of128. the way she just overrides you πDetached_Mult(uint32, range1toUINT32_MAX, default1) β Max number of detached directory entries, expressed as a multiple of the chunk size. math girlie π§Entries_HWMark(uint32, range1toUINT32_MAX, default100000) β The point at which object cache entries will start being reused. the high water mark, the line you do not cross πEntries_Release_Size(uint32, range0toUINT32_MAX, default100) β The number of entries attempted to release each time when the handle cache has exceeded the entries high water mark. she's trying her best okay πChunks_HWMark(uint32, range1toUINT32_MAX, default1000) β The point at which dirent cache chunks will start being reused.Chunks_LWMark(uint32, range1toUINT32_MAX, default1000) β The target for reaping dirent cache chunks to drain the cache. the low water mark bestie, the drain goal π§
okay so this next part is a whole paragraph and you need it, so here it is:
Entries_HWMark, Dir_Chunk, Chunks_HWMark, Chunks_LWMark all play together. While a dirent chunk is cached, the object cache entries that are part of that dirent chunk will be retained in the cache indefinitely. Note that this means that possibly Chunks_LWMark * Dir_Chunk entries will be retained. If this is larger than Entries_HWMark, then the object cache may end up remaining above Entries_HWMark for a significant time. Consider the average size of the directories and the number of directories desired to be maintained in the cache and set Chunks_LWMark appropriately.
and ALSO: note that Chunks_LWMark defaults to the same value as Chunks_HWMark, and these are set to 1/100 of Entries_HWMark, suggesting an average directory size of 100. It may be desirable to set Chunks_LWMark less than Chunks_HWMark if it is desirable to allow large directory chunks to not immediately be re-used, but it is desirable to in the short term drain the dirent cache down to a smaller number. iykyk π
LRU_Run_Interval(uint32, range1to24 * 3600, default90) β Base interval in seconds between runs of the LRU cleaner thread. she runs on a schedule, like clockwork β°Cache_FDs(bool, defaulttrue) β IfCache_FDsis set tofalse, the reaper thread aggressively closes FDs, significantly reducing the number of open FDs. This will help to maintain a minimal number of open FDs.
If Cache_FDs is set to true (the default), FDs are cached, and the LRU reaper thread closes FDs only when the current open FD count reaches or exceeds the fds_lowat threshold.
Note, this setting has no effect when Close_Fast is set to true. (she's got a whole other mode, don't bother her)
Close_Fast(bool, defaultfalse) β Whether to close files immediately after opening files and using them for read/write/commit. fast in, fast out, no lingering πβοΈFD_Limit_Percent(uint32, range0to100, default99) β The percentage of the system-imposed maximum of file descriptors at which Ganesha will deny requests. so at99%she's like okay we're full, no more πFD_HWMark_Percent(uint32, range0to100, default90) β The percentage of the system-imposed maximum of file descriptors above which Ganesha will make greater efforts at reaping. panic mode activated π₯FD_LWMark_Percent(uint32, range0to100, default50) β The percentage of the system-imposed maximum of file descriptors below which Ganesha will not reap file descriptors. chill zone, no reaping down here πReaper_Work(uint32, range1to2000, default0) β Roughly, the amount of work to do on each pass through the thread under normal conditions. (Ideally, a multiple of the number of lanes.)
this setting is deprecated. Please use Reaper_Work_Per_Lane instead. she's retired, let her rest π
Reaper_Work_Per_Lane(uint32, range1toUINT32_MAX, default50) β This is the number of handles per lane to scan when performing LRU maintenance. This task is performed by the Reaper thread. the glow-up replacement β¨Biggest_Window(uint32, range1to100, default40) β The largest window (as a percentage of the system-imposed limit on FDs) of work that we will do in extremis. we're going through it but we're still working π«Required_Progress(uint32, range1to50, default5) β Percentage of progress toward the high water mark required in a pass through the thread when in extremis. (yes the original says "in in", she's typing fast, we love her anyway)Futility_Count(uint32, range1to50, default8) β Number of failures to approach the high watermark before we disable caching, when in extremis. give up after8bestie, it's over πDirmap_HWMark(uint32, range1toUINT32_MAX, default10000) β The point at which dirmap entries are reused. This puts a practical limit on the number of simultaneous readdirs that may be in progress on an export for a whence-is-name FSAL (currently onlyFSAL_RGW). one at a time please π¦Files_Delegatable_Percent(int32, range10to90, default90) β Total number of files ganesha can delegate to clients as a percent ofEntries_HWMark. sharing is caring πUse_Cached_Owner_On_Owner_Override(bool,true) β This option allowsmdcache_test_accessto use the cached owner value for an object in case of owner override, even if the cache entry is not up to date. This could potentially lead to the wrong result, but can significantly improve performance, saving the need to update attributes on many read/write operations.
heads up: she said it could potentially lead to the wrong result. you've been warned, gorgeous π
SEE ALSO π
ganesha-config <>(8)
and that's the whole page, periodt π
β¨ thanks for reading the entire thing, you ate. this was NFS-Ganesha, dated Aug 11, 2026, and it's giving GANESHA-CACHE-CONFIG(8) main character energy. love u, go configure something ππ¦π
π¦ where this page comes from
- fedora 44: nfs-ganesha 9.16-4.fc44 Β· LGPL-3.0-or-later
- fedora 44: nfs-ganesha 9.16-4.fc44 Β· LGPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms