box.slab.info()
-
box.slab.
info
()¶ Отображение обобщенного отчета по использованию памяти (в байтах) для распределения slab. Данный отчет используется для оценки риска нехватки памяти.
box.slab.info
выдает несколько показателей:- items_used_ratio
- arena_used_ratio
- quota_used_ratio
При мониторинге используемой памяти в memtx’е есть два возможных сценария:
1 сценарий: 0.5 <
items_used_ratio
< 0.9Очевидно, память сильно фрагментирована. Проверьте, сколько у вас классов slab, подсчитав количество различных классов с помощью
box.slab.stats()
. Если классов slab много (больше нескольких десятков), то память может закончиться, даже если её занято не так много. На каждом slab может быть использовано мало элементов. Но всякий раз при выделении кортежа, размер которого отличается от любого существующего класса, Tarantool может понадобиться новый slab из области распределения slab. И если осталось мало пустых slab, то произойдет попытка увеличения квоты, что, в свою очередь, может привести к ошибке нехватки памяти из-за низкой оставшейся квоты памяти.2 сценарий:
items_used_ratio
> 0.9Память заканчивается. Высокие показатели использования памяти. Память не фрагментирована, но каждый уровень механизма распределения slab почти пуст. Следует подумать об увеличении лимита памяти Tarantool (
box.cfg.memtx_memory
).Вывод: основной показатель нехватки памяти –
quota_used_ratio
. Тем не менее, существует множество абсолютно стабильных установок с высоким показателемquota_used_ratio
, поэтому необходимо обращать на это внимание, когда два других показателя также высоки (arena и item used).возвращает: quota_size
– лимит памяти для механизма распределения slab (как настроено в параметре memtx_memory, по умолчанию 2^28 байтов = 268 435 456 байтов)quota_used
– использовано механизмом распределения slabitems_size
– выделено только для кортежейitems_used
– использовано только для кортежейarena_size
– выделено для кортежей и индексов вместеarena_used
– использовано для кортежей и индексов вместеitems_used_ratio
=items_used
/items_size
quota_used_ratio
=quota_used
/quota_size
arena_used_ratio
=arena_used
/arena_size
тип возвращаемого значения: таблица
Пример:
tarantool> box.slab.info() --- - items_size: 228128 items_used_ratio: 1.8% quota_size: 1073741824 quota_used_ratio: 0.8% arena_used_ratio: 43.2% items_used: 4208 quota_used: 8388608 arena_size: 2325176 arena_used: 1003632 ... tarantool> box.slab.info().arena_used --- - 1003632 ...