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 6554793879; Tue, 19 Jan 2021 02:50:41 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 6554793879 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1611013841; bh=vg+eIcB5z0qRgVW26OJOKTmdnYp3OI5BMmKIZlVFMUE=; h=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=LyVM/1hr0tu0z3Knzghfy8dWt0rnZ78zsPI58vnYm/Usg+S6gA+a8+V5wk6ldfKep rs+/0OjP3xNrzNcvMx+4veGjZBIXveBhAxv31o5pzlpaYBfEe25qCySYr8eSzurZ6W +VItS7vZ6LO+brENvxW8iTOAM0n6I6ql56QUk7/0= Received: from smtp43.i.mail.ru (smtp43.i.mail.ru [94.100.177.103]) (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 1B57E718B1 for ; Tue, 19 Jan 2021 02:50:39 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 1B57E718B1 Received: by smtp43.i.mail.ru with esmtpa (envelope-from ) id 1l1eIA-000553-1I; Tue, 19 Jan 2021 02:50:38 +0300 To: v.shpilevoy@tarantool.org, alyapunov@tarantool.org Date: Tue, 19 Jan 2021 02:50:29 +0300 Message-Id: X-Mailer: git-send-email 2.17.1 X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD9D0E79FBC973162CD81CC0669AF3BE2AC14A0BAA29BC1501600894C459B0CD1B91F4B7250798C47DE341FD91DC1AC57225BDEB18AB7251EEF8312A077F85E9B44 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE7B72EF797F6622CCCEA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F79006375FD2AA103C2AB8F98638F802B75D45FF5571747095F342E8C7A0BC55FA0FE5FC76BE4C15C5329EC4374D63A0E7250F9B4DCA9AA84B5E106C389733CBF5DBD5E913377AFFFEAFD269176DF2183F8FC7C0DEC8C2C8BCD2534D8941B15DA834481FCF19DD082D7633A0EF3E4896CB9E6436389733CBF5DBD5E9D5E8D9A59859A8B652D31B9D28593E51CC7F00164DA146DA6F5DAA56C3B73B237318B6A418E8EAB8D32BA5DBAC0009BE9E8FC8737B5C2249C308144A827BAE2C76E601842F6C81A12EF20D2F80756B5F7E9C4E3C761E06A776E601842F6C81A127C277FBC8AE2E8B9146046A8060CA933AA81AA40904B5D9DBF02ECDB25306B2B25CBF701D1BE8734AD6D5ED66289B5278DA827A17800CE797E1AC076310AD6267F23339F89546C5A8DF7F3B2552694A6FED454B719173D6725E5C173C3A84C3FD340EA919DED65B35872C767BF85DA2F004C906525384306FED454B719173D6462275124DF8B9C9DF33B08B2BB81206574AF45C6390F7469DAA53EE0834AAEE X-C1DE0DAB: C20DE7B7AB408E4181F030C43753B8186998911F362727C414F749A5E30D975C8F59B88ADF80E5C0D5C2195A8EE5754601DE9AEC9261832E9C2B6934AE262D3EE7EAB7254005DCED42F351B7DEC6346B1E0A4E2319210D9B64D260DF9561598F01A9E91200F654B03031C89702B531498E8E86DC7131B365E7726E8460B7C23C X-C8649E89: 4E36BF7865823D7055A7F0CF078B5EC49A30900B95165D343DCFC3BEDFB0242DCFD034C9B6DF5040B085CAE95B1FF355ED2AF030B3815EC13C9E56187156A3DB1D7E09C32AA3244C62318D024658BF74DAD9F5130A9695E481560E2432555DBB927AC6DF5659F194 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojbL9S8ysBdXjuG74y4HcDPS/Vjgf/q2MB X-Mailru-Sender: 06752BE58DD8CE37E6C4CE7F78F2F1FBDF783FAC917944D61BB5A1348CD18C39D776CA2DFBE07C7940CFBDB3DDA0AC31AAFFD2005305549D2F0B9811F39295BF38C65A79EEA694937402F9BA4338D657ED14614B50AE0675 X-Mras: Ok Subject: [Tarantool-patches] [PATCH 0/4] Introduce tiny tuples with perf test 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: Ilya Kosarev via Tarantool-patches Reply-To: Ilya Kosarev Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" Tuple bsize was stored in 4 byte uint32_t field. Tuple data_offset was stored in 2 byte uint16_t field. Now the tuple contains flexible byte array at the end, allowing to put it in the same way. On the other hand, if it is possible, bsize and data_offset use 1 byte each. Such tuples are called tiny tuples. They only require 6 bytes instead of 10. Also tiny tuples use 1 byte offsets insead of 4 byte offsets. This allows to save lots of memory for small enough tuples. Ilya Kosarev (4): tuple: introduce unit perf test based on gbench tuple: use getters and setters core: introduce tiny tuples box: introduce 1 byte field map offsets .gitignore | 2 + CMakeLists.txt | 1 + perf/CMakeLists.txt | 34 +++++ perf/tuple.cc | 185 ++++++++++++++++++++++ src/box/alter.cc | 2 +- src/box/field_map.c | 14 +- src/box/field_map.h | 19 ++- src/box/lua/merger.c | 2 +- src/box/lua/tuple.c | 3 +- src/box/memtx_engine.c | 31 ++-- src/box/memtx_tx.c | 22 +-- src/box/memtx_tx.h | 2 +- src/box/sql.c | 7 +- src/box/tuple.c | 51 ++++--- src/box/tuple.h | 261 ++++++++++++++++++++++++++++---- src/box/tuple_compare.cc | 86 +++++++---- src/box/tuple_extract_key.cc | 29 ++-- src/box/tuple_format.c | 15 +- src/box/tuple_format.h | 3 +- src/box/tuple_hash.cc | 15 +- src/box/vy_stmt.c | 57 ++++--- src/box/vy_stmt.h | 40 +++-- test/box/errinj.result | 18 +-- test/box/upsert_errinj.result | 2 +- test/vinyl/cache.result | 6 +- test/vinyl/quota.result | 10 +- test/vinyl/quota_timeout.result | 8 +- test/vinyl/stat.result | 104 ++++++------- 28 files changed, 772 insertions(+), 257 deletions(-) create mode 100644 perf/CMakeLists.txt create mode 100644 perf/tuple.cc -- 2.17.1