<div dir="ltr">Hello Daniel,<div><br></div><div>> 1. You are initializing and destroying Lua context for every call.  Can this be done just once for <span style="line-height:1.5">the whole program?</span></div><div>I intend to keep lua context between calls but then I'm not sure how it will affect the subsequent calls. If the lua_State* is same for multiple calls then that state would have the file loaded once and I'm not sure if pushing and poping the arguments and return values from lua context would create problems or not. </div><div>> 2. I count at least 5 read()/write() calls for each command which are somewhat expensive.  Can that be reduced?  Also consider batching a whole bunch of commands with a single read()/write().<br></div><div>read()/write() calls erlang to c-port? I simply followed a blog example do this, since I'm very new to both C as well as erlang. I'm not getting the link right now, I'll post it in this thread as soon as I find it. I will look into reducing those calls.</div><div><br></div><div>Thanks for the reply and for pointing out areas of improvements.</div><div><br></div><div>Regards,</div><div>Arshad</div><br><div class="gmail_quote"><div dir="ltr">On Thu, Sep 1, 2016 at 12:58 AM Daniel Goertzen <<a href="mailto:daniel.goertzen@gmail.com">daniel.goertzen@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I don't know much about Lua or why you had a stack overflow, but I have some performance concerns about that C code:<div><br></div><div>1. You are initializing and destroying Lua context for every call.  Can this be done just once for the whole program?</div><div><br></div><div>2. I count at least 5 read()/write() calls for each command which are somewhat expensive.  Can that be reduced?  Also consider batching a whole bunch of commands with a single read()/write().</div><div><br></div><div>Regards,</div><div>Dan.</div><div><br><div class="gmail_quote"></div></div></div><div dir="ltr"><div><div class="gmail_quote"><div dir="ltr">On Thu, Aug 25, 2016 at 8:01 AM Arshad Ansari <<a href="mailto:arshadansari27@gmail.com" target="_blank">arshadansari27@gmail.com</a>> wrote:<br></div></div></div></div><div dir="ltr"><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello there,<div><br></div><div>I had earlier asked about how to access LuaJIT from erlang [<a href="http://erlang.org/pipermail/erlang-questions/2016-August/089939.html%5C" target="_blank">http://erlang.org/pipermail/erlang-questions/2016-August/089939.html</a>] and based on the responses, I decided to go with C port. It was working all great. Except, when I tried to call the same C-Port [luajit] code from erlang-diameter server. Since the requests were high, but not very high (approx 10K per second), the code fails with stack overflow on c side.</div><div><br></div><div>Now I thought, I would create a seperate C port for each requests but that would mean there will be around 10K c-port processes. I'm now wondering how to handle this size of requests from the c port. Any help or direction is appreciated. Please let me know if my question is not clear. I'm attaching the code to access lua that works with single instance of c-port process.</div><div><br></div><div>Regards</div><div>Arshad</div><div><br></div><div>/************ CODE Details *********************/</div><div><br></div><div>erl_com.c contains code to send/receive data from c side</div><div>port.c runs the lua code and has main</div><div>script.lua </div><div>relay.erl starts the relay server and c port to talk to lua</div><div>relay_cb.erl handles requests and communicates with lua</div><div><br></div></div></blockquote></div></div></div><div dir="ltr"><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div></div></div></blockquote></div></div>