Tarantool development patches archive
 help / color / mirror / Atom feed
* [Tarantool-patches] [PATCH luajit 0/7] misc: introduce sysprof
@ 2021-09-08 17:50 Maxim Kokryashkin via Tarantool-patches
  2021-09-08 17:50 ` [Tarantool-patches] [PATCH luajit 1/7] core: save current frame top to lj_obj Maxim Kokryashkin via Tarantool-patches
                   ` (6 more replies)
  0 siblings, 7 replies; 19+ messages in thread
From: Maxim Kokryashkin via Tarantool-patches @ 2021-09-08 17:50 UTC (permalink / raw)
  To: tarantool-patches, imun, skaplun

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


^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2021-10-07 11:29 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-08 17:50 [Tarantool-patches] [PATCH luajit 0/7] misc: introduce sysprof Maxim Kokryashkin via Tarantool-patches
2021-09-08 17:50 ` [Tarantool-patches] [PATCH luajit 1/7] core: save current frame top to lj_obj Maxim Kokryashkin via Tarantool-patches
2021-09-20 17:21   ` Sergey Kaplun via Tarantool-patches
2021-09-08 17:50 ` [Tarantool-patches] [PATCH luajit 2/7] core: separate the profiling timer from lj_profile Maxim Kokryashkin via Tarantool-patches
2021-09-21 11:13   ` Sergey Kaplun via Tarantool-patches
2021-09-23 11:37     ` Mikhail Shishatskiy via Tarantool-patches
2021-09-08 17:50 ` [Tarantool-patches] [PATCH luajit 3/7] memprof: move symtab to a separate module Maxim Kokryashkin via Tarantool-patches
2021-09-22  7:51   ` Sergey Kaplun via Tarantool-patches
2021-09-22  8:14     ` Sergey Kaplun via Tarantool-patches
2021-09-23 14:51   ` [Tarantool-patches] [PATCH luajit v2] " Maxim Kokryashkin via Tarantool-patches
2021-09-08 17:50 ` [Tarantool-patches] [PATCH luajit 4/7] core: introduce lua and platform profiler Maxim Kokryashkin via Tarantool-patches
2021-09-29  6:53   ` Sergey Kaplun via Tarantool-patches
2021-09-08 17:50 ` [Tarantool-patches] [PATCH luajit 5/7] memprof: add profile common section Maxim Kokryashkin via Tarantool-patches
2021-10-05 10:48   ` Sergey Kaplun via Tarantool-patches
2021-10-06 19:15     ` [Tarantool-patches] [PATCH luajit v2] " Maxim Kokryashkin via Tarantool-patches
2021-09-08 17:50 ` [Tarantool-patches] [PATCH luajit 6/7] sysprof: introduce Lua API Maxim Kokryashkin via Tarantool-patches
2021-10-05 15:36   ` Sergey Kaplun via Tarantool-patches
2021-09-08 17:50 ` [Tarantool-patches] [PATCH luajit 7/7] tools: introduce parsers for sysprof Maxim Kokryashkin via Tarantool-patches
2021-10-07 11:28   ` Sergey Kaplun via Tarantool-patches

Tarantool development patches archive

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://lists.tarantool.org/tarantool-patches/0 tarantool-patches/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 tarantool-patches tarantool-patches/ https://lists.tarantool.org/tarantool-patches \
		tarantool-patches@dev.tarantool.org.
	public-inbox-index tarantool-patches

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git