aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2011-10-06 00:45:25 +0100
committerJustin Clark-Casey (justincc)2011-10-06 00:45:25 +0100
commitca83f99332316fda1c412a5bf2889f9cf5cf3577 (patch)
treea1789f55d048ef3bc7dd99adf524125cb34f0efd /OpenSim/Region
parentrename WebStatsModules.m_scene to m_scenes since it's a list of scenes, not a... (diff)
downloadopensim-SC-ca83f99332316fda1c412a5bf2889f9cf5cf3577.zip
opensim-SC-ca83f99332316fda1c412a5bf2889f9cf5cf3577.tar.gz
opensim-SC-ca83f99332316fda1c412a5bf2889f9cf5cf3577.tar.bz2
opensim-SC-ca83f99332316fda1c412a5bf2889f9cf5cf3577.tar.xz
Instead of adding stat agentMS in all kinds of places, calculate it instead in the main Scene.Update() loop, like the other stats
Some of the places where agentMS was added were in separate threads launched by the update loop. I don't believe this is correct, since such threads are no longer contributing to frame time. Some of the places were also driven by client input rather than the scene loop. I don't believe it's appropriate to add this kind of stuff to scene loop stats. These changes hopefully have the nice affect of making the broken out frame stats actually add up to the total frame time
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs13
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs6
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs32
-rw-r--r--OpenSim/Region/Framework/Scenes/SimStatsReporter.cs6
4 files changed, 21 insertions, 36 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index e4ebcff..b1755ac 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -183,6 +183,7 @@ namespace OpenSim.Region.Framework.Scenes
183// private int m_update_land = 1; 183// private int m_update_land = 1;
184 private int m_update_coarse_locations = 50; 184 private int m_update_coarse_locations = 50;
185 185
186 private int agentMS;
186 private int frameMS; 187 private int frameMS;
187 private int physicsMS2; 188 private int physicsMS2;
188 private int physicsMS; 189 private int physicsMS;
@@ -1226,12 +1227,15 @@ namespace OpenSim.Region.Framework.Scenes
1226 1227
1227 int maintc = Util.EnvironmentTickCount(); 1228 int maintc = Util.EnvironmentTickCount();
1228 int tmpFrameMS = maintc; 1229 int tmpFrameMS = maintc;
1229 tempOnRezMS = eventMS = backupMS = terrainMS = landMS = 0; 1230 agentMS = tempOnRezMS = eventMS = backupMS = terrainMS = landMS = 0;
1230 1231
1232 // TODO: ADD AGENT TIME HERE
1231 // Increment the frame counter 1233 // Increment the frame counter
1232 ++Frame; 1234 ++Frame;
1233 try 1235 try
1234 { 1236 {
1237 int tmpAgentMS = Util.EnvironmentTickCount();
1238
1235 // Check if any objects have reached their targets 1239 // Check if any objects have reached their targets
1236 CheckAtTargets(); 1240 CheckAtTargets();
1237 1241
@@ -1258,6 +1262,8 @@ namespace OpenSim.Region.Framework.Scenes
1258 }); 1262 });
1259 } 1263 }
1260 1264
1265 agentMS = Util.EnvironmentTickCountSubtract(tmpAgentMS);
1266
1261 int tmpPhysicsMS2 = Util.EnvironmentTickCount(); 1267 int tmpPhysicsMS2 = Util.EnvironmentTickCount();
1262 if ((Frame % m_update_physics == 0) && m_physics_enabled) 1268 if ((Frame % m_update_physics == 0) && m_physics_enabled)
1263 m_sceneGraph.UpdatePreparePhysics(); 1269 m_sceneGraph.UpdatePreparePhysics();
@@ -1265,7 +1271,11 @@ namespace OpenSim.Region.Framework.Scenes
1265 1271
1266 // Apply any pending avatar force input to the avatar's velocity 1272 // Apply any pending avatar force input to the avatar's velocity
1267 if (Frame % m_update_entitymovement == 0) 1273 if (Frame % m_update_entitymovement == 0)
1274 {
1275 tmpAgentMS = Util.EnvironmentTickCount();
1268 m_sceneGraph.UpdateScenePresenceMovement(); 1276 m_sceneGraph.UpdateScenePresenceMovement();
1277 agentMS += Util.EnvironmentTickCountSubtract(tmpAgentMS);
1278 }
1269 1279
1270 // Perform the main physics update. This will do the actual work of moving objects and avatars according to their 1280 // Perform the main physics update. This will do the actual work of moving objects and avatars according to their
1271 // velocity 1281 // velocity
@@ -1330,6 +1340,7 @@ namespace OpenSim.Region.Framework.Scenes
1330 StatsReporter.SetObjects(m_sceneGraph.GetTotalObjectsCount()); 1340 StatsReporter.SetObjects(m_sceneGraph.GetTotalObjectsCount());
1331 StatsReporter.SetActiveObjects(m_sceneGraph.GetActiveObjectsCount()); 1341 StatsReporter.SetActiveObjects(m_sceneGraph.GetActiveObjectsCount());
1332 StatsReporter.addFrameMS(frameMS); 1342 StatsReporter.addFrameMS(frameMS);
1343 StatsReporter.addAgentMS(agentMS);
1333 StatsReporter.addPhysicsMS(physicsMS + physicsMS2); 1344 StatsReporter.addPhysicsMS(physicsMS + physicsMS2);
1334 StatsReporter.addOtherMS(otherMS); 1345 StatsReporter.addOtherMS(otherMS);
1335 StatsReporter.SetActiveScripts(m_sceneGraph.GetActiveScriptsCount()); 1346 StatsReporter.SetActiveScripts(m_sceneGraph.GetActiveScriptsCount());
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 11c2a78..caec704 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -166,6 +166,12 @@ namespace OpenSim.Region.Framework.Scenes
166 } 166 }
167 } 167 }
168 168
169 /// <summary>
170 /// Update the position of all the scene presences.
171 /// </summary>
172 /// <remarks>
173 /// Called only from the main scene loop.
174 /// </remarks>
169 protected internal void UpdatePresences() 175 protected internal void UpdatePresences()
170 { 176 {
171 ForEachScenePresence(delegate(ScenePresence presence) 177 ForEachScenePresence(delegate(ScenePresence presence)
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index b3e04be..f049b78 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -847,11 +847,7 @@ namespace OpenSim.Region.Framework.Scenes
847 /// </summary> 847 /// </summary>
848 public void SendPrimUpdates() 848 public void SendPrimUpdates()
849 { 849 {
850 m_perfMonMS = Util.EnvironmentTickCount();
851
852 m_sceneViewer.SendPrimUpdates(); 850 m_sceneViewer.SendPrimUpdates();
853
854 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS));
855 } 851 }
856 852
857 #region Status Methods 853 #region Status Methods
@@ -1253,7 +1249,7 @@ namespace OpenSim.Region.Framework.Scenes
1253 // return; 1249 // return;
1254 //} 1250 //}
1255 1251
1256 m_perfMonMS = Util.EnvironmentTickCount(); 1252// m_perfMonMS = Util.EnvironmentTickCount();
1257 1253
1258 ++m_movementUpdateCount; 1254 ++m_movementUpdateCount;
1259 if (m_movementUpdateCount < 1) 1255 if (m_movementUpdateCount < 1)
@@ -1545,7 +1541,8 @@ namespace OpenSim.Region.Framework.Scenes
1545 1541
1546 m_scene.EventManager.TriggerOnClientMovement(this); 1542 m_scene.EventManager.TriggerOnClientMovement(this);
1547 1543
1548 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); 1544 // It doesn't make sense to add this to frame stats as this update is processed indepedently of the scene loop
1545// m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS));
1549 } 1546 }
1550 1547
1551 /// <summary> 1548 /// <summary>
@@ -2325,8 +2322,6 @@ namespace OpenSim.Region.Framework.Scenes
2325 /// <param name="vec">The vector in which to move. This is relative to the rotation argument</param> 2322 /// <param name="vec">The vector in which to move. This is relative to the rotation argument</param>
2326 public void AddNewMovement(Vector3 vec) 2323 public void AddNewMovement(Vector3 vec)
2327 { 2324 {
2328 m_perfMonMS = Util.EnvironmentTickCount();
2329
2330 Vector3 direc = vec * Rotation; 2325 Vector3 direc = vec * Rotation;
2331 direc.Normalize(); 2326 direc.Normalize();
2332 2327
@@ -2365,8 +2360,6 @@ namespace OpenSim.Region.Framework.Scenes
2365 2360
2366 // TODO: Add the force instead of only setting it to support multiple forces per frame? 2361 // TODO: Add the force instead of only setting it to support multiple forces per frame?
2367 m_forceToApply = direc; 2362 m_forceToApply = direc;
2368
2369 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS));
2370 } 2363 }
2371 2364
2372 #endregion 2365 #endregion
@@ -2431,8 +2424,6 @@ namespace OpenSim.Region.Framework.Scenes
2431 // server. 2424 // server.
2432 if (remoteClient.IsActive) 2425 if (remoteClient.IsActive)
2433 { 2426 {
2434 m_perfMonMS = Util.EnvironmentTickCount();
2435
2436 Vector3 pos = m_pos; 2427 Vector3 pos = m_pos;
2437 pos.Z += m_appearance.HipOffset; 2428 pos.Z += m_appearance.HipOffset;
2438 2429
@@ -2443,7 +2434,6 @@ namespace OpenSim.Region.Framework.Scenes
2443 PrimUpdateFlags.Position | PrimUpdateFlags.Rotation | PrimUpdateFlags.Velocity 2434 PrimUpdateFlags.Position | PrimUpdateFlags.Rotation | PrimUpdateFlags.Velocity
2444 | PrimUpdateFlags.Acceleration | PrimUpdateFlags.AngularVelocity); 2435 | PrimUpdateFlags.Acceleration | PrimUpdateFlags.AngularVelocity);
2445 2436
2446 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS));
2447 m_scene.StatsReporter.AddAgentUpdates(1); 2437 m_scene.StatsReporter.AddAgentUpdates(1);
2448 } 2438 }
2449 } 2439 }
@@ -2484,14 +2474,11 @@ namespace OpenSim.Region.Framework.Scenes
2484 || Math.Abs(distanceError) > distanceErrorThreshold 2474 || Math.Abs(distanceError) > distanceErrorThreshold
2485 || velocidyDiff > 0.01f) // did velocity change from last update? 2475 || velocidyDiff > 0.01f) // did velocity change from last update?
2486 { 2476 {
2487 m_perfMonMS = currentTick;
2488 lastVelocitySentToAllClients = Velocity; 2477 lastVelocitySentToAllClients = Velocity;
2489 lastTerseUpdateToAllClientsTick = currentTick; 2478 lastTerseUpdateToAllClientsTick = currentTick;
2490 lastPositionSentToAllClients = OffsetPosition; 2479 lastPositionSentToAllClients = OffsetPosition;
2491 2480
2492 m_scene.ForEachClient(SendTerseUpdateToClient); 2481 m_scene.ForEachClient(SendTerseUpdateToClient);
2493
2494 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS));
2495 } 2482 }
2496 } 2483 }
2497 2484
@@ -2512,9 +2499,7 @@ namespace OpenSim.Region.Framework.Scenes
2512 2499
2513 public void SendCoarseLocationsDefault(UUID sceneId, ScenePresence p, List<Vector3> coarseLocations, List<UUID> avatarUUIDs) 2500 public void SendCoarseLocationsDefault(UUID sceneId, ScenePresence p, List<Vector3> coarseLocations, List<UUID> avatarUUIDs)
2514 { 2501 {
2515 m_perfMonMS = Util.EnvironmentTickCount();
2516 m_controllingClient.SendCoarseLocationUpdate(avatarUUIDs, coarseLocations); 2502 m_controllingClient.SendCoarseLocationUpdate(avatarUUIDs, coarseLocations);
2517 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS));
2518 } 2503 }
2519 2504
2520 /// <summary> 2505 /// <summary>
@@ -2575,8 +2560,6 @@ namespace OpenSim.Region.Framework.Scenes
2575 m_log.Warn("[SCENE PRESENCE] attempt to send avatar data from a child agent"); 2560 m_log.Warn("[SCENE PRESENCE] attempt to send avatar data from a child agent");
2576 return; 2561 return;
2577 } 2562 }
2578
2579 m_perfMonMS = Util.EnvironmentTickCount();
2580 2563
2581 int count = 0; 2564 int count = 0;
2582 m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) 2565 m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence)
@@ -2586,7 +2569,6 @@ namespace OpenSim.Region.Framework.Scenes
2586 }); 2569 });
2587 2570
2588 m_scene.StatsReporter.AddAgentUpdates(count); 2571 m_scene.StatsReporter.AddAgentUpdates(count);
2589 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS));
2590 } 2572 }
2591 2573
2592 /// <summary> 2574 /// <summary>
@@ -2595,8 +2577,6 @@ namespace OpenSim.Region.Framework.Scenes
2595 /// </summary> 2577 /// </summary>
2596 public void SendOtherAgentsAvatarDataToMe() 2578 public void SendOtherAgentsAvatarDataToMe()
2597 { 2579 {
2598 m_perfMonMS = Util.EnvironmentTickCount();
2599
2600 int count = 0; 2580 int count = 0;
2601 m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) 2581 m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence)
2602 { 2582 {
@@ -2613,7 +2593,6 @@ namespace OpenSim.Region.Framework.Scenes
2613 }); 2593 });
2614 2594
2615 m_scene.StatsReporter.AddAgentUpdates(count); 2595 m_scene.StatsReporter.AddAgentUpdates(count);
2616 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS));
2617 } 2596 }
2618 2597
2619 /// <summary> 2598 /// <summary>
@@ -2642,8 +2621,6 @@ namespace OpenSim.Region.Framework.Scenes
2642 m_log.Warn("[SCENE PRESENCE] attempt to send avatar data from a child agent"); 2621 m_log.Warn("[SCENE PRESENCE] attempt to send avatar data from a child agent");
2643 return; 2622 return;
2644 } 2623 }
2645
2646 m_perfMonMS = Util.EnvironmentTickCount();
2647 2624
2648 int count = 0; 2625 int count = 0;
2649 m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) 2626 m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence)
@@ -2656,7 +2633,6 @@ namespace OpenSim.Region.Framework.Scenes
2656 }); 2633 });
2657 2634
2658 m_scene.StatsReporter.AddAgentUpdates(count); 2635 m_scene.StatsReporter.AddAgentUpdates(count);
2659 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS));
2660 } 2636 }
2661 2637
2662 /// <summary> 2638 /// <summary>
@@ -2666,7 +2642,6 @@ namespace OpenSim.Region.Framework.Scenes
2666 public void SendOtherAgentsAppearanceToMe() 2642 public void SendOtherAgentsAppearanceToMe()
2667 { 2643 {
2668 //m_log.DebugFormat("[SCENE PRESENCE] SendOtherAgentsAppearanceToMe: {0} ({1})", Name, UUID); 2644 //m_log.DebugFormat("[SCENE PRESENCE] SendOtherAgentsAppearanceToMe: {0} ({1})", Name, UUID);
2669 m_perfMonMS = Util.EnvironmentTickCount();
2670 2645
2671 int count = 0; 2646 int count = 0;
2672 m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) 2647 m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence)
@@ -2684,7 +2659,6 @@ namespace OpenSim.Region.Framework.Scenes
2684 }); 2659 });
2685 2660
2686 m_scene.StatsReporter.AddAgentUpdates(count); 2661 m_scene.StatsReporter.AddAgentUpdates(count);
2687 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS));
2688 } 2662 }
2689 2663
2690 /// <summary> 2664 /// <summary>
diff --git a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
index 2d92ed8..282b677 100644
--- a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
+++ b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
@@ -452,12 +452,6 @@ namespace OpenSim.Region.Framework.Scenes
452 AddOutPackets(outPackets); 452 AddOutPackets(outPackets);
453 AddunAckedBytes(unAckedBytes); 453 AddunAckedBytes(unAckedBytes);
454 } 454 }
455
456 public void AddAgentTime(int ms)
457 {
458 addFrameMS(ms);
459 addAgentMS(ms);
460 }
461 455
462 #endregion 456 #endregion
463 } 457 }