[sldev] Script/Parcel/Memory Limits
Imaze Rhiano
imaze.rhiano at gmail.com
Tue Dec 15 23:20:39 PST 2009
Stickman kirjoitti:
> I don't know what the official name is, but it's either Parcel
> Limits, Script Limits, or Memory Limits.
>
> It's been a while since I've heard any official word about it. Last I
> did hear, LL was gathering statistics and didn't know exactly how
> they were going to implement it, let alone what the limits would be.
>
> Has LL made any decisions, and would they be willing to share them?
> More minds on the issue can spot any holes or problems that could
> arise, and there's still some rumbling panic among the masses that
> can't be confirmed or quelled since we don't know how it'll work.
>
> Many thanks,
>
> Stickman _______________________________________________ Policies and
> (un)subscribe information available here:
> http://wiki.secondlife.com/wiki/SLDev Please read the policies before
> posting to keep unmoderated posting privileges
>
Babbie's office hours and logs are best source of REAL information
currently. I am just writing good fictional
story here for you.
http://wiki.secondlife.com/wiki/User:Babbage_Linden
Tonight's office hour is last for this year - Babbie is going to have
holiday :(
Current status:
- Functionality that allows monitor memory usage is ready in server.
- Currently what is missing is UI for client side.Should be done early
2010 - thought most skeptics in audience
agrees that this is really going to happen 2011 - just before world
ends in year 2012.
- Parcel and avatar memory are going to be completely separated. If your
avatar don't have enough memory
for attachment that you are trying to rezz, then you will get error
message and rezzing will fail - even if parcel
have zillion bytes memory available. There is an exception here - in
sandbox sims you can still rezz any object. (OH
audience suggested that sandboxes would be renamed to "crashboxes" -
Babbie didn't make any promises)
- You can show your OWN attachment memory usage, how much different
attachments are using memory and
probably other statistics. This means that you can't look your
girlfriend attachments and see is she really using
that XCite thingie that you bought for her - or is she cheating you
and actually using that other manufacturer's thingie
what was bought by her secret lover that you are not supposed to know.
- You can show your OWN PARCEL memory usage, how much different objects
are using memory, other statistics
and there is also going to be tools that help you to locate those
scripts. You can't show avatar attachments memory
usage in your parcel.
- You can show your OWN REGION - even if you don't own parcel in there
(estate managers), memory usage,
how much different objects are using memory, other statistics and
there is also going to be tools that help you to locate
those scripts. You can't show avatar attachments memory usage in your
region.
- Parcel memory limitations are calculated from parcel's area. Initially
things like double primitives doesn't effect to memory
limitations. Babbie was hoping that someday region owners could
effect to this - like create heavily scripted regions and
lightly scripted regions.
- There is going to be at least half year warning period where residents
can see their memory usages, but limits are not
yet enforced.
- It is not technically feasible to do system that would separated "old"
content from "new" content created after memory
limit introduction - and would allow "old" content stil run without
limits.
- Mono scripts are going to use memory that they are using - might be
much less than 16Kb - LSL classics scripts are
always using 16Kb.
According Babbie, there is at least one avatar that have 7612 scripts
(using about 96Mb memory). And average user have
100 scripts. Highest script count what I have seen what was about 800
scripts - and it is pretty normal that non-techie
person have 200-400 scripts. This kind awful statistics has been
constant motivation about secondary discussion:
"Why people need so many scripts and what we can do for it so that there
is no need for so many scripts?". This discussion
has lead several improvements that ARE COMING to scripts early 2010 -
... err... someday...
PROBLEM: "There is too many scripts, I have GREAT IDEA! Let's limit
script size to 16/64Kb! That would limit script usage,
RIGHT?!"
- or -
"Marketing person: WE NEED TO RELEASE SL NOW! Skip idea about that
dynamic script memory thingie
whatever, we can't market such things anyway! Instead each script should
have fixed amount of memory - DO IT NOW!"
RESULT: Scripters will split scripts to multiple scripts so that they
can script larger scripts.
CAUSES: Multiple scripts will cause overhead because of communication
mechanism and other thingies to get them work. Multiple
scripts are actually using much more memory than single script would use.
HOW-TO-FIX: Mono scripts are going to get function that allows them to
allocate more memory for them self.
PROBLEM: "Whining customer: OMG COPYBOT! You can't allow scripts to get
primitives parameters that would make copying
them too easy! LL: Don't worry, we allow scripts only get parameters
same primitives where they reside. Bear hug?"
RESULT: Scripters will copy their scripts to every primitive in object
(for example hair resizers).
CAUSES: Have you ever heard 255 primitive hair with 255 script resizer?
I have .. I have several of those.
HOW-TO-FIX: llGetLinkedPrimitiveParams
PROBLEM: "Our servers can't handle load made by these functions if they
are called repeately in loop and they also allow
griefers to grief hundreds person in second. We need to add artificial
delays to these functions."
RESULT: Scripters will split scripts to multiple scripts so they can
avoid delays and run scripts parallel.
CAUSES: Multiple scripts....Like hair resizers.
HOW-TO-FIX: llSetLinkedPrimitiveParamsNoDelay, maybe also other
xxxNoDelay functions and different throttling method
for server that allows it to control load.
PROBLEM: "0MG! 1 can writ3 script! I am l33t n0w!"
RESULT: Badly scripted things like chickens. I hate chickens. Unless
they come with some good wine.
CAUSES: Lag
HOW-TO-FIX: C# and other languages are coming, LL have already working
prototype. Should be easier for creators identify
good from bad scripter.... Or maybe not...
PROBLEM: "OMG! I have great idea about HUD! We will built radar thingie
and then will add hug thingie to it! Great? GUYS?!"
RESULT: Hundreds scripts are running in server that could be running
client side only.
CAUSES: Lag
HOW-TO-FIX: Emerald viewer, client side radar, client side animations,
client side scripting... someday
Babbie would really want to hear more reasons why people are using
hundreds scripts. So if you have more reasons - please send them for
Babbie. So that his team can form strategy to overcome reasons behind it.
Anyway... you can stop whining now. Script limits are coming. There are
no other options. Maybe even before world ends. You should start
thinking about those limits NOW! At least what you can do is to make
your hairs and other objects copyable and allow customers to remove
scripts from them when they don't scripts anymore. You don't need to
make your object modifiable - you just need to add option to your
scripts that removes scripts from primitives by calling
"llRemoveInventory(llGetScriptName());". Some resizers have already this
option.
Just don't be moron and disable this option because you think that your
customers are too stupid.
... everything around this really leads to one real question: "If a
tree falls in the forest and no one is around to hear it does it make a
sound?"
Or why there is script running when no one is around to see results? But
that is architectural question that mortals can't comprehend.
More information about the SLDev
mailing list