主要观点:在 OpenBSD 文件系统子系统中,用户可通过调整sysctl vfs.ffs.dirhash_maxmem
来增加目录哈希缓存的最大值,以优化文件查找。
关键信息:
- OpenBSD 文件系统子系统可分为 VFS、UFS 和 FFS 三部分,UFS 活动聚焦于 inode,FFS 实现文件存储优化。
dirhash
为大目录创建内存哈希表,将文件查找从慢线性搜索变为快常量时间搜索。ufsdirhash_init
代码中初始缓存为 5MB,可通过sysctl(8)
调整,如sysctl vfs.ffs.dirhash_maxmem=52428800
。- 可通过
doas find / >/dev/null
让系统查找所有文件来缓存查找,可根据系统内存等情况调整dirhash_maxmem
的值及缓存预热方式。
重要细节: - 作者在服务器和桌面系统上观察到
dirhash_maxmem
的值,在桌面系统上将其增加到 50MB,该系统有很多大的 cvs/git 仓库和大量文件。 - 执行
find /
后,dirhash_mem
的值为 28483627(约 27MB),可将此值作为最大值并加 10%缓冲,或保持 50MB 不变,因系统有 32GB 内存。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。