From 31343aa7c3182f4b7e05d7dc01c4c43bd2d43596 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 1 Jun 2012 02:33:44 +0100 Subject: [PATCH 1/2] Add optional stat that records milliseconds spent notifying collision listeners in physics frames --- OpenSim/Region/Physics/OdePlugin/OdeScene.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs index f1fa38eeee..0b9ad614b6 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs @@ -170,6 +170,11 @@ namespace OpenSim.Region.Physics.OdePlugin /// public const string ODENativeGeomCollisionFrameMsStatName = "ODENativeGeomCollisionFrameMS"; + /// + /// Stat name for time spent notifying listeners of collisions + /// + public const string ODECollisionNotificationFrameMsStatName = "ODECollisionNotificationFrameMS"; + /// /// Stat name for the milliseconds spent updating avatar position and velocity /// @@ -2998,6 +3003,9 @@ namespace OpenSim.Region.Physics.OdePlugin collision_optimized(); + if (CollectStats) + tempTick = Util.EnvironmentTickCount(); + foreach (PhysicsActor obj in _collisionEventPrim.Values) { // m_log.DebugFormat("[PHYSICS]: Assessing {0} {1} for collision events", obj.SOPName, obj.LocalID); @@ -3024,7 +3032,12 @@ namespace OpenSim.Region.Physics.OdePlugin m_global_contactcount = 0; if (CollectStats) + { + m_stats[ODECollisionNotificationFrameMsStatName] + += Util.EnvironmentTickCountSubtract(tempTick); + tempTick = Util.EnvironmentTickCount(); + } d.WorldQuickStep(world, ODE_STEPSIZE); @@ -4155,6 +4168,7 @@ namespace OpenSim.Region.Physics.OdePlugin m_stats[ODENativeStepFrameMsStatName] = 0; m_stats[ODENativeSpaceCollisionFrameMsStatName] = 0; m_stats[ODENativeGeomCollisionFrameMsStatName] = 0; + m_stats[ODECollisionNotificationFrameMsStatName] = 0; m_stats[ODEAvatarContactsStatsName] = 0; m_stats[ODEPrimContactsStatName] = 0; m_stats[ODEAvatarUpdateFrameMsStatName] = 0; From d1b5f8d9d76e3c7c4c23f485dd070e3775e8e85f Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 1 Jun 2012 02:35:11 +0100 Subject: [PATCH 2/2] Remove recent optional native collision frame milliseconds stat Unnecessary since this has now been broken down into space collisions and geom collisions --- OpenSim/Region/Physics/OdePlugin/OdeScene.cs | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs index 0b9ad614b6..948930bf39 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs @@ -155,11 +155,6 @@ namespace OpenSim.Region.Physics.OdePlugin /// public const string ODENativeStepFrameMsStatName = "ODENativeStepFrameMS"; - /// - /// Stat name for the number of milliseconds that ODE spends in native collision code. - /// - public const string ODENativeCollisionFrameMsStatName = "ODENativeCollisionFrameMS"; - /// /// Stat name for the number of milliseconds that ODE spends in native space collision code. /// @@ -3035,7 +3030,7 @@ namespace OpenSim.Region.Physics.OdePlugin { m_stats[ODECollisionNotificationFrameMsStatName] += Util.EnvironmentTickCountSubtract(tempTick); - + tempTick = Util.EnvironmentTickCount(); } @@ -4149,10 +4144,6 @@ namespace OpenSim.Region.Physics.OdePlugin { returnStats = new Dictionary(m_stats); - returnStats[ODENativeCollisionFrameMsStatName] - = returnStats[ODENativeSpaceCollisionFrameMsStatName] - + returnStats[ODENativeGeomCollisionFrameMsStatName]; - InitializeExtraStats(); } @@ -4161,9 +4152,6 @@ namespace OpenSim.Region.Physics.OdePlugin private void InitializeExtraStats() { - // No need to zero since this is calculated by addition - // m_stats[ODENativeCollisionFrameMsStatName] = 0; - m_stats[ODETotalFrameMsStatName] = 0; m_stats[ODENativeStepFrameMsStatName] = 0; m_stats[ODENativeSpaceCollisionFrameMsStatName] = 0;