[Tarantool-patches] [PATCH 0/4] fiber: keep reference to userdata if fiber created once

olegrok at tarantool.org olegrok at tarantool.org
Wed Aug 11 23:33:27 MSK 2021


From: Oleg Babin <babinoleg at mail.ru>

This patch reworks approach to fiber management in Lua. Before
this patch each action that should return fiber led to new
userdata creation that was quite slow and made GC suffer. This
patch introduces new field in struct fiber to store a reference to
userdata that was created once for a fiber. It allows speedup
operations as fiber.self() and fiber.id().
Simple benchmark shows that access to fiber storage is faster in
two times, fiber.find() - 2-3 times and fiber.new/create functions
don't have any changes.

Initially changes were inspired by #6210 [1] but current patchset
doesn't introduce anything new just improves performance of
existing functions.
Some results are available also in related github PR [2].

  [1] https://github.com/tarantool/tarantool/issues/6210
  [2] https://github.com/tarantool/tarantool/pull/6280  

Oleg Babin (4):
  fiber: rename ref to fiber_ref
  fiber: pass struct fiber into lbox_pushfiber instead of id
  fiber: keep reference to userdata if fiber created once
  fiber: allocate on_stop triggers using mempool

 src/lib/core/fiber.h |   7 ++-
 src/lua/fiber.c      | 134 ++++++++++++++++++-------------------------
 2 files changed, 62 insertions(+), 79 deletions(-)

-- 
2.32.0



More information about the Tarantool-patches mailing list