Difference between revisions of "Resource Impact Calculator"

From Second Life Wiki
Jump to navigation Jump to search
Line 5: Line 5:
<lsl>
<lsl>
/*
/*
  Sim resource impact calculator.
  Sim resource impact calculator  
  Call impactCPU(uuid) or/and impactRAM(uuid) to get the percentage of allowed resources the avatar is using.
  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].
  Data returned is integer type [0-100].
Line 11: Line 11:
integer maxRAM=200000000; // 200MB server RAM is usually what simulators use for scripting
integer maxRAM=200000000; // 200MB server RAM is usually what simulators use for scripting
float maxload=0.040;// Maximum allowed latency in miliseconds due scripting load on the simulator, 40-80ms is normal.
float maxload=0.040;// Maximum allowed latency in miliseconds due scripting load on the simulator, 40-80ms is normal.
integer maxavi=100;// Avatars the simulator can host.


integer impactCPU(key id){
integer impactCPU(key id){
return (integer)(llList2Float(llGetObjectDetails(id, [OBJECT_SCRIPT_TIME]), 0)/(maxload/maxavi*maxavi/llGetRegionAgentCount())*100);
return (integer)(llList2Float(llGetObjectDetails(id, [OBJECT_SCRIPT_TIME]), 0)/(maxload/llGetRegionAgentCount())*100);
}
}
integer impactRAM(key id){
integer impactRAM(key id){
return (integer)(llList2Float(llGetObjectDetails(id, [OBJECT_SCRIPT_MEMORY]), 0)/(maxRAM/maxavi*maxavi/llGetRegionAgentCount())*100);
return (integer)(llList2Float(llGetObjectDetails(id, [OBJECT_SCRIPT_MEMORY]), 0)/(maxRAM/llGetRegionAgentCount())*100);
}
}


Line 23: Line 22:
default
default
{
{
   
   touch_start(integer num_detected) {
   touch_start(integer num_detected) {
     key id=llDetectedKey(0);
     key id=llDetectedKey(0);
Line 29: Line 28:
     llInstantMessage(id,"RAM usage: "+(string)(impactRAM(id))+"%");//example of informational message
     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(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.");  
      if(impactCPU(id)>100)llInstantMessage(id,"You've hit the CPU usage limit.");  
      
      
     }
     }

Revision as of 14:50, 20 August 2012

Resource Impact Calculator caused by Avatars

Use to control the lag caused by avatars, maximizing sim's performance.

<lsl> /*

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=200000000; // 200MB server RAM is usually what simulators use for scripting float maxload=0.040;// 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."); 
   
   }

} </lsl>