@Xiaomi Lua stuff only takes about 6.5% of a tick-time in my measurements:
5.3% is Lua threads (unit, weapon, AI brain and score scripts)
1.1% is Lua garbage collection.
Calls from the engine into Lua callbacks (OnDamage, OnKilled, weapon and projectile callbacks and so on) aren't separated yet, so they're still counted as C++ time. The rest is C++: bone/animation updates are about 15%, vision/radar about 13%, and building the state sent to the UI about 12%.
On parallelism - basically yes, very bit of sim Lua runs on the single sim thread, interleaved with the C++. Engine calls into Lua, and Lua calls back into the engine, nothing really runs Lua in parallel. What my build adds is helper threads, like: vision refresh, the UI sync data, effects, coordinate updates and the mark/sweep part of the Lua GC. In one case (vision) this C++ work overlaps with the sim thread's Lua, but before that Lua calls any engine function, the helper jobs are finished first, so the results stay identical to the original game and replays still match.