slabinfo(5) сводная таблица использования блоков кэша (slab) ядра

ОБЗОР

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.