Resource Impact Calculator
Revision as of 16:44, 24 January 2015 by ObviousAltIsObvious Resident (talk | contribs) (<lsl> tag to <source>)
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Resource Impact Calculator caused by Avatars
Use to control the lag caused by avatars, maximizing sim's performance.
Takes into account how many avatars are in the sim, for proper load balancing, which means that if the sim is empty, all RAM/CPU is allowed for use for a single avatar, since it wont cause an impact on performance.
/*
Sim resource impact calculator
Call impactCPU(uuid) or/and impactRAM(uuid) to get the percentage of allowed resources the avatar is using.
Data returned is integer type [0-100].
*/
integer maxRAM=209715200; //bytes- 200MB server RAM is usually what simulators use for scripting
float maxload=0.040;//seconds- Maximum allowed latency in miliseconds due scripting load on the simulator, 40-80ms is normal.
integer impactCPU(key id){
return (integer)(llList2Float(llGetObjectDetails(id, [OBJECT_SCRIPT_TIME]), 0)/(maxload/llGetRegionAgentCount())*100);
}
integer impactRAM(key id){
return (integer)(llList2Float(llGetObjectDetails(id, [OBJECT_SCRIPT_MEMORY]), 0)/(maxRAM/llGetRegionAgentCount())*100);
}
default
{
touch_start(integer num_detected) {
key id=llDetectedKey(0);
llInstantMessage(id,"CPU usage: "+(string)(impactCPU(id))+"%");
llInstantMessage(id,"RAM usage: "+(string)(impactRAM(id))+"%");//example of informational message
if(impactRAM(id)>100)llInstantMessage(id,"You've hit the memory usage limit."); //example of warning message
if(impactCPU(id)>100)llInstantMessage(id,"You've hit the CPU usage limit.");
}
}