Monitoring Module
From OpenSimulator
Contents |
Introduction
This facility provides a way to retrieve data per region.
Enabling
In OpenSimulator 0.7.2 it is always active. In current development code it is active by default but can be disabled by setting
[Monitoring] Enabled = false
Retrieving data
OpenSimulator 0.7.2 and earlier
In OpenSimulator 0.7.2 and earlier, each region will register a URL on the built-in OpenSimulator HTTP server with the format
/monitorstats/<region-uuid>
If you type
show http-handlers
on the region console you'll see something like this in the HTTP section
/monitorstats/dd5b77f8-bf88-45ac-aace-35bd76426c81 /SStats/ /CAPS/VS/ regionImagedd5b77f8bf8845acaace35bd76426c81 /monitorstats/dd5b77f8-bf88-45ac-aace-35bd76426c82 regionImagedd5b77f8bf8845acaace35bd76426c82
where the UUID following monitorstats corresponds to the region ID.
OpenSimulator development code
In OpenSimulator development code, the region data can also be accessed via region name. Therefore, typing
show http-handlers
will return something like
/monitorstats/dd5b77f8-bf88-45ac-aace-35bd76426c81 /monitorstats/test /SStats/ /CAPS/VS/ regionImagedd5b77f8bf8845acaace35bd76426c81 /monitorstats/dd5b77f8-bf88-45ac-aace-35bd76426c82 /monitorstats/test2 regionImagedd5b77f8bf8845acaace35bd76426c82
where the data can also be retrieved via region name (test and test2).
Retrieved data
General
Stat name | Descriptoin |
---|---|
AgentCountMonitor | Number of avatars in the region. |
ChildAgentCountMonitor | Number of child agents in the region. These are used by viewers with avatars in neighbouring regions in order to see into and effect the neighbouring region. |
GCMemoryMonitor | Amount of memory currently allocated to the virtual machine garbage collector. |
ObjectCountMonitor | Number of prims in the region. |
PWSMemoryMonitor | Virtual Machine Private Working Set memory |
ThreadCountMonitor | Number of threads used by the current process. May be unimplemented (hence always zero) on Mono. |
TotalFrameMonitor | Time taken in milliseconds for the last frame. In OpenSimulator 0.7.3.1 and before this did not include the spare frame time. In later versions of OpenSimulator this does include the spare frame time. |
EventFrameMonitor | Event processing time in milliseconds for the last frame. |
LandFrameMonitor | Land related processing time in milliseconds for the last frame. |
LastFrameTimeMonitor | The number of milliseconds since the last region frame was completed. |
TimeDilationMonitor | Time dilation of physics processing compared to main scene processing. |
SimFPSMonitor | Frames per second processed by the scene. |
AgentUpdatesPerSecondMonitor | Updates sent to viewers per second. |
ActiveObjectCountMonitor | Objects subject to physics. |
ActiveScriptsMonitor | Scripts running in the region |
ScriptEventsPerSecondMonitor | Script events processed per second. |
InPacketsPerSecondMonitor | UDP packets from viewers processed per second. |
OutPacketsPerSecondMonitor | UDP packets sent to viewers per second |
UnackedBytesMonitor | Bytes that haven't yet been acked by viewers. A persistent high number indicates poor network connections between the viewers and the simulator. |
PendingDownloadsMonitor | Downloads pending from simulator to viewers. Not currently implemented, will always be zero. |
PendingUploadsMonitor | Pending uploads from viewers to simulator. Not currently implemented, will always be zero. |
TotalFrameTimeMonitor | Average time taken in milliseconds for frames in the last 3 seconds. In OpenSimulator 0.7.3.1 and before this did not include the spare frame time and wrongly referred to the total amount of a second that constituted non-spare frame time. In later versions of OpenSimulator this correctly refers to the frame time and includes the spare frame time. |
NetFrameTimeMonitor | Average time taken in milliseconds for network activities in frames in the last 3 seconds. Not currently used. |
SimulationFrameTimeMonitor | Average time taken in milliseconds for frame-related simulation activity in the last 3 seconds. In OpenSimulator 0.7.3.1 and before this wrongly referred to the total amount of a second that constituted simulation time. |
AgentFrameTimeMonitor | Average time taken in milliseconds for agent-related activity in the last 3 seconds. In OpenSimulator 0.7.3.1 and before this wrongly referred to the total amount of a second that constituted agent time. |
ImagesFrameTimeMonitor | Not used by OpenSimulator |
LastReportedObjectUpdates | Currently unused. |
Physics
All per frame times here relate to an average taken over the last 3 second period.
The following stats are always present.
PhysicsFPSMonitor | Frames per second processed by physics code. |
PhysicsFrameMonitor | Obsolete. Same as PhysicsFrameTimeMonitor |
PhysicsFrameTimeMonitor | Average time taken by physics processing. |
The following stats are only present if collect_stats = true in the [ODEPhysicsSettings] section of OpenSim.ini. These statistics are experimental and may change.
ODETotalFrameMS | ODE physics processing. This should match PhysicsFrameTimeMonitor. |
ODEAvatarTaintFrameMS | Avatar taint processing. |
ODEPrimTaintFrameMS | Prim taint processing. |
ODEAvatarForcesFrameMS | Avatar forces calculations. |
ODEPrimForcesFrameMS | Prim forces calculations. |
ODERaycastingFrameMS | Raycasting. |
ODENativeStepFrameMS | Time taken to perform a physics step by ODE native code. |
ODENativeSpaceCollisionFrameMS | Calculation of possible collisions via spaces in ODE native code. |
ODENativeGeomCollisionFrameMS | Resolution of actual collisions between geometries in ODE native code. |
ODEOtherCollisionFrameMS | Processing of collisions not covered by the other 'Native' measures. This mainly covers operations done in the OpenSimulator's plugin itself, though some calls to native ODE functions are still made. |
ODECollisionNotificationFrameMS | Notification of other parts of OpenSimulator of collisions that is performed outside of the ODE plugin. |
ODEAvatarUpdateFrameMS | Time taken to process avatar updates from the physics code. |
ODEPrimUpdateFrameMS | Time taken to process prim updates from the physics code. |
ODEAvatarContacts | Number of avatar caused collision contacts in the last 3 second period. There can be more than one contact per collision. |
ODEPrimContacts | Number of prim caused collision contacts in the last 3 second period. There can be more than one contact per collision. |
ODETotalAvatars | Number of avatars modelled by physics. This should match AgentCountMonitor. |
ODETotalPrims | Number of non-phantom prims. This covers both physics prims and prims which are not subject to physics but are still collidable. It does not cover phantom prims as these have no representation in the physics scene. |
ODEActivePrims | Number of prims subject to physics. This should match ActiveObjectCountMonitor. |
Examples
OpenSimulator 0.7.2 and earlier
On OpenSimulator 0.7.2 and earlier, fetching
http://192.168.1.2:9000/dd5b77f8-bf88-45ac-aace-35bd76426c81
will return something like
<?xml version="1.0"?> <data> <AgentCountMonitor>0</AgentCountMonitor> <ChildAgentCountMonitor>0</ChildAgentCountMonitor> <GCMemoryMonitor>32358400</GCMemoryMonitor> <ObjectCountMonitor>0</ObjectCountMonitor> <PhysicsFrameMonitor>0</PhysicsFrameMonitor> <PhysicsUpdateFrameMonitor>0</PhysicsUpdateFrameMonitor> <PWSMemoryMonitor>354172928</PWSMemoryMonitor> <ThreadCountMonitor>0</ThreadCountMonitor> <TotalFrameMonitor>1</TotalFrameMonitor> <EventFrameMonitor>0</EventFrameMonitor> <LandFrameMonitor>0</LandFrameMonitor> <LastFrameTimeMonitor>87</LastFrameTimeMonitor> </data>
OpenSimulator 0.7.3 and later
In current development code, more statistics have been added, so instead you'll see something like
<?xml version="1.0"?> <data> <AgentCountMonitor>0</AgentCountMonitor> <ChildAgentCountMonitor>0</ChildAgentCountMonitor> <GCMemoryMonitor>32358400</GCMemoryMonitor> <ObjectCountMonitor>0</ObjectCountMonitor> <PhysicsFrameMonitor>0</PhysicsFrameMonitor> <PhysicsUpdateFrameMonitor>0</PhysicsUpdateFrameMonitor> <PWSMemoryMonitor>354172928</PWSMemoryMonitor> <ThreadCountMonitor>0</ThreadCountMonitor> <TotalFrameMonitor>1</TotalFrameMonitor> <EventFrameMonitor>0</EventFrameMonitor> <LandFrameMonitor>0</LandFrameMonitor> <LastFrameTimeMonitor>87</LastFrameTimeMonitor> <TimeDilationMonitor>1</TimeDilationMonitor> <SimFPSMonitor>56.6666679382324</SimFPSMonitor> <PhysicsFPSMonitor>46.9475212097168</PhysicsFPSMonitor> <AgentUpdatesPerSecondMonitor>0</AgentUpdatesPerSecondMonitor> <ActiveObjectCountMonitor>0</ActiveObjectCountMonitor> <ActiveScriptsMonitor>0</ActiveScriptsMonitor> <ScriptEventsPerSecondMonitor>0</ScriptEventsPerSecondMonitor> <InPacketsPerSecondMonitor>0</InPacketsPerSecondMonitor> <OutPacketsPerSecondMonitor>0</OutPacketsPerSecondMonitor> <UnackedBytesMonitor>0</UnackedBytesMonitor> <PendingDownloadsMonitor>0</PendingDownloadsMonitor> <PendingUploadsMonitor>0</PendingUploadsMonitor> <TotalFrameTimeMonitor>0</TotalFrameTimeMonitor> <NetFrameTimeMonitor>0</NetFrameTimeMonitor> <PhysicsFrameTimeMonitor>0</PhysicsFrameTimeMonitor> <SimulationFrameTimeMonitor>0</SimulationFrameTimeMonitor> <AgentFrameTimeMonitor>0</AgentFrameTimeMonitor> <ImagesFrameTimeMonitor>0</ImagesFrameTimeMonitor> </data>