• All submissions to this site are governed by Second Life Project Contribution Agreement. By submitting patches and other information using this site, you acknowledge that you have read, understood, and agreed to those terms.
Issue Details (XML | Word | Printable)

Key: SVC-2750
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Critical Critical
Assignee: Babbage Linden
Reporter: Haravikk Mistral
Votes: 4
Watchers: 4
Operations

If you were logged in you would be able to see more operations.
2. Second Life Service - SVC

State changes are several times slower on MONO servers

Created: 05/Aug/08 07:09 AM   Updated: 22/Jan/09 10:41 PM
Return to search
Component/s: Scripts
Affects Version/s: Mono Beta
Fix Version/s: None

Environment:
Second Life 1.20.15 (93532) Aug 1 2008 15:51:40 (Second Life Release)

You are at 255776.0, 255317.8, 21.5 in Sandbox Cordova MONO located at sim18.aditi.lindenlab.com (8.4.131.211:13000)
Second Life Beta Server 1.24.4.93464

CPU: 8 x i386 (Unknown) (3200 MHz)
Memory: 10240 MB
OS Version: Darwin 9.4.0 Darwin Kernel Version 9.4.0: Mon Jun 9 19:30:53 PDT 2008; root:xnu-1228.5.20~1/RELEASE_I386 i386
Graphics Card Vendor: NVIDIA Corporation
Graphics Card: NVIDIA GeForce 8800 GT OpenGL Engine
OpenGL Version: 2.0 NVIDIA-1.5.28
LLMozLib Version: [LLMediaImplLLMozLib] - 2.01.17128 (Mozilla GRE version 1.8.1.13_0000000000)
Packets Lost: 29/29961 (0.1%)
Issue Links:
Relates
 

Linden Lab Issue ID: DEV-18976


 Description  « Hide
I've recently tested a script-performance benchmarking tool I made on the Mono grid, and have found that while performance of many operations are MUCH faster when compared to LSL2, that there is a major weakness in the Mono server.

Below is a simple script that shows the portion of my benchmarking tool used to test state-transitions. On a typical class 5 mainland sim on the main (non-preview) grid, state-changes are executed at approximately 0.0002 seconds per transition. The transitions perform even faster on empty, non-MONO simulators on the preview-grid as well.
However, in MONO regions on the preview grid, state-changes are taking closer to 0.02 seconds to complete, which is around 100 times slower or worse!

Simply throw the following script into an object on a MONO enabled region, and a non-MONO enabled region for comparison. For the sake of argument run both as LSL2 scripts. There is no noticeable difference in speed between running the following script as LSL2 or Mono, both are equally slow on a MONO region.

Here are some preview grid sample times:

Abotts (non-Mono empty): 0.001760
Fortuna (Havok 1, empty): 0.002444
Fame (Havok 1, slow simulator): 0.002451
Ahern (slow simulator): 0.004138
Sandbox Wanderton (Mono, empty): 0.023679
Sandbox Coguen (Mono, non-empty): 0.023686
Sandbox Cordova (Mono, empty): 0.023744

-------------------------------------------------------------
integer counter = 0;

default {
state_entry() { llResetTime(); state state1; }
}

state state1 {
state_entry() { state state2; }
}

state state2 {
state_entry() {
if ((++counter) >= 100) { float time = llGetTime() / 200.0; llOwnerSay((string)time + " seconds/state-change"); } else state state1;
}
}



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Haravikk Mistral made changes - 05/Aug/08 07:26 AM
Field Original Value New Value
Description I've recently tested a script-performance benchmarking tool I made on the Mono grid, and have found that while performance of many operations are MUCH faster when compared to LSL2, that there is a major weakness in the Mono server.

Below is a simple script that shows the portion of my benchmarking tool used to test state-transitions. On a typical class 5 mainland sim on the main (non-preview) grid, state-changes are executed at approximately 0.0002 seconds per transition. The transitions perform even faster on empty, non-MONO simulators on the preview-grid as well.
However, in MONO regions on the preview grid, state-changes are taking closer to 0.02 seconds to complete, which is around 100 times slower or worse!

Simply throw the following script into an object on a MONO enabled region, and a non-MONO enabled region for comparison. For the sake of argument run both as LSL2 scripts. There is no noticeable difference in speed between running the following script as LSL2 or Mono, both are equally slow on a MONO region.

-------------------------------------------------------------
integer counter = 0;

default {
    state_entry() {
        llResetTime();
        state state1;
    }
}

state state1 {
    state_entry() {
        state state2;
    }
}

state state2 {
    state_entry() {
        if ((++counter) >= 100) {
            float time = llGetTime() / 200.0;
            llOwnerSay((string)time + " seconds/state-change");
        }
    }
}
I've recently tested a script-performance benchmarking tool I made on the Mono grid, and have found that while performance of many operations are MUCH faster when compared to LSL2, that there is a major weakness in the Mono server.

Below is a simple script that shows the portion of my benchmarking tool used to test state-transitions. On a typical class 5 mainland sim on the main (non-preview) grid, state-changes are executed at approximately 0.0002 seconds per transition. The transitions perform even faster on empty, non-MONO simulators on the preview-grid as well.
However, in MONO regions on the preview grid, state-changes are taking closer to 0.02 seconds to complete, which is around 100 times slower or worse!

Simply throw the following script into an object on a MONO enabled region, and a non-MONO enabled region for comparison. For the sake of argument run both as LSL2 scripts. There is no noticeable difference in speed between running the following script as LSL2 or Mono, both are equally slow on a MONO region.

-------------------------------------------------------------
integer counter = 0;

default {
    state_entry() {
        llResetTime();
        state state1;
    }
}

state state1 {
    state_entry() {
        state state2;
    }
}

state state2 {
    state_entry() {
        if ((++counter) >= 100) {
            float time = llGetTime() / 200.0;
            llOwnerSay((string)time + " seconds/state-change");
        } else state1;
    }
}
Haravikk Mistral made changes - 05/Aug/08 07:27 AM
Description I've recently tested a script-performance benchmarking tool I made on the Mono grid, and have found that while performance of many operations are MUCH faster when compared to LSL2, that there is a major weakness in the Mono server.

Below is a simple script that shows the portion of my benchmarking tool used to test state-transitions. On a typical class 5 mainland sim on the main (non-preview) grid, state-changes are executed at approximately 0.0002 seconds per transition. The transitions perform even faster on empty, non-MONO simulators on the preview-grid as well.
However, in MONO regions on the preview grid, state-changes are taking closer to 0.02 seconds to complete, which is around 100 times slower or worse!

Simply throw the following script into an object on a MONO enabled region, and a non-MONO enabled region for comparison. For the sake of argument run both as LSL2 scripts. There is no noticeable difference in speed between running the following script as LSL2 or Mono, both are equally slow on a MONO region.

-------------------------------------------------------------
integer counter = 0;

default {
    state_entry() {
        llResetTime();
        state state1;
    }
}

state state1 {
    state_entry() {
        state state2;
    }
}

state state2 {
    state_entry() {
        if ((++counter) >= 100) {
            float time = llGetTime() / 200.0;
            llOwnerSay((string)time + " seconds/state-change");
        } else state1;
    }
}
I've recently tested a script-performance benchmarking tool I made on the Mono grid, and have found that while performance of many operations are MUCH faster when compared to LSL2, that there is a major weakness in the Mono server.

Below is a simple script that shows the portion of my benchmarking tool used to test state-transitions. On a typical class 5 mainland sim on the main (non-preview) grid, state-changes are executed at approximately 0.0002 seconds per transition. The transitions perform even faster on empty, non-MONO simulators on the preview-grid as well.
However, in MONO regions on the preview grid, state-changes are taking closer to 0.02 seconds to complete, which is around 100 times slower or worse!

Simply throw the following script into an object on a MONO enabled region, and a non-MONO enabled region for comparison. For the sake of argument run both as LSL2 scripts. There is no noticeable difference in speed between running the following script as LSL2 or Mono, both are equally slow on a MONO region.

-------------------------------------------------------------
integer counter = 0;

default {
    state_entry() {
        llResetTime();
        state state1;
    }
}

state state1 {
    state_entry() {
        state state2;
    }
}

state state2 {
    state_entry() {
        if ((++counter) >= 100) {
            float time = llGetTime() / 200.0;
            llOwnerSay((string)time + " seconds/state-change");
        } else state state1;
    }
}
Haravikk Mistral made changes - 05/Aug/08 07:35 AM
Summary State changes are hundreds of times slower on MONO servers State changes are several times slower on MONO servers
Description I've recently tested a script-performance benchmarking tool I made on the Mono grid, and have found that while performance of many operations are MUCH faster when compared to LSL2, that there is a major weakness in the Mono server.

Below is a simple script that shows the portion of my benchmarking tool used to test state-transitions. On a typical class 5 mainland sim on the main (non-preview) grid, state-changes are executed at approximately 0.0002 seconds per transition. The transitions perform even faster on empty, non-MONO simulators on the preview-grid as well.
However, in MONO regions on the preview grid, state-changes are taking closer to 0.02 seconds to complete, which is around 100 times slower or worse!

Simply throw the following script into an object on a MONO enabled region, and a non-MONO enabled region for comparison. For the sake of argument run both as LSL2 scripts. There is no noticeable difference in speed between running the following script as LSL2 or Mono, both are equally slow on a MONO region.

-------------------------------------------------------------
integer counter = 0;

default {
    state_entry() {
        llResetTime();
        state state1;
    }
}

state state1 {
    state_entry() {
        state state2;
    }
}

state state2 {
    state_entry() {
        if ((++counter) >= 100) {
            float time = llGetTime() / 200.0;
            llOwnerSay((string)time + " seconds/state-change");
        } else state state1;
    }
}
I've recently tested a script-performance benchmarking tool I made on the Mono grid, and have found that while performance of many operations are MUCH faster when compared to LSL2, that there is a major weakness in the Mono server.

Below is a simple script that shows the portion of my benchmarking tool used to test state-transitions. On a typical class 5 mainland sim on the main (non-preview) grid, state-changes are executed at approximately 0.0002 seconds per transition. The transitions perform even faster on empty, non-MONO simulators on the preview-grid as well.
However, in MONO regions on the preview grid, state-changes are taking closer to 0.02 seconds to complete, which is around 100 times slower or worse!

Simply throw the following script into an object on a MONO enabled region, and a non-MONO enabled region for comparison. For the sake of argument run both as LSL2 scripts. There is no noticeable difference in speed between running the following script as LSL2 or Mono, both are equally slow on a MONO region.

Here are some preview grid sample times:

Abotts (non-Mono empty): 0.001760
Fortuna (Havok 1, empty): 0.002444
Fame (Havok 1, slow simulator): 0.002451
Ahern (slow simulator): 0.004138
Sandbox Wanderton (Mono, empty): 0.023679
Sandbox Coguen (Mono, non-empty): 0.023686
Sandbox Cordova (Mono, empty): 0.023744

-------------------------------------------------------------
integer counter = 0;

default {
    state_entry() {
        llResetTime();
        state state1;
    }
}

state state1 {
    state_entry() {
        state state2;
    }
}

state state2 {
    state_entry() {
        if ((++counter) >= 100) {
            float time = llGetTime() / 200.0;
            llOwnerSay((string)time + " seconds/state-change");
        } else state state1;
    }
}
Gellan Glenelg made changes - 05/Aug/08 09:26 AM
Link This issue Relates to SVC-1276 [ SVC-1276 ]
Haravikk Mistral made changes - 05/Aug/08 10:26 AM
Link This issue is related to by SVC-1276 [ SVC-1276 ]
lindenrobot made changes - 06/Aug/08 05:27 PM
Linden Lab Issue ID DEV-18976
Periapse Linden made changes - 08/Aug/08 08:54 AM
Link This issue is related to by SVC-1276 [ SVC-1276 ]
Babbage Linden made changes - 29/Aug/08 06:49 AM
Assignee Babbage Linden [ Babbage Linden ]
Babbage Linden made changes - 29/Aug/08 06:49 AM
Status Open [ 1 ] Fix Pending [ 10001 ]
RobbyRacoon Olmstead made changes - 31/Aug/08 12:26 PM
Link This issue is related to by SVC-2958 [ SVC-2958 ]
Periapse Linden made changes - 02/Sep/08 10:35 AM
Link This issue is related to by SVC-1276 [ SVC-1276 ]
Periapse Linden made changes - 02/Sep/08 10:38 AM
Link This issue Relates to SVC-1276 [ SVC-1276 ]
Periapse Linden made changes - 14/Oct/08 09:39 AM
Status Fix Pending [ 10001 ] Resolved [ 5 ]
Resolution Fixed [ 1 ]
Sue Linden made changes - 13/Nov/08 12:10 PM
Workflow jira-2007-12-22a [ 57994 ] jira-2008-11-14 [ 82568 ]
Sue Linden made changes - 13/Nov/08 04:46 PM
Workflow jira-2008-11-14 [ 82568 ] jira-2008-11-14a [ 92057 ]
Gellan Glenelg made changes - 18/Jan/09 09:57 AM
Link This issue is related to by SVC-3691 [ SVC-3691 ]
Harleen Gretzky made changes - 22/Jan/09 10:41 PM
Link This issue is related to by SVC-3707 [ SVC-3707 ]