Further on, users may change TS_LUA_MAX_STATE_COUNT from 2048 to 256 or less.
在 2014-1-13,下午2:09,Yunkai Zhang <yunkai...@gmail.com> 写道: > I have discussed with Quehan, in fact, ts_lua can also work with LuaJit. > > I think we can add some configruation for ts_lua, so that users can select > Lua or LuaJit according their business scenario. > > > On Mon, Jan 13, 2014 at 1:43 PM, Yunkai Zhang <yunkai...@gmail.com> wrote: > >> HI Quehan: >> >> I think Daniel's suggestion is reasonable, maybe we need to reconsider >> your design if ts_lua may consume too much memory. >> >> We can allways put the havy work to ATS, and let ts_lua to handle simple >> logic, can't we? >> >> >> On Mon, Jan 13, 2014 at 12:12 AM, quehan <que...@taobao.com> wrote: >> >>> >>> As we know, one request can be processed by different threads in ats, and >>> I want to transimit data at different stages, so I have to create serveral >>> Lua states for concurrency. >>> >>> I also want to implement many features with ts-lua, such as transform, >>> intercept, fetcher, tcp and others. No matter the limit is 2GB or 1GB, I >>> don't think it is enough for all LuaStates in one process, as gc is >>> controlled by Lua itself. >>> >>> >>> >>> 在 2014-1-12,下午10:28,Daniel Gruno <rum...@cord.dk> 写道: >>> >>>> On 01/12/2014 03:35 AM, quehan wrote: >>>>> I think it is 1G for all lua_States in one process. >>>>> >>>>> >>>>> 在 2014-1-12,上午1:39,James Peach <jpe...@apache.org> 写道: >>>>> >>>>>> On Jan 10, 2014, at 8:16 PM, quehan <que...@taobao.com> wrote: >>>>>> >>>>>>> hi, all: >>>>>>> >>>>>>> As far as I know, LuaJIT can only use 1G memory at most, so ts-lua >>> is suggested to use Lua rather than LuaJIT. >>>>>> >>>>>> That is 1G for each lua_State, right? Since you are allocating 2048 >>> states, have you found this to be a problem in practice? >>>>>> >>>>>>> >>>>>>> I found Lua5.2 is very different with Lua5.1, so Lua5.2 is not >>> supported now, and I didn't have time to fix it yet, may be I will fix it >>> later. >>>>>>> >>>>>>> >>>>>>> <bla bla bla> >>>> >>>> IIRC, the limit is 2GB, not 1GB, but why on earth would you ever, EVER >>>> want to have a state with 2GB of allocated Lua objects? Your code would >>>> slow to a grinding halt! If you need to allocate more with JIT, you use >>>> FFI and call (ts)malloc/free, it would be folly to try to manage >>>> anything this large with native Lua objects. Ideally, you would handle >>>> 'control' data within Lua and 'real' data within TS, maybe, AT MOST 1/2 MB >>>> of data per state for some transformation or advanced math or whatever. >>>> >>>> I'm sorry to say, but if there ever comes a time where you need to >>>> allocate more than 2GB, or, heck, even 1GB, inside Lua itself, then >>>> you're doing something really wrong. Lua should be doing the business >>>> logic while TS does the heavy resource work, it should never be the >>>> other way around. >>>> >>>> With regards, >>>> Daniel. >>> >>> >> >> >> -- >> Yunkai Zhang >> Work at Taobao >> > > > > -- > Yunkai Zhang > Work at Taobao