[Opensim-users] Slow LSL timers

dz dz at bitzend.net
Sat Dec 4 06:23:07 UTC 2010


I'd have to agree with Justin...

Expecting event handling to be optimized is too optimistic, but  there are
alternatives.  The .Net/Mono libraries already include timer functions that
support fast and accurate timing.

Relying on an LSL event trigger to happen every 4 frames MAY work in SL but
it is a design begging to cause lag and  stop itself.  Designs like that are
also susceptible to event buffer overflows  where your events are "lost",
leaving you to wonder why your "reliable" script  sometimes just isn't..
The ONLY LSL events I have seen  requiring sub-second repeats  would be in
an AO, but timer based AO's are obsoleted in OpenSim by the use of the
Animation_Changed event.

In the extreme, if you are trying to be  very exact,,  you would want to
insure the timings were made by processes independent of the region time
dialations, not the ones that may be responsible for them.



On Fri, Dec 3, 2010 at 5:35 PM, <opensim-users-request at lists.berlios.de>wrote:

> ---------- Forwarded message ----------
> From: Jorge Lima <jorge.manuel at gmail.com>
>
> Subject: [Opensim-users] Slow LSL timers
> 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? :)
>
>
>
> ---------- Forwarded message ----------
> From: Justin Clark-Casey <jjustincc at googlemail.com>
> To: opensim-users at lists.berlios.de
> Date: Sat, 04 Dec 2010 01:35:32 +0000
> Subject: Re: [Opensim-users] Slow LSL timers
>


> 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.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-users/attachments/20101203/453a6be4/attachment.html>


More information about the Opensim-users mailing list