table of contents
slabinfo(5) | File Formats Manual | slabinfo(5) |
ИМЯ¶
slabinfo - сводная таблица использования блоков кэша (slab) ядра
СИНТАКСИС¶
cat /proc/slabinfo
ОПИСАНИЕ¶
Часто используемые объекты в ядре Linux (заголовки буферов, иноды, элементы dentry и тп.) имеют свои собственные кэши. В файле /proc/slabinfo отражена статистика их работы. Пример (отредактированный) содержимого этого файла:
$ sudo cat /proc/slabinfo slabinfo - version: 2.1 # name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> ... sigqueue 100 100 160 25 1 : tunables 0 0 0 : slabdata 4 4 0 sighand_cache 355 405 2112 15 8 : tunables 0 0 0 : slabdata 27 27 0 kmalloc-8192 96 96 8192 4 8 : tunables 0 0 0 : slabdata 24 24 0 ...
В первой строке содержится номер версии, который позволяет приложению, читающему файл, определить формат файла (смотрите ВЕРСИИ ниже). В следующей строке перечисляются имена столбцов в оставшихся строках.
В каждой оставшейся строке выводится информация об определённом кэше. После имени данные каждого кэша делятся на три компонента:
- •
- статистика
- •
- регулировки (tunables)
- •
- slabdata
Поля статистики:
- active_objs
- Количество активных (т. е., использующихся) в данный момент объектов.
- num_objs
- Общее количество выделенных объектов (т. е., используемых и не используемых объектов).
- objsize
- Размер объектов в этом кэше (slab), в байтах.
- objperslab
- Количество объектов, хранящихся в каждом кэше (slab).
- pagesperslab
- Количество страниц, выделенных для каждого кэша (slab).
Элементы регулировок в каждой строке содержат подстроечные параметры соответствующего кэша. При использовании выделителя по умолчанию SLUB они отсутствуют, файл /proc/slabinfo недоступен для записи и в этих полях показываются значения 0. При использовании старого выделителя SLAB регулировки определённого кэша можно изменять посредством записи строк в формате /proc/slabinfo:
# echo 'name limit batchcount sharedfactor' > /proc/slabinfo
Здесь name — имя кэша, limit, batchcount и sharedfactor — целые числа, задающие новые значения соответствующих регулировок. Значение limit должно быть положительным, batchcount должно быть положительным числом меньшим или равным limit, а sharedfactor должно быть неотрицательным. Если одно из значений некорректно, то настройки кэша не изменяются.
Записи регулировок в каждой строке имеют следующие поля:
- limit
- Максимальное количество объектов, которые будут кэшироваться.
- batchcount
- Для многопроцессорных систем здесь задаётся количество объектов передаваемых одновременно, происходит наполнение списка доступных объектов.
- [Будет описано]
Записи slabdata в каждой строке имеют следующие поля:
- active_slabs
- Количество активных кэшей (slabs).
- nums_slabs
- Общее количество активных кэшей (slabs).
- [Будет описано]
Заметим, что из-за выравнивания объектов и заголовков блоков кэша объекты обычно не упакованы ровно по страницам. Страницы даже с единственным используемым объектом уже сами считаются используемыми и не могут быть высвобождены.
Ядра с включённым параметром CONFIG_DEBUG_SLAB также будут выдавать в каждой дополнительные поля статистики, а в первой строке файла будет слово «(statistics)». Поля статистики: максимальная отметка по активным объектам, количество раз, когда был выделен объект, количество раз, когда кэш рос (в этот кэш добавлялись новые страницы), количество раз, когда кэш урезался (из этого кэша удалялись неиспользуемые страницы), количество раз, когда возникала ошибка при выделении новых страниц для кэша.
ВЕРСИИ¶
Фай /proc/slabinfo впервые появился в Linux 2.1.23. Файл содержит номер версии, которых было создано несколько с разными форматами:
- 1.0
- В ядрах Linux 2.2.x.
- 1.1
- В ядрах Linux 2.4.x.
- 1.2
- Формат, существовавший короткое время в разрабатываемых версиях Linux 2.5.
- 2.0
- В ядрах Linux 2.6.x по Linux 2.6.9, включительно.
- 2.1
- Текущий формат, появился в Linux 2.6.10.
ПРИМЕЧАНИЯ¶
Только суперпользователь может читать и (если ядро собрано с CONFIG_SLAB) изменять файл /proc/slabinfo.
Общее количество памяти, выделенное под кэш SLAB/SLUB, показано в поле Slab файла /proc/meminfo.
СМОТРИТЕ ТАКЖЕ¶
Файл из дерева исходного кода ядра Documentation/vm/slub.txt и tools/vm/slabinfo.c.
ПЕРЕВОД¶
Русский перевод этой страницы руководства разработал Alexander Golubev <fatzer2@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras <sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику по его адресу электронной почты или по адресу списка рассылки русских переводчиков.
2 мая 2024 г. | Linux man-pages (unreleased) |