我正在使用 Ubuntu 12.04 和 XFS(内核 3.2.0-38-generic)。由于 XFS inode 缓存占用太多内存,因此我想限制用于缓存 XFS inode 的对象数量。
根据手册,我可以通过向 /proc/slabinfo 写入 limit 来限制数量。但是即使具有超级用户权限,我也无法写入 /proc/slabinfo。
$ echo “xfs_inode 1024 0 0” | sudo tee /proc/slabinfo xfs_inode 1024 0 0 tee:/proc/slabinfo:输入/输出错误
有什么问题?有什么方法可以限制 slab 缓存中的对象数量吗?
答案1
不幸的是,该slabinfo(5)
页面已经过时了。如果我理解正确的话,在配置为使用 SLUB 分配器(自 Linux 2.6.22 开始可用,现在是默认的内核内存分配器)的内核中,该文件不可写入。请参阅内核源文件和中/proc/slabinfo
的对比定义。在 中,只会失败并显示错误。slabinfo_write()
mm/slub.c
mm/slab.c
mm/slub.c
slabinfo_write()
EIO
编辑:刚刚通过编译内核以使用 SLAB 分配器而不是默认的 SLUB 分配器证实了我的理解。在这种情况下, 可以/proc/slabinfo
按照原始问题中提出的方式写入。使用CONFIG_SLUB
,文件不可写,可调参数显示为 0。