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 37/41] perf: add CMake infrastructure
Date: Fri, 26 Dec 2025 11:40:33 +0300	[thread overview]
Message-ID: <aU5J5FIg0JCEGwui@root> (raw)
In-Reply-To: <1e32e858-f823-453c-87fc-2bad7e0f6980@tarantool.org>

Hi, Sergey!
Thanks for the review.
Please, consider my answers below.

On 18.11.25, Sergey Bronnikov wrote:
> Hi, Sergey,
> 
> thanks for the patch! See my comments.
> 
> Sergey
> 
> On 10/24/25 14:00, Sergey Kaplun wrote:

<snipped>

> > diff --git a/CMakeLists.txt b/CMakeLists.txt
> > index c0da4362..73f46835 100644
> > --- a/CMakeLists.txt
> > +++ b/CMakeLists.txt
> > @@ -464,6 +464,17 @@ if(LUAJIT_USE_TEST)
> >   endif()
> >   add_subdirectory(test)
> >   
> > +# --- Benchmarks source tree ---------------------------------------------------
> > +
> > +# The option to enable performance tests for the LuaJIT.
> > +# Disabled by default, since commonly it is used only by LuaJIT
> > +# developers and run in the CI with the specially set-up machine.
> > +option(LUAJIT_ENABLE_PERF "Generate <perf> target" OFF)
> > +
> > +if(LUAJIT_ENABLE_PERF)
> 
> option name confuses a bit due to `perf` utility.
> 
> I would rename to something like "LUAJIT_ENABLE_PERF_TESTS".

OTOH, it matches with the directory name which is the same as in
Tarantool.

LUAJIT_USE_PERFTOOLS is used for the perftools support in JIT engine.

> 
> Feel free to ignore.

Ignoring.

> 
> > +  add_subdirectory(perf)
> > +endif()
> > +
> >   # --- Misc rules ---------------------------------------------------------------
> >   
> >   # XXX: Implement <uninstall> target using the following recipe:
> > diff --git a/perf/CMakeLists.txt b/perf/CMakeLists.txt
> > new file mode 100644
> > index 00000000..cc3c312f
> > --- /dev/null
> > +++ b/perf/CMakeLists.txt
> > @@ -0,0 +1,99 @@
> > +# Running various bench suites against LuaJIT.
> > +
> > +include(MakeLuaPath)
> > +
> > +if(CMAKE_BUILD_TYPE STREQUAL "Debug")
> > +  message(WARNING "LuaJIT and perf tests are built in the Debug mode."
> 
> s/./. /
> 
> missed whitespace after dot

Fixed, thanks!
===================================================================
diff --git a/perf/CMakeLists.txt b/perf/CMakeLists.txt
index c315597f..5a5cf777 100644
--- a/perf/CMakeLists.txt
+++ b/perf/CMakeLists.txt
@@ -3,7 +3,7 @@
 include(MakeLuaPath)
 
 if(CMAKE_BUILD_TYPE STREQUAL "Debug")
-  message(WARNING "LuaJIT and perf tests are built in the Debug mode."
+  message(WARNING "LuaJIT and perf tests are built in the Debug mode. "
                   "Timings may be affected.")
 endif()
 
===================================================================

> 
> > +                  "Timings may be affected.")
> > +endif()
> > +

<snipped>

> > +macro(AddBenchTarget perf_suite)
> > +  file(MAKE_DIRECTORY "${PERF_OUTPUT_DIR}/${perf_suite}/")
> > +  message(STATUS "Add perf suite ${perf_suite}")
> > +  add_custom_target(${perf_suite})
> > +  add_custom_target(${perf_suite}-console
> > +    COMMAND ${CMAKE_CTEST_COMMAND}
> > +      -L ${perf_suite}
> > +      --parallel 1
> > +      --verbose
> > +      --output-on-failure
> > +      --no-tests=error
> may be --schedule-random, --timeout XXX (default timeout is 10000000)?

I don't want to add the `--schedule-random`. It is better to have the
deterministic execution order.
There is no need for the strict timeout anyway. We can't predict the
behaviour of the benchmark. The default timeout on CI runners is OK.
The user may determine the timeout locally via the `CTEST_TEST_TIMEOUT`
environment variable.

> > +  )
> > +  add_dependencies(${perf_suite}-console luajit-main)
> > +endmacro()
> > +

<snipped>

> > +  set(BENCH_FLAGS
> > +    "--benchmark_out_format=json --benchmark_out=${bench_out_file}"
> > +  )
> > +  set(bench_command_flags ${bench_command} ${BENCH_FLAGS})
> > +  separate_arguments(bench_command_separated UNIX_COMMAND ${bench_command})
> > +  add_custom_command(
> > +    COMMAND ${CMAKE_COMMAND} -E env
> > +      LUA_PATH="${LUA_PATH}"
> > +      LUA_CPATH="${LUA_CPATH}"
> > +        ${bench_command_separated}
> > +          --benchmark_out_format=json
> > +          --benchmark_out="${bench_out_file}"
> previous two lines can be replaced with ${BENCH_FLAGS}, right?

No, this brokes the CMake generation, IINM.

> > +    OUTPUT ${bench_out_file}
> > +    DEPENDS luajit-main
> > +    COMMENT
> > +      "Running benchmark ${bench_title} saving results in ${bench_out_file}."
> > +  )
> > +  add_custom_target(${bench_name} DEPENDS ${bench_out_file})
> > +  add_dependencies(${perf_suite} ${bench_name})
> > +
> > +  # Report in the console.
> > +  add_test(NAME ${bench_title}
> > +    COMMAND sh -c "${bench_command}"
> > +  )
> > +  set_tests_properties(${bench_title} PROPERTIES
> > +    ENVIRONMENT "LUA_PATH=${LUA_PATH}"
> > +    LABELS ${perf_suite}
> > +    DEPENDS luajit-main
> > +  )
> > +  unset(input_file)
> > +endmacro()
> > +
> > +add_subdirectory(LuaJIT-benches)
> > +
> > +add_custom_target(${PROJECT_NAME}-perf
> > +  DEPENDS LuaJIT-benches
> missed a COMMENT field

Why do we need it?
There is no such field in the tests target, for the example.

> > +)
> > +
> > +add_custom_target(${PROJECT_NAME}-perf-console
> > +  DEPENDS LuaJIT-benches-console
> missed a COMMENT field

Why do we need it?
The output is so huge anyway that this field will not be visible.

> > +)
> > diff --git a/perf/LuaJIT-benches/CMakeLists.txt b/perf/LuaJIT-benches/CMakeLists.txt
> > new file mode 100644
> > index 00000000..d9909f36
> > --- /dev/null
> > +++ b/perf/LuaJIT-benches/CMakeLists.txt
> > @@ -0,0 +1,52 @@
> > +set(PERF_SUITE_NAME LuaJIT-benches)
> > +set(LUA_BENCH_SUFFIX .lua)
> it is not a bench-specific suffix. May be LUA_SUFFIX?

This is just for unified naming like it is done in our tests.

> > +
> > +AddBenchTarget(${PERF_SUITE_NAME})
> > +
> > +# Input for the k-nucleotide and revcomp benchmarks.
> > +set(FASTA_NAME ${CMAKE_CURRENT_BINARY_DIR}/FASTA_5000000)
> > +add_custom_target(FASTA_5000000
> > +  COMMAND ${LUAJIT_BINARY}
> > +    ${CMAKE_CURRENT_SOURCE_DIR}/libs/fasta.lua 5000000 > ${FASTA_NAME}
> 
> FASTA_5000000 is a plain text file. I propose to add extension .txt for 
> its full name and
> 
> probably postfix "_autogenerated". Like we do this for SUMCOL_5000 and 
> SUMCOL_1.
> 

The FASTA_\d* is the name used in the PARAMS file and
<TEST_md5sum.txt>. I prefer not to change it to avoid confusion.

> > +  OUTPUT ${FASTA_NAME}
> > +  DEPENDS luajit-main
> > +  COMMENT "Generate ${FASTA_NAME}."
> > +)
> > +
> > +make_lua_path(LUA_PATH
> > +  PATHS
> > +    ${LUA_PATH_BENCH_BASE}
> > +    ${CMAKE_CURRENT_SOURCE_DIR}/libs/?.lua
> > +)
> > +
> > +# Input for the <sum-file.lua> benchmark.
> > +set(SUM_NAME ${CMAKE_CURRENT_BINARY_DIR}/SUMCOL_5000.txt)
> > +# Remove possibly existing file.
> > +file(REMOVE ${SUM_NAME})
> 
> Why do we need generate file after every cmake configuration?
> 
> I propose to skip generation if file already exist or regenerate if 
> SHA256 is not the same.

I'm not sure that this is good idea, since possible the file may changed
accidentally or replaced by the mistake. The generation takes to small
amount of time to be crucial.

> 
> > +

<snipped>

-- 
Best regards,
Sergey Kaplun

  reply	other threads:[~2025-12-26  8:40 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
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 [this message]
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=aU5J5FIg0JCEGwui@root \
    --to=tarantool-patches@dev.tarantool.org \
    --cc=sergeyb@tarantool.org \
    --cc=skaplun@tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH v1 luajit 37/41] perf: add CMake infrastructure' \
    /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