Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feedback: box.runtime.info() | Tarantool #2911

Closed
TarantoolBot opened this issue Jun 1, 2022 · 7 comments · Fixed by #2942
Closed

feedback: box.runtime.info() | Tarantool #2911

TarantoolBot opened this issue Jun 1, 2022 · 7 comments · Fixed by #2942
Assignees
Labels
reference [location] Tarantool manual, Reference part rewrite [nature] Revise existing text for structure/phrasing/terms

Comments

@TarantoolBot
Copy link
Collaborator

TarantoolBot commented Jun 1, 2022

<…>lloc is the maximal memory quota that can be allocated for Lua;
|used is the current memory size used by Lua|.

Return type:table

Example:
box.runtime.info()
box.runtime.in<…>

https://www.tarantool.io/en/doc/latest/reference/reference_lua/box_slab/runtime_info/

As I (@Totktonada) see from the code, it has no relation to Lua memory.


@patiencedaur: clarify the difference between "Lua memory" and "memory occupied by certain Tarantool Lua objects"

@patiencedaur patiencedaur self-assigned this Jun 2, 2022
@patiencedaur patiencedaur added factual error Factual error in functionality description reference [location] Tarantool manual, Reference part labels Jun 2, 2022
@Totktonada
Copy link
Member

The code is the following.

src/box/lua/slab.cc#L240-L242:

static int
lbox_runtime_info(struct lua_State *L)
{
	<...>
	lua_pushstring(L, "used");
	luaL_pushuint64(L, runtime.used);
	lua_settable(L, -3);
	<...>
}

src/lib/core/memory.h#L45-L46:

/* Global runtime memory. */
extern struct slab_arena runtime;

src/lib/small/include/small/slab_arena.h#L94-L98:

struct slab_arena {
	<...>
	/**
	 * How much memory in the arena has
	 * already been initialized for slabs.
	 */
	size_t used;
	<...>
};

Related discussion: tarantool/tarantool#7106.

@patiencedaur
Copy link
Contributor

patiencedaur commented Jun 2, 2022

Related issue: #2829. It will be done by @ Totktonada after I do this one.

@patiencedaur
Copy link
Contributor

Need to verify with @ alyapunov what the return values mean.

@patiencedaur
Copy link
Contributor

patiencedaur commented Jun 10, 2022

@ igormunkin:

  • Я бы написал «lua is the heap size of the memory managed by Lua GC», но это мелочи.
  • lua -- общее количество аллоцированной (занятой) памяти в Lua арене.
  • used и quota -- память slab arena (где у нас данные хранятся). С этим лучше к Саше Ляпунову.

@patiencedaur
Copy link
Contributor

patiencedaur commented Jun 10, 2022

@ alyapunov:

что касается арен.. та, что memtx - используется для таплов в базе данных и индексов.
та, что винил - тоже всё понятно
а runtime arena - она для всего остального
runtime арена используется для работы с сетью, для всяких временных штук, и для всего того, что попросит application (который скорее всего написан на lua, но вообще может и на Си). "для всего, что можем"
то есть если мы будем из луа делать сложные штуки, типа нетбокса, или там архивы распаковыввать, или временные таплы создавать - на всё это будет уходить память runtime

все три наших арены (memtx, vinyl, runtime) - независимы. и luaшная "арена" - тоже

есть внутренние механизмы lua, которые аллоцирую память сами, не спрашивая тарантул "как и где". это и есть lua arena.
на runtime мы аллоцируем то, что lua спрашивает у нас.
Например. Пользователь пишет box.tuple.new{1, 2, 3}. Lua понимает, что это какая-то тарантульная штука и просит тарантул создать тапл. Тарантул создает, тратит на runtime арене сколько-то байт (у меня получилось 160). Передает в луа указатель на это дело, луа хранит у себя эти 8 байт плюс еще что-то. Итого - runtime: +160, lua: +сколько-то еще

А если пользователь пишет a = 'aaa' b = 'bbb' c = a .. b, то эти все строки луа создаст у себя в арене, не спрашивая тарантул. потому что это обычные строки, они не имеют отношения к тарантулу

@patiencedaur
Copy link
Contributor

@ alyapunov:
"used — это сколько памяти использовано под сетевые буфера и прочую память подсистемы сервера приложений (кроме внутренней памяти луа)"

patiencedaur added a commit that referenced this issue Jun 14, 2022
@patiencedaur patiencedaur added rewrite [nature] Revise existing text for structure/phrasing/terms and removed factual error Factual error in functionality description labels Jun 14, 2022
@patiencedaur
Copy link
Contributor

@ Totktonada:
Тут есть не совсем очевидный момент: Lua-память и память под некоторыми тарантульными Lua-объектами может быть разная. Если мы его не подчеркиваем и не проясняем, то у человека с этим не знакомого примерно ноль шансов понять суть правильно.

patiencedaur added a commit that referenced this issue Jun 20, 2022
Resolves #2911
* Clarify box.runtime.info() description
* Rephrase the garbage collector part
* Clarify the difference between runtime memory and runtime arena
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
reference [location] Tarantool manual, Reference part rewrite [nature] Revise existing text for structure/phrasing/terms
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants