Я использую Ubuntu 12.04 и XFS (ядро 3.2.0-38-generic). Поскольку кэш индексных дескрипторов XFS использует слишком много памяти, я хочу ограничить количество объектов, используемых для кеширования индексных дескрипторов XFS.
Согласно руководству, я могу ограничить количество, написав limit в / proc / slabinfo. Но я не могу писать в / proc / slabinfo даже с привилегиями суперпользователя.
$ echo "xfs_inode 1024 0 0" | sudo tee /proc/slabinfo xfs_inode 1024 0 0 tee: /proc/slabinfo: Input/output error
В чем проблема? Есть ли способ ограничить количество объектов в кэше slab?
В 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.