[Opensim-dev] Severely Decreased LSL Script Performance from 0.6.5 -> 0.6.6 -> 0.6.7

Shack Dougall shack at liferain.com
Fri Oct 9 22:04:42 UTC 2009


Dahlia's suggestion about making the prims phantom during rezzing was 
helpful, but didn't fix my problems completely.

It looks like there are several problems that are converging to create a 
perfect storm.

1) Something about script execution or creation is slower in 0.6.6.  I 
can't put my finger on it, but I definitely see a significant difference.

2) I'm not sure if this is a new problem or if it is simply being made 
visible by Problem 1, but I'm seeing scripts spontaneously stop 
executing in 0.6.6.  For example, I have one script that makes a call to 
llSleep.  Before it sleeps, it prints the number of seconds that it will 
sleep and then when it comes back from sleep, it prints "I'm back".  I 
have clearly seen that, in some cases, it never comes back.  I don't 
know if the script terminates or is dropped from the queue or what.  It 
just never executes after that.  The problem isn't unique to llSleep.  I 
suspect that several unexplained occurrences are due to something like this.

3) There is a problem in which scripts that kill themselves are not 
removed from Active Scripts 
(http://opensimulator.org/mantis/view.php?id=2929).  I know that this 
happens in 0.6.5 and 0.6.6.  I think it happens in 0.6.7, but I've been 
doing so much testing that I can't remember if I specifically confirmed 
that or not.

4) 0.6.7 imposed a very restrictive limit on the distance that an LSL 
script can move a child prim. 
(http://opensimulator.org/mantis/view.php?id=4228).  OpenSim is 
basically unusable for my LSL rezzer until this is relaxed.

Anyway, those are the issues that I am currently aware of.  As I develop 
repros for these and other issues, I will post them to Mantis.

I'm on vacation next week, so I won't be working on this until the 
following week.

--Shack

Shack Dougall wrote:
> Thanks for that suggestion, Dahlia.  I don't know if it will help, but 
> it is consistent with one other thing that I observed in 0.6.7.  When my 
> libopenmv program was creating the rezzer today, I saw my first ODE 
> crash ever.  It took down the whole server.  It's possible that some 
> changes in ODE are contributing to the problem.
>
> I'll give it a try and report back.  --Shack
>
> Dahlia Trimble wrote:
>   
>> I'm not sure what may be causing your delays but I do have one 
>> suggestion which may help mitigate some issues you are seeing: try 
>> making any prins that you rez phantom and do not change that state 
>> until the entire object is complete. This will eliminate a lot of 
>> unnecessafy interaction with the physics engine and may improve 
>> reliability and speed.
>>  
>> On Tue, Oct 6, 2009 at 2:03 PM, Shack Dougall <shack at liferain.com 
>> <mailto:shack at liferain.com>> wrote:
>>
>>     One part of Prim Composer is an LSL-based rezzing system that
>>     creates a
>>     build from notecard data.
>>     http://liferain.com/downloads/primcomposer/
>>
>>     In OpenSim 0.6.5, this system worked almost as good as in Second Life.
>>     Unfortunately, it does not work well in 0.6.6 and is unusable in 0.6.7
>>
>>     *Test Platform*: Standalone, Windows XP, MySQL, ODE Physics,
>>     Meshmerizer.  Other than this I use the defaults.
>>
>>     So, the question is "What is causing the problem?"  What has changed
>>     since 0.6.5 that causes the LSL rezzer to perform so badly?
>>
>>     I have verified that the script engine defaults have not changed.
>>
>>     *How the rezzer works*
>>
>>     The rezzer contains linksets with various numbers of prims, e.g.,
>>     Linkset-10 is a linkset with 10 prims in it.
>>
>>     1. The rezzer reads data out of a notecard. It sees how many prims
>>     should be in the next linkset and rezzes a linkset from its inventory
>>     with that number of prims.
>>     2. When the linkset rezzes, the root prim tells the rezzer that it is
>>     alive and the rezzer sends it the UUID and line number of a
>>     notecard to
>>     read via chat.  At this point, the rezzer goes back to Step 1.
>>     3. The root prim then sends a link message to its children telling
>>     them
>>     the UUID and a line number to read.
>>     4.  Each prim in the linkset then reads their data independently from
>>     the notecard and then performs llSetPrimitiveParams to transform
>>     themselves into the shape determined by the notecard data.
>>
>>     It's actually a lot more complicated than that, but you get the idea.
>>     So, lots of prims are being rezzed very quickly via LSL and each prim
>>     has a script in it that reads notecard data and sets params.
>>
>>     In 0.6.5, this process runs very smoothly--prims and scripts are
>>     created
>>     and execute quickly.  In 0.6.6 and above, something is happening that
>>     drastically slows this process down.  Either the prims are rezzing
>>     slower, or the scripts are starting slower or the scripts are
>>     executing
>>     slower.
>>
>>     In any event, the difference is extreme.  It is bad in 0.6.6 and seems
>>     to be even worse in 0.6.7.
>>
>>     Does anyone have any ideas or suggestions?  Is this a bug?  Is it an
>>     inevitable fact of life?  Can it be improved?  What can I do to help
>>     with the process?
>>
>>     I'm more than happy to create a video showing the difference.  The LSL
>>     scripts are open source.  I can also set you up with some test
>>     data and
>>     a copy of my maxport utility if anyone wants to try to reproduce
>>     it.  It
>>     is very easy to do.
>>
>>     Thanks in advance!  --Shack
>>     _______________________________________________
>>     Opensim-dev mailing list
>>     Opensim-dev at lists.berlios.de <mailto:Opensim-dev at lists.berlios.de>
>>     https://lists.berlios.de/mailman/listinfo/opensim-dev
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Opensim-dev mailing list
>> Opensim-dev at lists.berlios.de
>> https://lists.berlios.de/mailman/listinfo/opensim-dev
>>   
>>     
>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
>
>   




More information about the Opensim-dev mailing list