-
Notifications
You must be signed in to change notification settings - Fork 387
Memory statistics specification
tarantool>memstat()
В тарантуле три арены - memtx arena, vinyl arena и runtime arena. В memtx arena размещены таплы данных и индексы memtx engine, в vinyl - данные vinyl engine, а в runtime - временные таплы, сетевые буфера, файберные регионы и вообще всё, что не имеет отношение к engine. Первые две арены имеют лимит размера памяти. Арена по мере увеличения количество данных в тарантуле постепенно потребляет все больше памяти вплоть до лимита, однако никогда не освобождает использованную память.
Арена используется для выделения блоков памяти круглогом размера (в двоичном смысле, 2^n). Есть максимально возможный размер слаба. После освобождения такого слаба он гарантированно может быть переиспользован. Для выделения слабов меньшего размера выделяется максимально возможный слаб и дробится до нужного размера. При этом возникает фрагментация.
Слабы используются для mempool allocators, призванных выделять блоки памяти фиксированного размера. Mempool allocator использует slabs достаточно размера и разбивает их на блоки требуемого размера, излишки wasted. При этом память неизбежно фрагментируется.
Для таплов используется small allocator который состоит из набора mempool аллокаторов разных размеров, определяемых настройками тарантула. Для выделения памяти любого размера ищется mempool allocator наиболее подходящего размера и блок выделяется им, излишки wasted.
Существуют механизмы собственной дефрагментации.
Естественно для работы mempool и small аллокаторов дополнительно затрачивается память для служебных нужд.
Что бы хотелось увидеть в этой статистике: Лимит арен. Реально использованная память аренами. Нетронутая аренами память. Память свободных крупных (альфа) слабов. Количество wasted памяти. Количество wasted памяти при аллоцировании memepools. Количество wasted памяти при аллоцировании таплов. Количество (потенциально) fragmented памяти. Количество (потенциально) fragmented памяти на уровне некрупных слабов. Количество (потенциально) fragmented памяти на уровне mempool allocators. Количество памяти затраченной для служебных нужд.
- C coding guidelines ↗
- Lua coding guidelines ↗
- Python coding guidelines ↗
- Maintainer's guide
- Debugging
Architecture
- Server architecture
- R tree index quick start and usage
- LuaJIT
- Vinyl
- Vinyl Architecture
- Vinyl Disk Layout
- Vinyl math
- Vinyl Cookbook
- Bullet1
- SQL
- Appserver modules
- Testing
- Performance
- Privileges and Access control
How To ...?
- ... configure build system
- ... add new fuzzers
- ... build RPM or Deb package using packpack
- ... calculate memory size
- ... debug core dump of stripped tarantool
- ... debug core from different OS
- ... debug fuzzer
- ... generate new bootstrap snapshot
- ... use Address Sanitizer
- ... collect a coredump
- ... generate luacov report for builtin module
- ... verify modified lua files via luacheck
- ... verify Lua files in third_party?
- ... rerun failed jobs
- ... update a third party repository
- Fix wrong decimal indexing after upgrade to 2.10.1
- Caveats when upgrading a cluster on Tarantool 1.6
- Fix illegal field type in a space format when upgrading to 2.10.4
Useful links