Tarantool development patches archive
 help / color / mirror / Atom feed
From: Igor Munkin <imun@tarantool.org>
To: Konstantin Osipov <kostja.osipov@gmail.com>
Cc: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH] Move txn from shema to a separate module (use C API instead of FFI)
Date: Thu, 28 Nov 2019 17:03:40 +0300	[thread overview]
Message-ID: <20191128140340.GB1214@tarantool.org> (raw)
In-Reply-To: <20191128131804.GE29714@atlas>

Kostja,

On 28.11.19, Konstantin Osipov wrote:
> * Igor Munkin <imun@tarantool.org> [19/11/28 16:03]:
> > LuaJIT v2.1 provides trace stitching feature (for more info see
> > here[1]), so strictly saying, it doesn't kill JIT but yes, performance
> > is nerfed comparing to traces recorded for an FFI code. I have no
> > proofs/benchmarks for now, so it sounds kinda bullshit, but I look
> > forward to make some in the nearest future.
> > 
> > Furthermore, FFI is not a silver bullet considering this issue[2].
> 
> I fully agree on all points, there is some buggy trace stitching,
> there is an overhead of switching to Lua/C and back, 
> (FFI is slower in Lua/C partly for this reason), and
> FFI is not a silver bullet.

We faced several platform failures recently in FFI machinery, thus I
can't claim which one LuaJIT part from these two is much more buggy.

> 
> Despite all of the above we should be aiming at using FFI more,
> not less, going forward, don't you agree?
> 

Why should we be aiming at using FFI more? The root cause is that
current fiber machinery (as well as some parts of triggers mechanism)
doesn't respect the Lua coroutine switch semantics, thereby breaking
trace recording. Lua-C API implicitly (or non-intentionally) prevents
breakage by JIT trace aborts when recording FUNCC.

Therefore, I guess we should be aiming either at changing fiber
switching to the one respecting the LuaJIT runtime or at tuning JIT
compiler way more regarding the Lua-C usage.

Besides, we can't fully prevent platform failures if there is an FFI
misusage in users code.

> What should be the rule of thumb in your opinion, ffi or
> lua/c? 

If you want to know my rule of thumb: FFI is for external existing
libraries to be used in Lua code (and all compiler related benefits are
nothing more than a godsend consequence, since all guest stack
manipulations are implemented in LuaJIT runtime, not in an external
code) and Lua-C is a well-designed and well-documented API for embedding
Lua into a host application / extending Lua with external low-lewel
libs. I totally do not insist on my point of view, since everyone has
it's own vision on LuaJIT features.

> 
> > > plain Lua 5.3 and forget about grievances with LuaJIT altogether.
> > 
> > JIT is not the only killing feature provided by LuaJIT and
> > infrastructure for Lua 5.1 is much richer.
> > 
> > > 
> > > Nick Zavaritsky had a patch that would detect sandwich stacks in
> > > runtime and assert. Nobody had time to look at it back then -
> > 
> > Could you please provide the issue/link for this changeset, I'll take a
> > look on it with pleasure.
> 
> Nick Zavaritsky himself is the only link here, unfortunately.
> Perhaps he has this patch in one of his personal branches. I
> suggest someone contacts him :)
> 
> -- 
> Konstantin Osipov, Moscow, Russia

-- 
Best regards,
IM

  reply	other threads:[~2019-11-28 14:05 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-26 13:13 Leonid
2019-11-26 21:05 ` Konstantin Osipov
2019-11-26 21:17   ` Alexander Turenko
2019-11-27  8:31     ` Konstantin Osipov
2019-11-28  8:10       ` Leonid Vasiliev
2019-11-28 12:34         ` Konstantin Osipov
2019-11-28 13:00           ` Igor Munkin
2019-11-28 13:18             ` Konstantin Osipov
2019-11-28 14:03               ` Igor Munkin [this message]
2019-11-28 15:58                 ` Konstantin Osipov
2019-11-28 18:36                   ` Igor Munkin
2019-11-29  5:30                     ` Konstantin Osipov
2019-11-29 17:43                       ` Igor Munkin
2019-11-29  5:41                     ` Konstantin Osipov
2019-11-29 17:37                       ` Igor Munkin
2019-12-04 13:05                     ` Leonid Vasiliev
2019-12-04 13:15                       ` Konstantin Osipov
2019-12-05  8:27                         ` Leonid Vasiliev
2020-03-20 18:48               ` Igor Munkin
2020-03-20 19:27                 ` Konstantin Osipov
2019-12-11 22:21 ` Alexander Turenko
2019-12-12  8:23   ` Leonid Vasiliev
2020-01-15 17:05     ` Alexander Turenko
2019-12-12  8:49   ` Konstantin Osipov

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=20191128140340.GB1214@tarantool.org \
    --to=imun@tarantool.org \
    --cc=kostja.osipov@gmail.com \
    --cc=tarantool-patches@dev.tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH] Move txn from shema to a separate module (use C API instead of FFI)' \
    /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