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 0918E162410C; Thu, 15 Jan 2026 10:53:01 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 0918E162410C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1768463581; bh=t+ZQP6JzaeGvYym3SaOwTr+uCNcTlRtlVHcBemsMHMc=; h=Date:To:Cc:References:In-Reply-To:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=TKDp91+xrcXUzOheEwCFLXgjDN5oCNY/6LcjpyXfw0q2XYrjzhDmiam7DRMAcdIjL oFCmZQR6vlagqS01FdfikQTBPXY0nEJrTDOZNpyLQtEdDgCtu9xgrWcSrFMfjEycMs O5mqzpeWJ0wUqrxp/LiMC9OPh8SUpko8Wd4CtA0c= Received: from send243.i.mail.ru (send243.i.mail.ru [95.163.59.82]) (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 F3DF4162410C for ; Thu, 15 Jan 2026 10:52:58 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org F3DF4162410C Received: by exim-smtp-55f9c6db88-j8l7m with esmtpa (envelope-from ) id 1vgIA5-000000000ay-41AB; Thu, 15 Jan 2026 10:52:58 +0300 Content-Type: multipart/alternative; boundary="------------75hgfuXe0c39TbJEhaIeBQuA" Message-ID: <44268d0b-e327-48a1-b390-daf3fe2035ee@tarantool.org> Date: Thu, 15 Jan 2026 10:52:56 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: Sergey Kaplun Cc: tarantool-patches@dev.tarantool.org References: <4d59c0371b1577651d63fdaef05b2e6c66d6464c.1766738771.git.skaplun@tarantool.org> In-Reply-To: X-Mailru-Src: smtp X-4EC0790: 10 X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD99B884C1B59F9AF8089D8ED831DE4A019FD3CA923CB267617182A05F538085040BDC3A4AA3CEAB9A13DE06ABAFEAF6705AD032F8ADEAA8F58A3281B6BB245D3B5FB1C19767FBE8657 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE7DECE8D0A5E25C0FCEA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637AC83A81C8FD4AD23D82A6BABE6F325AC2E85FA5F3EDFCBAA7353EFBB5533756680939BF45BBEA6961AEE7A3066349A328A2403DE8720F958013DCF98351A98BC389733CBF5DBD5E913377AFFFEAFD269A417C69337E82CC2CC7F00164DA146DAFE8445B8C89999729449624AB7ADAF37F6B57BC7E64490611E7FA7ABCAF51C92176DF2183F8FC7C07E7E81EEA8A9722B8941B15DA834481F9449624AB7ADAF372E808ACE2090B5E14AD6D5ED66289B5259CC434672EE63711DD303D21008E298D5E8D9A59859A8B6B372FE9A2E580EFC725E5C173C3A84C39472471D10B198B935872C767BF85DA2F004C90652538430E4A6367B16DE6309 X-C1DE0DAB: 0D63561A33F958A5D7F59CF04DCD6BE35002B1117B3ED69622214087972F308C406406D89DD9EB8A823CB91A9FED034534781492E4B8EEADA91A6E18C88C5E2F X-C8649E89: 1C3962B70DF3F0AD73CAD6646DEDE191716CD42B3DD1D34CAB70F9BE574AE9C625B6776AC983F447FC0B9F89525902EE6F57B2FD27647F25E66C117BDB76D659D5333A82F866931E7F4801EF75F98CBD037AEAE779ED7E19FF826F3C491501EA51CFB647393310ADB8341EE9D5BE9A0AE85C360F5E6C520E275CDBA91781501570ECFF57FA1517568CD93680B12512CF4C41F94D744909CE2512F26BEC029E55448553D2254B8D95CD72808BE417F3B9E0E7457915DAA85F X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXMZebaIdHP2ghjoIc/363UZI6Kf1ptIMVVt0N+pdRHOZZ65bOmLtZLs= X-Mailru-Sender: 689FA8AB762F7393DDD5FD59B456EAD2EF69FA58FDF0ECEF260982B5234EE2D97F1592BD190392BBEF86D5F70DA33880E41E8EF7A07863ECB274557F927329BE2DDF8182D28ACDB545BD1C3CC395C826B4A721A3011E896F X-Mras: Ok Subject: Re: [Tarantool-patches] [PATCH v2 luajit 41/41] ci: introduce the performance workflow 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 Bronnikov via Tarantool-patches Reply-To: Sergey Bronnikov Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" This is a multi-part message in MIME format. --------------75hgfuXe0c39TbJEhaIeBQuA Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, Sergey, LGTM Sergey On 1/14/26 13:19, Sergey Kaplun wrote: > Hi, Sergey! > Thanks for the review! > Please consider my answers below. > > Fixed your comment and force-pushed the branch. > > On 13.01.26, Sergey Bronnikov wrote: >> Hi, Sergey! >> >> thanks for the patch! Please see my comments. >> >> Sergey >> >> On 12/26/25 12:18, Sergey Kaplun wrote: >>> This patch adds the workflow to run benchmarks from various suites, >>> aggregate their results, and send statistics to the InfluxDB to be >>> processed later. >>> >>> The workflow contains a matrix to measure GC64 and non-GC64 modes with >>> enabled/disabled JIT for x64 architecture. >>> --- >>> .github/actions/setup-performance/README.md | 10 ++ >>> .github/actions/setup-performance/action.yml | 18 +++ >>> .github/workflows/performance.yml | 110 +++++++++++++++++++ >>> 3 files changed, 138 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 >>> >>> diff --git a/.github/actions/setup-performance/README.md b/.github/actions/setup-performance/README.md >>> new file mode 100644 >>> index 00000000..4c4bbdab >>> --- /dev/null >>> +++ b/.github/actions/setup-performance/README.md > > >>> diff --git a/.github/actions/setup-performance/action.yml b/.github/actions/setup-performance/action.yml >>> new file mode 100644 >>> index 00000000..24d07440 >>> --- /dev/null >>> +++ b/.github/actions/setup-performance/action.yml >>> @@ -0,0 +1,18 @@ >>> +name: Setup performance >>> +description: The Linux machine setup for running LuaJIT benchmarks >>> +runs: >>> + using: composite >>> + steps: >>> + - name: Setup CI environment (Linux) >>> + uses: ./.github/actions/setup-linux >>> + - name: Install dependencies for the LuaJIT benchmarks >>> + run: | >>> + apt -y update >>> + apt install -y luarocks curl >> I propose to add util-linux package that provides taskset utility. > Sure! > > Added: > =================================================================== > diff --git a/.github/actions/setup-performance/action.yml b/.github/actions/setup-performance/action.yml > index 24d07440..4e0e1929 100644 > --- a/.github/actions/setup-performance/action.yml > +++ b/.github/actions/setup-performance/action.yml > @@ -8,7 +8,7 @@ runs: > - name: Install dependencies for the LuaJIT benchmarks > run: | > apt -y update > - apt install -y luarocks curl > + apt install -y curl luarocks util-linux > shell: bash > - name: Install Lua modules > run: luarocks install lua-cjson > =================================================================== > > >>> + shell: bash >>> + - name: Install Lua modules >>> + run: luarocks install lua-cjson >>> + shell: bash >>> + - name: Run script to setup Linux environment >>> + run: sh ./perf/helpers/setup_env.sh >>> + shell: bash >>> diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml >>> new file mode 100644 >>> index 00000000..fe22eb4b >>> --- /dev/null >>> +++ b/.github/workflows/performance.yml > > >>> +concurrency: >>> + # An update of a developer branch cancels the previously >>> + # scheduled workflow run for this branch. However, the default >>> + # branch, and long-term branch (tarantool/release/2.11, >>> + # tarantool/release/2.10, etc) workflow runs are never canceled. >>> + # >> do we need this text? > I suppose yes, it is left intact with the strange hacks below. > It is a generic part for all workflows. > >>> + # We use a trick here: define the concurrency group as 'workflow >>> + # run ID' + # 'workflow run attempt' because it is a unique >>> + # combination for any run. So it effectively discards grouping. >>> + # >>> + # XXX: we cannot use `github.sha` as a unique identifier because >>> + # pushing a tag may cancel a run that works on a branch push >>> + # event. >>> + group: ${{ startsWith(github.ref, 'refs/heads/tarantool/') >>> + && format('{0}-{1}', github.run_id, github.run_attempt) >>> + || format('{0}-{1}', github.workflow, github.ref) }} >>> + cancel-in-progress: true >>> + >>> +jobs: >>> + performance-luajit: >>> + # The 'performance' label _must_ be set only for the single >>> + # runner to guarantee that results are not dependent on the >>> + # machine. >> we don't use PR's in LuaJIT > It is about runner label, not PR label. > >>> + runs-on: >>> + - self-hosted >>> + - Linux >>> + - x86_64 >>> + - 'performance' > > --------------75hgfuXe0c39TbJEhaIeBQuA Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit

Hi, Sergey,

LGTM

Sergey

On 1/14/26 13:19, Sergey Kaplun wrote:
Hi, Sergey!
Thanks for the review!
Please consider my answers below.

Fixed your comment and force-pushed the branch.

On 13.01.26, Sergey Bronnikov wrote:
Hi, Sergey!

thanks for the patch! Please see my comments.

Sergey

On 12/26/25 12:18, Sergey Kaplun wrote:
This patch adds the workflow to run benchmarks from various suites,
aggregate their results, and send statistics to the InfluxDB to be
processed later.

The workflow contains a matrix to measure GC64 and non-GC64 modes with
enabled/disabled JIT for x64 architecture.
---
  .github/actions/setup-performance/README.md  |  10 ++
  .github/actions/setup-performance/action.yml |  18 +++
  .github/workflows/performance.yml            | 110 +++++++++++++++++++
  3 files changed, 138 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

diff --git a/.github/actions/setup-performance/README.md b/.github/actions/setup-performance/README.md
new file mode 100644
index 00000000..4c4bbdab
--- /dev/null
+++ b/.github/actions/setup-performance/README.md
<snipped>

diff --git a/.github/actions/setup-performance/action.yml b/.github/actions/setup-performance/action.yml
new file mode 100644
index 00000000..24d07440
--- /dev/null
+++ b/.github/actions/setup-performance/action.yml
@@ -0,0 +1,18 @@
+name: Setup performance
+description: The Linux machine setup for running LuaJIT benchmarks
+runs:
+  using: composite
+  steps:
+    - name: Setup CI environment (Linux)
+      uses: ./.github/actions/setup-linux
+    - name: Install dependencies for the LuaJIT benchmarks
+      run: |
+        apt -y update
+        apt install -y luarocks curl
I propose to add util-linux package that provides taskset utility.
Sure!

Added:
===================================================================
diff --git a/.github/actions/setup-performance/action.yml b/.github/actions/setup-performance/action.yml
index 24d07440..4e0e1929 100644
--- a/.github/actions/setup-performance/action.yml
+++ b/.github/actions/setup-performance/action.yml
@@ -8,7 +8,7 @@ runs:
     - name: Install dependencies for the LuaJIT benchmarks
       run: |
         apt -y update
-        apt install -y luarocks curl
+        apt install -y curl luarocks util-linux
       shell: bash
     - name: Install Lua modules
       run: luarocks install lua-cjson
===================================================================


+      shell: bash
+    - name: Install Lua modules
+      run: luarocks install lua-cjson
+      shell: bash
+    - name: Run script to setup Linux environment
+      run: sh ./perf/helpers/setup_env.sh
+      shell: bash
diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml
new file mode 100644
index 00000000..fe22eb4b
--- /dev/null
+++ b/.github/workflows/performance.yml
<snipped>

+concurrency:
+  # An update of a developer branch cancels the previously
+  # scheduled workflow run for this branch. However, the default
+  # branch, and long-term branch (tarantool/release/2.11,
+  # tarantool/release/2.10, etc) workflow runs are never canceled.
+  #
do we need this text?
I suppose yes, it is left intact with the strange hacks below.
It is a generic part for all workflows.

+  # We use a trick here: define the concurrency group as 'workflow
+  # run ID' + # 'workflow run attempt' because it is a unique
+  # combination for any run. So it effectively discards grouping.
+  #
+  # XXX: we cannot use `github.sha` as a unique identifier because
+  # pushing a tag may cancel a run that works on a branch push
+  # event.
+  group: ${{ startsWith(github.ref, 'refs/heads/tarantool/')
+    && format('{0}-{1}', github.run_id, github.run_attempt)
+    || format('{0}-{1}', github.workflow, github.ref) }}
+  cancel-in-progress: true
+
+jobs:
+  performance-luajit:
+    # The 'performance' label _must_ be set only for the single
+    # runner to guarantee that results are not dependent on the
+    # machine.
we don't use PR's in LuaJIT
It is about runner label, not PR label.

+    runs-on:
+      - self-hosted
+      - Linux
+      - x86_64
+      - 'performance'
<snipped>

--------------75hgfuXe0c39TbJEhaIeBQuA--