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 2FB5F169C82B; Fri, 26 Dec 2025 12:18:21 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 2FB5F169C82B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1766740701; bh=B5F16Zm8P0Npg3Fl3rwoFDIF9NohPh9D9moMei8eWko=; h=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=BSx1P5Jk/Iu/4Xn/KBriCJzxU2ZVoRKDJJ1J24Toubymxa1CqNGeSAvKAouoTh/OG BPv8/ADXoArPUcAAlSZg/IusDSyMXN9CfMiqslSDIN9DCpZh9xEMGkHdFGQIhpKCgB Msl/xs4j1WAH3bfn43DTnfQfM1Uv8cvukQrTj9HM= Received: from send150.i.mail.ru (send150.i.mail.ru [89.221.237.245]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id D9DF9166DD2E for ; Fri, 26 Dec 2025 12:18:19 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org D9DF9166DD2E Received: by exim-smtp-7b4fb89df9-lft7n with esmtpa (envelope-from ) id 1vZ3xi-000000008Cp-2zJv; Fri, 26 Dec 2025 12:18:19 +0300 To: Sergey Bronnikov Date: Fri, 26 Dec 2025 12:17:31 +0300 Message-ID: X-Mailer: git-send-email 2.52.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailru-Src: smtp X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD979975AF0D777FEBDBD402C266276CBAD49C55E60069EDAD4182A05F5380850400DDF4BE23EBFC5DB3DE06ABAFEAF6705B01EA7DE9A18F28EB4FA2C6BBBE99EF97EDAE2B993BF3920 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE78E8764B5BC580342EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637AC83A81C8FD4AD23D82A6BABE6F325AC2E85FA5F3EDFCBAA7353EFBB55337566657B88B02DF8C869809E688FD019E6418EDCD39A7D089D1ACBB842C95E2159B5389733CBF5DBD5E913377AFFFEAFD269176DF2183F8FC7C078FCF50C7EAF9C588941B15DA834481FCF19DD082D7633A0EF3E4896CB9E6436389733CBF5DBD5E9D5E8D9A59859A8B64854413538E1713FCC7F00164DA146DA6F5DAA56C3B73B237318B6A418E8EAB86D1867E19FE14079C09775C1D3CA48CF3D321E7403792E342EB15956EA79C166A417C69337E82CC275ECD9A6C639B01B78DA827A17800CE79E9721B410A3B6ED731C566533BA786AA5CC5B56E945C8DA X-C1DE0DAB: 0D63561A33F958A562F0EDF64548F68E5002B1117B3ED696B5BA28F75A507BF0CA7E60A991436CA2823CB91A9FED034534781492E4B8EEAD4E3AF26A5AE703EEC79554A2A72441328621D336A7BC284946AD531847A6065A535571D14F44ED41 X-C8649E89: 1C3962B70DF3F0AD73CAD6646DEDE191716CD42B3DD1D34C77DD89D51EBB774225B6776AC983F447FC0B9F89525902EE6F57B2FD27647F25E66C117BDB76D659FF1B877B4CEB44EE03E2139047A1C872EE4BC8B0CD1F2F2D303A2975C9AC86284B2C129E0C373B4EB8341EE9D5BE9A0AFC6C76CDF132CE2A05D8439B09F6DFF0B587FA0E54062F4F6536EB022892E5344C41F94D744909CECFA6C6B0C050A61A8CAF69B82BA93681CD72808BE417F3B9E0E7457915DAA85F X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXMZebaIdHP2ghjoIc/363UZI6Kf1ptIMVdtTL5f5BIXbHzTqhkMmmSI= X-Mailru-Sender: 689FA8AB762F7393DDD5FD59B456EAD2E8F75DCE890146EB8700636FE984EBB82A76E27ABD9773F3E49D44BB4BD9522A059A1ED8796F048DB274557F927329BE89D5A3BC2B10C37545BD1C3CC395C826B4A721A3011E896F X-Mras: Ok Subject: [Tarantool-patches] [PATCH v2 luajit 00/41] LuaJIT performance testing 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: Sergey Kaplun via Tarantool-patches Reply-To: Sergey Kaplun Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" This patchset introduces the performance testing suite for LuaJIT benchmarks. It takes the LuaJIT test cleanup benches [1] and adapts them to use a custom benchmark module with the GoogleBenchamark-similar format. All results are collected and reported to InfluxDB, like it is done for the Tarantool's tests. The results for the following benchmarks are not very stable. It should be investigated later (I appreciate any help with this): * array3d * binary-trees * euler14-bit * k-nukleotide * nsieve (most unstable) * nsieve-bit * spectral-norm Also, I've added notes to some commits where I'm not sure that the implementation/solution is very good. Any insights are welcome :). [1]: https://github.com/LuaJIT/LuaJIT-test-cleanup/tree/014708b/bench --- Changes in the v2: * Added the comments with the benchmark descriptions. * Fixed code style mentioned by Sergey for the chunks that were touched during adjusting. * Code style fixes. * Fixed and benchmark performance. * Fixed naming of the CI workflow (incorrect JOFF flag). * Fixed naming of the benchmark "subbench" "meteror" -> "meteor". * Decreased number of iterations in array3d from 5 to 4 due to OOM errors. * Rebased the branch on the current master branch. Also, it is worth mentioning that array3d with 5 iterations in JOFF non-GC64 mode may lead to the core dump [2]. Since it is rather rare flak and the number of iterations is decreased, it can be ignored for now, I suppose. [2]: https://github.com/tarantool/luajit/actions/runs/20506964003/job/58922906212#step:6:24 Sergey Kaplun (41): perf: add LuaJIT-test-cleanup perf suite perf: introduce clock module perf: introduce bench module perf: adjust array3d in LuaJIT-benches perf: adjust binary-trees in LuaJIT-benches perf: adjust chameneos in LuaJIT-benches perf: adjust coroutine-ring in LuaJIT-benches perf: adjust euler14-bit in LuaJIT-benches perf: adjust fannkuch in LuaJIT-benches perf: adjust fasta in LuaJIT-benches perf: adjust k-nucleotide in LuaJIT-benches perf: adjust life in LuaJIT-benches perf: adjust mandelbrot-bit in LuaJIT-benches perf: adjust mandelbrot in LuaJIT-benches perf: adjust md5 in LuaJIT-benches perf: adjust meteor in LuaJIT-benches perf: adjust nbody in LuaJIT-benches perf: adjust nsieve-bit-fp in LuaJIT-benches perf: adjust nsieve-bit in LuaJIT-benches perf: adjust nsieve in LuaJIT-benches perf: adjust partialsums in LuaJIT-benches perf: adjust pidigits-nogmp in LuaJIT-benches perf: adjust ray in LuaJIT-benches perf: adjust recursive-ack in LuaJIT-benches perf: adjust recursive-fib in LuaJIT-benches perf: adjust revcomp in LuaJIT-benches perf: adjust scimark-2010-12-20 in LuaJIT-benches perf: move to directory perf: adjust scimark-fft in LuaJIT-benches perf: adjust scimark-lu in LuaJIT-benches perf: add scimark-mc in LuaJIT-benches perf: adjust scimark-sor in LuaJIT-benches perf: adjust scimark-sparse in LuaJIT-benches perf: adjust series in LuaJIT-benches perf: adjust spectral-norm in LuaJIT-benches perf: adjust sum-file in LuaJIT-benches perf: add CMake infrastructure perf: add aggregator helper for bench statistics perf: add a script for the environment setup perf: provide CMake option to setup the benchmark ci: introduce the performance workflow .github/actions/setup-performance/README.md | 10 + .github/actions/setup-performance/action.yml | 18 + .github/workflows/performance.yml | 110 ++ .gitignore | 5 + .luacheckrc | 1 + CMakeLists.txt | 11 + perf/CMakeLists.txt | 119 +++ perf/LuaJIT-benches/CMakeLists.txt | 52 + perf/LuaJIT-benches/PARAM_arm.txt | 29 + perf/LuaJIT-benches/PARAM_mips.txt | 29 + perf/LuaJIT-benches/PARAM_ppc.txt | 29 + perf/LuaJIT-benches/PARAM_x86.txt | 29 + perf/LuaJIT-benches/SUMCOL_1.txt | 1000 ++++++++++++++++++ perf/LuaJIT-benches/TEST_md5sum.txt | 20 + perf/LuaJIT-benches/array3d.lua | 78 ++ perf/LuaJIT-benches/binary-trees.lua | 120 +++ perf/LuaJIT-benches/chameneos.lua | 88 ++ perf/LuaJIT-benches/coroutine-ring.lua | 64 ++ perf/LuaJIT-benches/euler14-bit.lua | 55 + perf/LuaJIT-benches/fannkuch.lua | 88 ++ perf/LuaJIT-benches/fasta.lua | 35 + perf/LuaJIT-benches/k-nucleotide.lua | 132 +++ perf/LuaJIT-benches/libs/fasta.lua | 105 ++ perf/LuaJIT-benches/libs/scimark_lib.lua | 297 ++++++ perf/LuaJIT-benches/life.lua | 194 ++++ perf/LuaJIT-benches/mandelbrot-bit.lua | 68 ++ perf/LuaJIT-benches/mandelbrot.lua | 55 + perf/LuaJIT-benches/md5.lua | 201 ++++ perf/LuaJIT-benches/meteor.lua | 251 +++++ perf/LuaJIT-benches/nbody.lua | 146 +++ perf/LuaJIT-benches/nsieve-bit-fp.lua | 69 ++ perf/LuaJIT-benches/nsieve-bit.lua | 58 + perf/LuaJIT-benches/nsieve.lua | 53 + perf/LuaJIT-benches/partialsums.lua | 48 + perf/LuaJIT-benches/pidigits-nogmp.lua | 128 +++ perf/LuaJIT-benches/ray.lua | 166 +++ perf/LuaJIT-benches/recursive-ack.lua | 28 + perf/LuaJIT-benches/recursive-fib.lua | 36 + perf/LuaJIT-benches/revcomp.lua | 71 ++ perf/LuaJIT-benches/scimark-2010-12-20.lua | 412 ++++++++ perf/LuaJIT-benches/scimark-fft.lua | 18 + perf/LuaJIT-benches/scimark-lu.lua | 19 + perf/LuaJIT-benches/scimark-mc.lua | 19 + perf/LuaJIT-benches/scimark-sor.lua | 19 + perf/LuaJIT-benches/scimark-sparse.lua | 19 + perf/LuaJIT-benches/series.lua | 46 + perf/LuaJIT-benches/spectral-norm.lua | 65 ++ perf/LuaJIT-benches/sum-file.lua | 29 + perf/helpers/aggregate.lua | 132 +++ perf/helpers/setup_env.sh | 135 +++ perf/utils/bench.lua | 511 +++++++++ perf/utils/clock.lua | 35 + 52 files changed, 5555 insertions(+) create mode 100644 .github/actions/setup-performance/README.md create mode 100644 .github/actions/setup-performance/action.yml create mode 100644 .github/workflows/performance.yml create mode 100644 perf/CMakeLists.txt create mode 100644 perf/LuaJIT-benches/CMakeLists.txt create mode 100644 perf/LuaJIT-benches/PARAM_arm.txt create mode 100644 perf/LuaJIT-benches/PARAM_mips.txt create mode 100644 perf/LuaJIT-benches/PARAM_ppc.txt create mode 100644 perf/LuaJIT-benches/PARAM_x86.txt create mode 100644 perf/LuaJIT-benches/SUMCOL_1.txt create mode 100644 perf/LuaJIT-benches/TEST_md5sum.txt create mode 100644 perf/LuaJIT-benches/array3d.lua create mode 100644 perf/LuaJIT-benches/binary-trees.lua create mode 100644 perf/LuaJIT-benches/chameneos.lua create mode 100644 perf/LuaJIT-benches/coroutine-ring.lua create mode 100644 perf/LuaJIT-benches/euler14-bit.lua create mode 100644 perf/LuaJIT-benches/fannkuch.lua create mode 100644 perf/LuaJIT-benches/fasta.lua create mode 100644 perf/LuaJIT-benches/k-nucleotide.lua create mode 100644 perf/LuaJIT-benches/libs/fasta.lua create mode 100644 perf/LuaJIT-benches/libs/scimark_lib.lua create mode 100644 perf/LuaJIT-benches/life.lua create mode 100644 perf/LuaJIT-benches/mandelbrot-bit.lua create mode 100644 perf/LuaJIT-benches/mandelbrot.lua create mode 100644 perf/LuaJIT-benches/md5.lua create mode 100644 perf/LuaJIT-benches/meteor.lua create mode 100644 perf/LuaJIT-benches/nbody.lua create mode 100644 perf/LuaJIT-benches/nsieve-bit-fp.lua create mode 100644 perf/LuaJIT-benches/nsieve-bit.lua create mode 100644 perf/LuaJIT-benches/nsieve.lua create mode 100644 perf/LuaJIT-benches/partialsums.lua create mode 100644 perf/LuaJIT-benches/pidigits-nogmp.lua create mode 100644 perf/LuaJIT-benches/ray.lua create mode 100644 perf/LuaJIT-benches/recursive-ack.lua create mode 100644 perf/LuaJIT-benches/recursive-fib.lua create mode 100644 perf/LuaJIT-benches/revcomp.lua create mode 100644 perf/LuaJIT-benches/scimark-2010-12-20.lua create mode 100644 perf/LuaJIT-benches/scimark-fft.lua create mode 100644 perf/LuaJIT-benches/scimark-lu.lua create mode 100644 perf/LuaJIT-benches/scimark-mc.lua create mode 100644 perf/LuaJIT-benches/scimark-sor.lua create mode 100644 perf/LuaJIT-benches/scimark-sparse.lua create mode 100644 perf/LuaJIT-benches/series.lua create mode 100644 perf/LuaJIT-benches/spectral-norm.lua create mode 100644 perf/LuaJIT-benches/sum-file.lua create mode 100644 perf/helpers/aggregate.lua create mode 100755 perf/helpers/setup_env.sh create mode 100644 perf/utils/bench.lua create mode 100644 perf/utils/clock.lua -- 2.52.0