aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/Scene.cs
diff options
context:
space:
mode:
authorAdam Frisby2009-11-01 19:37:40 +1100
committerAdam Frisby2009-11-01 19:37:40 +1100
commit711dde34e4e5da954a58393e1a177e8c6969b8b5 (patch)
treea1411439bd3a5a897626d640dfd540bae26c9545 /OpenSim/Region/Framework/Scenes/Scene.cs
parentPatch + minor formatting fixes. (diff)
downloadopensim-SC-711dde34e4e5da954a58393e1a177e8c6969b8b5.zip
opensim-SC-711dde34e4e5da954a58393e1a177e8c6969b8b5.tar.gz
opensim-SC-711dde34e4e5da954a58393e1a177e8c6969b8b5.tar.bz2
opensim-SC-711dde34e4e5da954a58393e1a177e8c6969b8b5.tar.xz
* Implements new 'Monitoring' system for reporting performance.
* Mostly the same set as the StatsMonitor used for Viewer notification, but exposes some new frametimes - including EventMS, PhysicsUpdateMS, LandUpdateMS; new memory monitoring - both GC.TotalMemory and Process.PrivateWorkingMemory64; also exposes ThreadCount (using System.Diagnostics.Process) * Type 'monitor report' on the console to see output. * SNMP Implementation forthcoming.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs59
1 files changed, 51 insertions, 8 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 78ccb55..07fdc9f 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -274,6 +274,21 @@ namespace OpenSim.Region.Framework.Scenes
274 private int physicsMS2; 274 private int physicsMS2;
275 private int physicsMS; 275 private int physicsMS;
276 private int otherMS; 276 private int otherMS;
277 private int tempOnRezMS;
278 private int eventMS;
279 private int backupMS;
280 private int terrainMS;
281 private int landMS;
282
283 public int MonitorFrameTime { get { return frameMS; } }
284 public int MonitorPhysicsUpdateTime { get { return physicsMS; } }
285 public int MonitorPhysicsSyncTime { get { return physicsMS2; } }
286 public int MonitorOtherTime { get { return otherMS; } }
287 public int MonitorTempOnRezTime { get { return tempOnRezMS; } }
288 public int MonitorEventTime { get { return eventMS; } } // This may need to be divided into each event?
289 public int MonitorBackupTime { get { return backupMS; } }
290 public int MonitorTerrainTime { get { return terrainMS; } }
291 public int MonitorLandTime { get { return landMS; } }
277 292
278 private bool m_physics_enabled = true; 293 private bool m_physics_enabled = true;
279 private bool m_scripts_enabled = true; 294 private bool m_scripts_enabled = true;
@@ -1026,7 +1041,8 @@ namespace OpenSim.Region.Framework.Scenes
1026 TimeSpan SinceLastFrame = DateTime.UtcNow - m_lastupdate; 1041 TimeSpan SinceLastFrame = DateTime.UtcNow - m_lastupdate;
1027 physicsFPS = 0f; 1042 physicsFPS = 0f;
1028 1043
1029 maintc = maintc = frameMS = otherMS = Environment.TickCount; 1044 maintc = maintc = otherMS = Environment.TickCount;
1045 int tmpFrameMS = maintc;
1030 1046
1031 // Increment the frame counter 1047 // Increment the frame counter
1032 ++m_frame; 1048 ++m_frame;
@@ -1046,15 +1062,16 @@ namespace OpenSim.Region.Framework.Scenes
1046 if (m_frame % m_update_presences == 0) 1062 if (m_frame % m_update_presences == 0)
1047 m_sceneGraph.UpdatePresences(); 1063 m_sceneGraph.UpdatePresences();
1048 1064
1049 physicsMS2 = Environment.TickCount; 1065 int TempPhysicsMS2 = Environment.TickCount;
1050 if ((m_frame % m_update_physics == 0) && m_physics_enabled) 1066 if ((m_frame % m_update_physics == 0) && m_physics_enabled)
1051 m_sceneGraph.UpdatePreparePhysics(); 1067 m_sceneGraph.UpdatePreparePhysics();
1052 physicsMS2 = Environment.TickCount - physicsMS2; 1068 TempPhysicsMS2 = Environment.TickCount - TempPhysicsMS2;
1069 physicsMS2 = TempPhysicsMS2;
1053 1070
1054 if (m_frame % m_update_entitymovement == 0) 1071 if (m_frame % m_update_entitymovement == 0)
1055 m_sceneGraph.UpdateScenePresenceMovement(); 1072 m_sceneGraph.UpdateScenePresenceMovement();
1056 1073
1057 physicsMS = Environment.TickCount; 1074 int TempPhysicsMS = Environment.TickCount;
1058 if (m_frame % m_update_physics == 0) 1075 if (m_frame % m_update_physics == 0)
1059 { 1076 {
1060 if (m_physics_enabled) 1077 if (m_physics_enabled)
@@ -1062,30 +1079,56 @@ namespace OpenSim.Region.Framework.Scenes
1062 if (SynchronizeScene != null) 1079 if (SynchronizeScene != null)
1063 SynchronizeScene(this); 1080 SynchronizeScene(this);
1064 } 1081 }
1065 physicsMS = Environment.TickCount - physicsMS; 1082 TempPhysicsMS = Environment.TickCount - TempPhysicsMS;
1066 physicsMS += physicsMS2; 1083 physicsMS = TempPhysicsMS;
1067 1084
1068 // Delete temp-on-rez stuff 1085 // Delete temp-on-rez stuff
1069 if (m_frame % m_update_backup == 0) 1086 if (m_frame % m_update_backup == 0)
1087 {
1088 int tozMS = Environment.TickCount;
1070 CleanTempObjects(); 1089 CleanTempObjects();
1090 tozMS -= Environment.TickCount;
1091 tempOnRezMS = tozMS;
1092 }
1071 1093
1072 if (RegionStatus != RegionStatus.SlaveScene) 1094 if (RegionStatus != RegionStatus.SlaveScene)
1073 { 1095 {
1074 if (m_frame % m_update_events == 0) 1096 if (m_frame % m_update_events == 0)
1097 {
1098 int evMS = Environment.TickCount;
1075 UpdateEvents(); 1099 UpdateEvents();
1100 evMS -= Environment.TickCount;
1101 eventMS = evMS;
1102 }
1076 1103
1077 if (m_frame % m_update_backup == 0) 1104 if (m_frame % m_update_backup == 0)
1105 {
1106 int backMS = Environment.TickCount;
1078 UpdateStorageBackup(); 1107 UpdateStorageBackup();
1108 backMS -= Environment.TickCount;
1109 backupMS = backMS;
1110 }
1079 1111
1080 if (m_frame % m_update_terrain == 0) 1112 if (m_frame % m_update_terrain == 0)
1113 {
1114 int terMS = Environment.TickCount;
1081 UpdateTerrain(); 1115 UpdateTerrain();
1116 terMS -= Environment.TickCount;
1117 terrainMS = terMS;
1118 }
1082 1119
1083 if (m_frame % m_update_land == 0) 1120 if (m_frame % m_update_land == 0)
1121 {
1122 int ldMS = Environment.TickCount;
1084 UpdateLand(); 1123 UpdateLand();
1124 ldMS -= Environment.TickCount;
1125 landMS = ldMS;
1126 }
1085 1127
1086 int tickCount = Environment.TickCount; 1128 int tickCount = Environment.TickCount;
1087 otherMS = tickCount - otherMS; 1129 otherMS = tickCount - otherMS;
1088 frameMS = tickCount - frameMS; 1130 tmpFrameMS -= tickCount;
1131 frameMS = tmpFrameMS;
1089 1132
1090 // if (m_frame%m_update_avatars == 0) 1133 // if (m_frame%m_update_avatars == 0)
1091 // UpdateInWorldTime(); 1134 // UpdateInWorldTime();
@@ -1097,7 +1140,7 @@ namespace OpenSim.Region.Framework.Scenes
1097 StatsReporter.SetObjects(m_sceneGraph.GetTotalObjectsCount()); 1140 StatsReporter.SetObjects(m_sceneGraph.GetTotalObjectsCount());
1098 StatsReporter.SetActiveObjects(m_sceneGraph.GetActiveObjectsCount()); 1141 StatsReporter.SetActiveObjects(m_sceneGraph.GetActiveObjectsCount());
1099 StatsReporter.addFrameMS(frameMS); 1142 StatsReporter.addFrameMS(frameMS);
1100 StatsReporter.addPhysicsMS(physicsMS); 1143 StatsReporter.addPhysicsMS(physicsMS + physicsMS2);
1101 StatsReporter.addOtherMS(otherMS); 1144 StatsReporter.addOtherMS(otherMS);
1102 StatsReporter.SetActiveScripts(m_sceneGraph.GetActiveScriptsCount()); 1145 StatsReporter.SetActiveScripts(m_sceneGraph.GetActiveScriptsCount());
1103 StatsReporter.addScriptLines(m_sceneGraph.GetScriptLPS()); 1146 StatsReporter.addScriptLines(m_sceneGraph.GetScriptLPS());