From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id 8D15A6F3F2; Fri, 3 Sep 2021 23:49:33 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 8D15A6F3F2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1630702173; bh=YLZ+QZU7UdRqMrCBiwlEOL+7tOwq3RHjuIv4+Jchj4g=; h=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=ME98WF6o9gaDY8iQsrs2dFqcx/3SHs1RM6OcvLbtfcwGR8feZobzb1QPVZhDT7KIK MbYFGkOEyTT+X1aA5MsqDVGw2A/4oU3dvMDr8yb8PxwO4QiZtVER095W80Y418A5yJ IIQld6mhQ9jYGktvewWFVICXDQk8Q/g2KyIhi86Y= Received: from smtp29.i.mail.ru (smtp29.i.mail.ru [94.100.177.89]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 560DA6F3F2 for ; Fri, 3 Sep 2021 23:49:21 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 560DA6F3F2 Received: by smtp29.i.mail.ru with esmtpa (envelope-from ) id 1mMG7j-0007LS-Kd; Fri, 03 Sep 2021 23:49:20 +0300 To: v.shpilevoy@tarantool.org, imun@tarantool.org Date: Fri, 3 Sep 2021 23:49:14 +0300 Message-Id: X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD9D96C1EA41D18F4D57B705481ADDDE748772430255B74E284182A05F538085040C84E9928EB455D493830EA2FDCBBDE680DA82F9485354AEB6E0ADEE3AC03EF4C X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE7544B1CCE26E01C74EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F790063727599E9BE65898D58638F802B75D45FF36EB9D2243A4F8B5A6FCA7DBDB1FC311F39EFFDF887939037866D6147AF826D8467220AAD73C94017E78B2D4D9328D18117882F4460429724CE54428C33FAD305F5C1EE8F4F765FC60CDF180582EB8FBA471835C12D1D9774AD6D5ED66289B52BA9C0B312567BB23117882F446042972877693876707352026055571C92BF10F2CC0D3CB04F14752D2E47CDBA5A96583BA9C0B312567BB2376E601842F6C81A19E625A9149C048EE042285CD7A5C321F86A01F665E7D37C5D8FC6C240DEA7642DBF02ECDB25306B2B78CF848AE20165D0A6AB1C7CE11FEE324F796C710B8583C040F9FF01DFDA4A8C4224003CC836476EA7A3FFF5B025636E2021AF6380DFAD1A18204E546F3947CB11811A4A51E3B096D1867E19FE1407959CC434672EE6371089D37D7C0E48F6C8AA50765F7900637EC3198ECE464ADAEEFF80C71ABB335746BA297DBC24807EABDAD6C7F3747799A X-B7AD71C0: AC4F5C86D027EB782CDD5689AFBDA7A213B5FB47DCBC3458F0AFF96BAACF4158235E5A14AD4A4A4625E192CAD1D9E79DB8BF922E402C092C1521C8736D0CF1B0 X-C1DE0DAB: C20DE7B7AB408E4181F030C43753B8186998911F362727C414F749A5E30D975CA3881D9F5F3D43CB7B826B173FE37D48566C22219603EB0A9C2B6934AE262D3EE7EAB7254005DCED8A4639B0ABC886349510FB958DCE06DB6ED91DBE5ABE359ADBCB5631A0A9D21F5E4DBAB5AF249FA793EDB24507CE13387DFF0A840B692CF8 X-C8649E89: 4E36BF7865823D7055A7F0CF078B5EC49A30900B95165D341E08D7EE1804B7635F865DC58D74F7BB73FB542839A7CA7450BB86D317A942E98C5D42B9EC1617BE1D7E09C32AA3244C742E7E74506C8AC4BFE692B4134D35D3D9ADFF0C0BDB8D1F927AC6DF5659F194 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2bioj0HWrnICxeorriMZoJEHF6Q== X-Mailru-Sender: 583F1D7ACE8F49BD1042885CEC987B6B648A3CF9FA961D323830EA2FDCBBDE68C9F871340C5A6C407019711D9D5B048E1458020726E2BC9FD5ECBA0B92C0A936CDC7563AA7CEBD287402F9BA4338D657ED14614B50AE0675 X-Mras: Ok Subject: [Tarantool-patches] [PATCH v3 0/4] fiber: keep reference to userdata if fiber created once X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Oleg Babin via Tarantool-patches Reply-To: olegrok@tarantool.org Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" From: Oleg Babin 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 Changes in v3: - Review fixes by Igor - New patch to make public LUA_NOREF value Changes in v2: - Review fixes by Vlad and Igor - The patch patch that introduced mempool usage is discarded Oleg Babin (4): fiber: rename ref to storage_ref fiber: pass struct fiber into lbox_pushfiber instead of id lua/utils: make LUA_NOREF value public fiber: keep reference to userdata if fiber created once src/lib/core/fiber.c | 5 ++ src/lib/core/fiber.h | 7 +- src/lua/fiber.c | 124 ++++++++++++------------------------ src/lua/utils.c | 1 + test/unit/core_test_utils.c | 2 + 5 files changed, 53 insertions(+), 86 deletions(-) -- 2.32.0