ОБЗОР
cat /proc/slabinfo
ОПИСАНИЕ
Часто используемые объекты в ядре Linux (заголовки буферов, записи inode,
элементы dentry и т.п.) имеют свой собственный кэш-блок. В файле
/proc/slabinfo отражена статистика их работы. Например:
% cat /proc/slabinfo slabinfo - version: 1.1 kmem_cache 60 78 100 2 2 1 blkdev_requests 5120 5120 96 128 128 1 mnt_cache 20 40 96 1 1 1 inode_cache 7005 14792 480 1598 1849 1 dentry_cache 5469 5880 128 183 196 1 filp 726 760 96 19 19 1 buffer_head 67131 71240 96 1776 1781 1 vm_area_struct 1204 1652 64 23 28 1 ... size-8192 1 17 8192 1 17 2 size-4096 41 73 4096 41 73 1 ...
Для каждого кэш-блока выводится: название, количество активных объектов на текущий момент, общее число доступных объектов, размер каждого объекта в байтах, количество страниц как минимум с одним активным объектом, общее число размещённых страниц и число страниц в каждом блоке.
Заметим, что из-за выравнивания объектов и заголовков блоков кэша объекты обычно не упакованы ровно по страницам. Страницы даже с единственным используемым объектом уже сами считаются используемыми и не могут быть высвобождены.
Ядра, собранные с поддержкой статистики использования блоков кэша в начале вывода содержат строку "(statistics)", а также 5 дополнительных колонок: верхняя отметка для активных объектов; количество раз когда производилось размещение под объекты; количество увеличений размера кэша (то есть число добавлений новых страниц к кэшу); количество уплотнений кэша (то есть сколько раз удалялись пустые страницы из кэша); количество ошибок при размещении новых страниц в этом кэше. Если статистика блоков кэша не включена для ядра, то эти колонки не будут показаны.
Многопроцессорные системы имеют в начале вывода статистики строку "(SMP)", а также две дополнительных колонки для каждого блока, показывающие политики размещения блоков для локального кэша процессора (для снижения необходимости в межпроцессорной синхронизации при размещении объектов в кэше). Первая колонка хранит предел для каждого процессора: максимальное число кэшируемых объектов для каждого процессора. Второй колонкой является счетчик: максимальное число свободных объектов в общем кэше, передаваемое в кэш каждого процессора (если он пуст) или число объектов, возвращаемых в общий кэш, если кэш процессора заполнен полностью.
Если для блоков кэша показаны и statistics и SMP, то будет ещё четыре дополнительных колонки, сообщающих о статистике кэша для каждого процессора. Первые две являются счетчиками попадания и промахов кэша для каждого процессора: то есть сколько раз объект был (или не был) в кэше. Следующие две являются счетчиками попаданий и промахов высвобождений объектов, то есть сколько раз объект мог (или не мог) попасть внутрь предела кэша для каждого процессора перед сбросом объектов в глобальный кэш.
Можно настраивать границы и счетчики блоков кэша для каждого процессора (в мультипроцессорной системе SMP) с помощью:
echo "cache_name limit batchcount" > /proc/slabinfo
ФАЙЛЫ
<linux/slab.h>ВЕРСИИ
Файл /proc/slabinfo существует с Linux 2.1.23. Кэши для отдельных процессоров в многопроцессорных системах (SMP) существуют начиная с Linux 2.4.0-test3.
ЗАМЕЧАНИЯ
Начиная с Linux 2.6.16 файл /proc/slabinfo существует, только если
включён параметр настройки ядра CONFIG_SLAB.