Tarantool development patches archive
 help / color / mirror / Atom feed
From: Sergey Kaplun via Tarantool-patches <tarantool-patches@dev.tarantool.org>
To: Sergey Bronnikov <sergeyb@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH v1 luajit 07/41] perf: adjust coroutine-ring in LuaJIT-benches
Date: Fri, 26 Dec 2025 11:11:49 +0300	[thread overview]
Message-ID: <aU5DRVFGeDWVBBhV@root> (raw)
In-Reply-To: <bba582de-f635-4e64-aeff-24bfbe11b263@tarantool.org>

Hi, Sergey!
Thanks for the review!
Fixes your comments and added the description to the benchmark.

On 13.11.25, Sergey Bronnikov wrote:
> Hi, Sergey!
> 
> thanks for the patch! See my comments.
> 
> Sergey
> 
> On 10/24/25 13:50, Sergey Kaplun wrote:
> > This patch adjusts the aforementioned test to use the benchmark
> > framework introduced before. The default arguments are adjusted
> > according to the <PARAM_x86.txt> file. The arguments to the script still
> > can be provided in the command line run.
> > ---
> >   perf/LuaJIT-benches/coroutine-ring.lua | 45 ++++++++++++++++----------
> >   1 file changed, 28 insertions(+), 17 deletions(-)
> >
> > diff --git a/perf/LuaJIT-benches/coroutine-ring.lua b/perf/LuaJIT-benches/coroutine-ring.lua
> > index 1e8c5ef6..1b86a5ba 100644
> > --- a/perf/LuaJIT-benches/coroutine-ring.lua
> > +++ b/perf/LuaJIT-benches/coroutine-ring.lua
> > @@ -1,3 +1,5 @@

Also, added the comment with the benchmark description as we discussed
offline.

===================================================================
diff --git a/perf/LuaJIT-benches/coroutine-ring.lua b/perf/LuaJIT-benches/coroutine-ring.lua
index 1b86a5ba..8efe7b2a 100644
--- a/perf/LuaJIT-benches/coroutine-ring.lua
+++ b/perf/LuaJIT-benches/coroutine-ring.lua
@@ -1,3 +1,9 @@
+-- The benchmark to check the performance of coroutine interaction
+-- to test possible "death by concurrency," when one coroutine
+-- is active and others are waiting their turn.
+-- For the details see:
+-- https://pybenchmarks.org/u64q/performance.php?test=threadring
+
 local bench = require("bench").new(arg)

 -- The Computer Language Benchmarks Game
===================================================================

> > +local bench = require("bench").new(arg)
> > +
> >   -- The Computer Language Benchmarks Game
> >   --http://shootout.alioth.debian.org/
> >   -- contributed by Sam Roberts

<snipped>

> > +bench:add({
> > +  name = "coroutine_ring",
> > +  payload = function()
> > +    local token     = 0
> a single whitespace before "="

Fixed. See the iterative patch below.

> > +    -- create all threads
> First letter is in uppercase and a dot at the end.

Fixed. See the iterative patch below.

> > +    local threads   = {}
> a single whitespace before "="

Fixed. See the iterative patch below.

> > +    for id = 1, poolsize do
> > +      threads[id] = create(body)
> > +    end
> > +
> > +    -- send the token
> First letter is in uppercase and a dot at the end.

Fixed:

===================================================================
diff --git a/perf/LuaJIT-benches/coroutine-ring.lua b/perf/LuaJIT-benches/coroutine-ring.lua
index 1b86a5ba..e1455205 100644
--- a/perf/LuaJIT-benches/coroutine-ring.lua
+++ b/perf/LuaJIT-benches/coroutine-ring.lua
@@ -27,14 +27,14 @@ end
 bench:add({
   name = "coroutine_ring",
   payload = function()
-    local token     = 0
-    -- create all threads
-    local threads   = {}
+    local token = 0
+    -- Create all threads.
+    local threads = {}
     for id = 1, poolsize do
       threads[id] = create(body)
     end
 
-    -- send the token
+    -- Send the token.
     repeat
       if id == poolsize then
         id = 1
===================================================================

> > +    repeat
> > +      if id == poolsize then
> > +        id = 1
> > +      else
> > +        id = id + 1
> > +      end
> > +      ok, token = resume(threads[id], token)
> > +    until token == n
> > +    return id
> > +  end,
> > +  checker = function(id) return id == (n % poolsize + 1) end,
> > +  items = n,
> > +})
> > +
> > +bench:run_and_report()
> >   
> > -io.write(id, "\n")

I've also refactored the benchmark to make it performance match the
original version:

===================================================================
diff --git a/perf/LuaJIT-benches/coroutine-ring.lua b/perf/LuaJIT-benches/coroutine-ring.lua
index 8efe7b2a..747a2ecc 100644
--- a/perf/LuaJIT-benches/coroutine-ring.lua
+++ b/perf/LuaJIT-benches/coroutine-ring.lua
@@ -17,13 +17,8 @@ local n         = tonumber(arg and arg[1]) or 2e7
 local poolsize  = 503
 
 -- cache these to avoid global environment lookups
-local create    = coroutine.create
-local resume    = coroutine.resume
 local yield     = coroutine.yield
 
-local id        = 1
-local ok
-
 local body = function(token)
   while true do
     token = yield(token + 1)
@@ -33,7 +28,18 @@ end
 bench:add({
   name = "coroutine_ring",
   payload = function()
+    -- Cache to avoid upvalue lookups.
     local token = 0
+    local n = n
+    local poolsize = poolsize
+
+    -- Cache these to avoid global environment lookups.
+    local create = coroutine.create
+    local resume = coroutine.resume
+
+    local id = 1
+    local ok
+
     -- Create all threads.
     local threads = {}
     for id = 1, poolsize do
===================================================================

Also, removed excess empty line at the end of the file:
===================================================================
diff --git a/perf/LuaJIT-benches/coroutine-ring.lua b/perf/LuaJIT-benches/coroutine-ring.lua
index 8efe7b2a..747a2ecc 100644
--- a/perf/LuaJIT-benches/coroutine-ring.lua
+++ b/perf/LuaJIT-benches/coroutine-ring.lua
@@ -56,4 +62,3 @@ bench:add({
 })

 bench:run_and_report()
-
===================================================================

-- 
Best regards,
Sergey Kaplun

  reply	other threads:[~2025-12-26  8:11 UTC|newest]

Thread overview: 134+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-24 10:50 [Tarantool-patches] [PATCH v1 luajit 00/41] LuaJIT performance testing Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 01/41] perf: add LuaJIT-test-cleanup perf suite Sergey Kaplun via Tarantool-patches
2025-11-11 14:28   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:04     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 02/41] perf: introduce clock module Sergey Kaplun via Tarantool-patches
2025-11-11 14:28   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:05     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 03/41] perf: introduce bench module Sergey Kaplun via Tarantool-patches
2025-11-11 15:41   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:06     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 04/41] perf: adjust array3d in LuaJIT-benches Sergey Kaplun via Tarantool-patches
2025-11-13 11:06   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:07     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 05/41] perf: adjust binary-trees " Sergey Kaplun via Tarantool-patches
2025-11-13 11:06   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:08     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 06/41] perf: adjust chameneos " Sergey Kaplun via Tarantool-patches
2025-11-13 11:11   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:10     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 07/41] perf: adjust coroutine-ring " Sergey Kaplun via Tarantool-patches
2025-11-13 11:17   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:11     ` Sergey Kaplun via Tarantool-patches [this message]
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 08/41] perf: adjust euler14-bit " Sergey Kaplun via Tarantool-patches
2025-11-13 11:44   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:12     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 09/41] perf: adjust fannkuch " Sergey Kaplun via Tarantool-patches
2025-11-17  8:36   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:13     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 10/41] perf: adjust fasta " Sergey Kaplun via Tarantool-patches
2025-12-23 10:37   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:15     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 11/41] perf: adjust k-nucleotide " Sergey Kaplun via Tarantool-patches
2025-11-17  8:36   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:17     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 12/41] perf: adjust life " Sergey Kaplun via Tarantool-patches
2025-11-17  8:35   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:18     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 13/41] perf: adjust mandelbrot-bit " Sergey Kaplun via Tarantool-patches
2025-11-17 13:26   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:20     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 14/41] perf: adjust mandelbrot " Sergey Kaplun via Tarantool-patches
2025-12-23 10:38   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:20     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 15/41] perf: adjust md5 " Sergey Kaplun via Tarantool-patches
2025-11-17 13:26   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:22     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 16/41] perf: adjust meteor " Sergey Kaplun via Tarantool-patches
2025-12-23 10:38   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:23     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 17/41] perf: adjust nbody " Sergey Kaplun via Tarantool-patches
2025-11-17 13:26   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:24     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 18/41] perf: adjust nsieve-bit-fp " Sergey Kaplun via Tarantool-patches
2025-11-17 13:26   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:25     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 19/41] perf: adjust nsieve-bit " Sergey Kaplun via Tarantool-patches
2025-11-17 13:26   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:25     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 20/41] perf: adjust nsieve " Sergey Kaplun via Tarantool-patches
2025-11-17 13:25   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:26     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 21/41] perf: adjust partialsums " Sergey Kaplun via Tarantool-patches
2025-11-17 13:25   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:27     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 22/41] perf: adjust pidigits-nogmp " Sergey Kaplun via Tarantool-patches
2025-11-17 13:25   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:27     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 23/41] perf: adjust ray " Sergey Kaplun via Tarantool-patches
2025-11-17 13:25   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:29     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 24/41] perf: adjust recursive-ack " Sergey Kaplun via Tarantool-patches
2025-11-17 13:25   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:30     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 25/41] perf: adjust recursive-fib " Sergey Kaplun via Tarantool-patches
2025-11-17 13:59   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:30     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 26/41] perf: adjust revcomp " Sergey Kaplun via Tarantool-patches
2025-11-17 13:59   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:31     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 27/41] perf: adjust scimark-2010-12-20 " Sergey Kaplun via Tarantool-patches
2025-11-17 13:56   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:32     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 28/41] perf: move <scimark_lib.lua> to <libs/> directory Sergey Kaplun via Tarantool-patches
2025-11-17 13:58   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:32     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 29/41] perf: adjust scimark-fft in LuaJIT-benches Sergey Kaplun via Tarantool-patches
2025-11-17 14:00   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:33     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 30/41] perf: adjust scimark-lu " Sergey Kaplun via Tarantool-patches
2025-10-24 11:00   ` Sergey Kaplun via Tarantool-patches
2025-10-24 11:01   ` Sergey Kaplun via Tarantool-patches
2025-11-17 14:07   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:34     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 31/41] perf: add scimark-mc " Sergey Kaplun via Tarantool-patches
2025-10-24 11:00   ` Sergey Kaplun via Tarantool-patches
2025-10-24 11:02   ` Sergey Kaplun via Tarantool-patches
2025-11-17 14:09   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:35     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 32/41] perf: adjust scimark-sor " Sergey Kaplun via Tarantool-patches
2025-10-24 11:00   ` Sergey Kaplun via Tarantool-patches
2025-10-24 11:02   ` Sergey Kaplun via Tarantool-patches
2025-11-17 14:11   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:35     ` Sergey Kaplun via Tarantool-patches
2025-10-24 10:50 ` [Tarantool-patches] [PATCH v1 luajit 33/41] perf: adjust scimark-sparse " Sergey Kaplun via Tarantool-patches
2025-10-24 11:00   ` Sergey Kaplun via Tarantool-patches
2025-10-24 11:03   ` Sergey Kaplun via Tarantool-patches
2025-11-17 14:15   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:36     ` Sergey Kaplun via Tarantool-patches
2025-10-24 11:00 ` [Tarantool-patches] [PATCH v1 luajit 34/41] perf: adjust series " Sergey Kaplun via Tarantool-patches
2025-11-17 14:19   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:37     ` Sergey Kaplun via Tarantool-patches
2025-10-24 11:00 ` [Tarantool-patches] [PATCH v1 luajit 35/41] perf: adjust spectral-norm " Sergey Kaplun via Tarantool-patches
2025-11-17 14:23   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:37     ` Sergey Kaplun via Tarantool-patches
2025-10-24 11:00 ` [Tarantool-patches] [PATCH v1 luajit 36/41] perf: adjust sum-file " Sergey Kaplun via Tarantool-patches
2025-12-23 10:37   ` Sergey Bronnikov via Tarantool-patches
2025-12-23 10:44   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:38     ` Sergey Kaplun via Tarantool-patches
2025-10-24 11:00 ` [Tarantool-patches] [PATCH v1 luajit 37/41] perf: add CMake infrastructure Sergey Kaplun via Tarantool-patches
2025-11-18 12:21   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:40     ` Sergey Kaplun via Tarantool-patches
2025-10-24 11:00 ` [Tarantool-patches] [PATCH v1 luajit 38/41] perf: add aggregator helper for bench statistics Sergey Kaplun via Tarantool-patches
2025-11-18 12:31   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:41     ` Sergey Kaplun via Tarantool-patches
2025-10-24 11:00 ` [Tarantool-patches] [PATCH v1 luajit 39/41] perf: add a script for the environment setup Sergey Kaplun via Tarantool-patches
2025-11-18 12:36   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:41     ` Sergey Kaplun via Tarantool-patches
2025-10-24 11:00 ` [Tarantool-patches] [PATCH v1 luajit 40/41] perf: provide CMake option to setup the benchmark Sergey Kaplun via Tarantool-patches
2025-11-18 12:51   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:42     ` Sergey Kaplun via Tarantool-patches
2025-10-24 11:00 ` [Tarantool-patches] [PATCH v1 luajit 41/41] ci: introduce the performance workflow Sergey Kaplun via Tarantool-patches
2025-11-18 13:08   ` Sergey Bronnikov via Tarantool-patches
2025-12-26  8:43     ` Sergey Kaplun via Tarantool-patches
2025-11-18 13:13   ` Sergey Bronnikov via Tarantool-patches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aU5DRVFGeDWVBBhV@root \
    --to=tarantool-patches@dev.tarantool.org \
    --cc=sergeyb@tarantool.org \
    --cc=skaplun@tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH v1 luajit 07/41] perf: adjust coroutine-ring in LuaJIT-benches' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox