Resource Impact Calculator

From Second Life Wiki
Jump to navigation Jump to search

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."); 
    
    }
}