[Tarantool-patches] [PATCH luajit 0/7] misc: introduce sysprof

Maxim Kokryashkin max.kokryashkin at gmail.com
Wed Sep 8 20:50:43 MSK 2021


Currently, available options for profiling LuaJIT are not fine enough
to get an understanding of performance. For example, perf only able to
show host stack, so all the Lua calls are seen as single pcall.
Oppositely, jit.p module provided with LuaJIT is not able to give any
information about the host stack.

To get a detailed perspective of platform performance, a more advanced
profiler is needed. Sysprof is able to capture both guest and host stacks
simultaneously, along with virtual machine states.

Maxim Kokryashkin (4):
  memprof: move symtab to a separate module
  memprof: add profile common section
  sysprof: introduce Lua API
  tools: introduce parsers for sysprof

Mikhail Shishatskiy (3):
  core: save current frame top to lj_obj
  core: separate the profiling timer from lj_profile
  core: introduce lua and platform profiler

 .gitignore                                    |   1 +
 CMakeLists.txt                                |   6 +
 src/CMakeLists.txt                            |   3 +
 src/Makefile.dep.original                     |  17 +-
 src/lib_misc.c                                | 239 ++++++++-
 src/lj_arch.h                                 |  11 +
 src/lj_errmsg.h                               |   2 +-
 src/lj_mapi.c                                 |  26 +
 src/lj_memprof.c                              |  37 +-
 src/lj_memprof.h                              |  36 --
 src/lj_obj.h                                  |  12 +
 src/lj_profile.c                              | 178 +------
 src/lj_profile_timer.c                        | 126 +++++
 src/lj_profile_timer.h                        |  83 +++
 src/lj_state.c                                |   7 +
 src/lj_symtab.c                               |  36 ++
 src/lj_symtab.h                               |  46 ++
 src/lj_sysprof.c                              | 483 ++++++++++++++++++
 src/lj_sysprof.h                              |  94 ++++
 src/lmisclib.h                                |  93 ++++
 src/vm_x64.dasc                               |  52 +-
 src/vm_x86.dasc                               |  52 +-
 test/tarantool-tests/CMakeLists.txt           |   1 +
 .../misclib-sysprof-capi.test.lua             |  53 ++
 .../misclib-sysprof-capi/CMakeLists.txt       |   1 +
 .../misclib-sysprof-capi/testsysprof.c        | 269 ++++++++++
 .../misclib-sysprof-lapi.test.lua             | 107 ++++
 tools/CMakeLists.txt                          |  83 +++
 tools/luajit-parse-sysprof.in                 |   6 +
 tools/sysprof.lua                             | 119 +++++
 tools/sysprof/collapse.lua                    | 110 ++++
 tools/sysprof/parse.lua                       | 188 +++++++
 32 files changed, 2309 insertions(+), 268 deletions(-)
 create mode 100644 src/lj_profile_timer.c
 create mode 100644 src/lj_profile_timer.h
 create mode 100644 src/lj_symtab.c
 create mode 100644 src/lj_symtab.h
 create mode 100644 src/lj_sysprof.c
 create mode 100644 src/lj_sysprof.h
 create mode 100644 test/tarantool-tests/misclib-sysprof-capi.test.lua
 create mode 100644 test/tarantool-tests/misclib-sysprof-capi/CMakeLists.txt
 create mode 100644 test/tarantool-tests/misclib-sysprof-capi/testsysprof.c
 create mode 100644 test/tarantool-tests/misclib-sysprof-lapi.test.lua
 create mode 100644 tools/luajit-parse-sysprof.in
 create mode 100644 tools/sysprof.lua
 create mode 100755 tools/sysprof/collapse.lua
 create mode 100755 tools/sysprof/parse.lua

---
GitHub branch:
https://github.com/tarantool/luajit/tree/shishqa/gh-781-platform-and-lua-profiler

RFC:
https://hackmd.io/g-o4f21RRkChYTyVgN1AnQ

Original issue:
https://github.com/tarantool/tarantool/issues/781

2.33.0



More information about the Tarantool-patches mailing list