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>