• Binbin's avatar
    Allocate Lua VM code with jemalloc instead of libc, and count it used memory (#13133) · 804110a4
    Binbin authored
    ## Background
    1. Currently Lua memory control does not pass through Redis's zmalloc.c.
    Redis maxmemory cannot limit memory problems caused by users abusing lua
    since these lua VM memory is not part of used_memory.
    
    2. Since jemalloc is much better (fragmentation and speed), and also we
    know it and trust it. we are
    going to use jemalloc instead of libc to allocate the Lua VM code and
    count it used memory.
    
    ## Process:
    In this PR, we will use jemalloc in lua. 
    1. Create an arena for all lua vm (script and function), which is
    shared, in order to avoid blocking defragger.
    2. Create a bound tcache for the lua VM, since the lua VM and the main
    thread are by default in the same tcache, and if there is no isolated
    tcache, lua may request memory from the tcache which has just been freed
    by main thread, and vice versa
    On the other hand, since lua vm might be release in bio thread, but
    tcache is not thread-safe, ...
    804110a4
defrag.c 44.1 KB