[Opensim-users] Slow LSL timers

Jorge Lima jorge.manuel at gmail.com
Mon Dec 6 16:53:09 UTC 2010


Thanks! I will try messing with that constant and see if I blow up my
sim or not ;)

On Mon, Dec 6, 2010 at 4:38 PM, Lake, Dan <dan.lake at intel.com> wrote:
> I agree with Justin that the implementation is quite imprecise and has built
> in a lot of overhead and “jitter” to the firing of timer events. If you are
> interested in looking into the code, here is a background on what I know
> about timers in XEngine.
>
>
>
> Timers are only checked for expiration in Timers.cs every 100ms so there is
> some “overhead” always built in. This value used to be configurable in
> OpenSim.ini using AsyncLLCommandLoopms but is has apparently been removed at
> some point.
>
>
>
> Each time the AsyncCommandManager loops (100ms), it calls into
> CheckTimerEvents() in Timer.cs that Justin mentioned. Each elapsed timer in
> the list of timers will trigger a ScriptEngine.PostScriptEvent of type
> “timer” on the script engine. The script engine passes the event on to the
> specific script instance which may accumulate/batch events with a minimum
> delay. This batching typically does not apply to timer events but it can.
> It’s configurable with the LSL command llMinEventDelay(double delay).  The
> script instance queues the timer event onto XEngine as a normal thread pool
> QueueWorkItem which will then be executed as soon as it can be scheduled.
>
>
>
> So, the only guaranteed delay is the (up to) 100ms added by the async
> command loop in checking for expired timers. If there are lots of timers,
> then there are several linear lists of searching and processing events which
> can create additional overhead but it doesn’t sound like that’s what you are
> doing (just 1 timer).  After that, there is possibly a minimum batching time
> for script events and 1 asyc call to QueueWorkItem. The queued work item is
> EventProcessor in ScriptInstance.cs and for a timer event, I don’t think
> there are additional delays in there.
>
>
>
> ~Dan
>
>
>
> From: Mic Bowman [mailto:cmickeyb at gmail.com]
> Sent: Friday, December 03, 2010 8:04 PM
> To: opensim-users at lists.berlios.de
> Cc: Lake, Dan
> Subject: Re: [Opensim-users] Slow LSL timers
>
>
>
> i believe dan did some work on optimizing the timers. maybe he can give some
> insight...
>
> --mic
>
> On Fri, Dec 3, 2010 at 5:35 PM, Justin Clark-Casey
> <jjustincc at googlemail.com> wrote:
>
> I'm not familiar with the this area of the code but I had a quick look since
> I was curious (the meat is in
> OpenSim/Region/ScriptEngine/Shared/Api/Plugins/Timer.cs).  The code isn't
> using C# timers so I'm not totally surprised at the behaviour that you're
> seeing.
>
> I suspect addressing this would require a considerably different
> implementation.
>
> On 03/12/10 17:18, Jorge Lima wrote:
>
> Ran 100 timer events with a single if(++i>  100) inside. I suppose
> decrementing and comparing to 0 might be faster, but I also
> copy-pasted 100 inlined if clauses and the time to run them was
> negligible.
>
> llSetTimerEvent(0.1) ->  59 s ->  490% overhead
> llSetTimerEvent(0.2) ->  59 s ->  195% overhead
> llSetTimerEvent(0.5) ->  59 s ->  18% overhead
> llSetTimerEvent(0.75) ->  81 s ->  8% overhead
> llSetTimerEvent(1.0) ->  108 s ->  8% overhead
> llSetTimerEvent(2.0) ->  209 s ->  4.5% overhead
> llSetTimerEvent(4.0) ->  407 s ->  1.75% overhead
>
> I am guessing that the overhead is, therefore, internal to the timer
> implementation. I haven't tested raw C# timers as comparison but 100ms
> is an eternity in modern computing, I can ping servers across the
> Atlantic ocean in less than that!
>
> I went through the code but I haven't yet found the part that handles
> timers. It's not in EventManager.
> Does anyone know what's going on? The code works fine in SL.
> Should I be posting this in the dev list? I'd like to see if I can fix it.
> Any thoughts on how to get fast timers in OpenSim?
> Faster computer? (I did check and was only getting about 20% CPU usage...)
> Porting them to a Real-Time operating system? :)
> _______________________________________________
> Opensim-users mailing list
> Opensim-users at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-users
>
>
>
> --
> Justin Clark-Casey (justincc)
> http://justincc.org
> http://twitter.com/justincc
>
> _______________________________________________
> Opensim-users mailing list
> Opensim-users at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-users
>
>
>
> _______________________________________________
> Opensim-users mailing list
> Opensim-users at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-users
>
>



More information about the Opensim-users mailing list