protected virtual void CurrentPhysicsStatsCommand(IScene scene, string[] cmd) { if (cmd.Length == 3) { if (m_Scene.RegionInfo.RegionName != cmd[2]) { return; } } //Set all the bools to true m_collectingStats = true; m_waitingForCollectionOfStats = 1; //Start the timer as well m_physicsStatTimer.Start(); MainConsole.Instance.Info("Collecting Stats Now... Please wait..."); while (m_waitingForCollectionOfStats > 0) { Thread.Sleep(50); } PhysicsStats stats = null; while (stats == null) { m_currentPhysicsStats.TryGetValue(m_Scene.RegionInfo.RegionID, out stats); } DumpStatsToConsole(m_Scene, stats); }
protected virtual void CurrentPhysicsStatsCommand(string[] cmd) { List <IScene> scenesToRun = new List <IScene>(); if (cmd.Length == 3) { #if (!ISWIN) foreach (IScene scene in m_scenes) { if (scene.RegionInfo.RegionName == cmd[2]) { scenesToRun.Add(scene); } } #else scenesToRun.AddRange(m_scenes.Where(scene => scene.RegionInfo.RegionName == cmd[2])); #endif if (scenesToRun.Count == 0) { scenesToRun = m_scenes; } } else { scenesToRun.AddRange(m_scenes); } //Set all the bools to true m_collectingStats = true; m_waitingForCollectionOfStats = m_scenes.Count; //Start the timer as well m_physicsStatTimer.Start(); MainConsole.Instance.Info("Collecting Stats Now... Please wait..."); while (m_waitingForCollectionOfStats > 0) { Thread.Sleep(50); } foreach (IScene scene in scenesToRun) { PhysicsStats stats = null; while (stats == null) { m_currentPhysicsStats.TryGetValue(scene.RegionInfo.RegionID, out stats); } DumpStatsToConsole(scene, stats); } }
protected virtual void DumpStatsToConsole(Scene scene, PhysicsStats stats) { m_log.Info("------ Physics Stats for region " + scene.RegionInfo.RegionName + " ------"); m_log.Info(" All stats are in milliseconds spent per second."); m_log.Info(" These are in the order they are run in the PhysicsScene."); m_log.Info(" PhysicsTaintTime: " + stats.StatPhysicsTaintTime); m_log.Info(" PhysicsMoveTime: " + stats.StatPhysicsMoveTime); m_log.Info(" FindContactsTime: " + stats.StatFindContactsTime); m_log.Info(" ContactLoopTime: " + stats.StatContactLoopTime); m_log.Info(" CollisionAccountingTime: " + stats.StatCollisionAccountingTime); m_log.Info(" CollisionOptimizedTime: " + stats.StatCollisionOptimizedTime); m_log.Info(" SendCollisionsTime: " + stats.StatSendCollisionsTime); m_log.Info(" AvatarUpdatePosAndVelocity: " + stats.StatAvatarUpdatePosAndVelocity); m_log.Info(" PrimUpdatePosAndVelocity: " + stats.StatPrimUpdatePosAndVelocity); m_log.Info(" UnlockedArea: " + stats.StatUnlockedArea); m_log.Info(""); }
protected virtual void PhysicsStatsCommand(string module, string[] cmd) { List <Scene> scenesToRun = new List <Scene>(); if (cmd.Length == 3) { foreach (Scene scene in m_scenes) { if (scene.RegionInfo.RegionName == cmd[2]) { scenesToRun.Add(scene); } } if (scenesToRun.Count == 0) { scenesToRun = m_scenes; } } else { scenesToRun.AddRange(m_scenes); } //Set all the bools to true m_collectingStats = true; m_waitingForCollectionOfStats = true; //Start the timer as well m_physicsStatTimer.Start(); m_log.Info("Collecting Stats Now... Please wait..."); while (m_waitingForCollectionOfStats) { Thread.Sleep(50); } m_collectingStats = false; foreach (Scene scene in scenesToRun) { PhysicsStats stats = null; while (stats == null) { m_lastPhysicsStats.TryGetValue(scene.RegionInfo.RegionID, out stats); } DumpStatsToConsole(scene, stats); } }
public virtual void AddPhysicsStats(UUID RegionID, PhysicsScene scene) { if (!m_collectingStats) { return; } lock (m_currentPhysicsStats) { PhysicsStats stats; if (!m_currentPhysicsStats.TryGetValue(RegionID, out stats)) { stats = new PhysicsStats(); stats.StatAvatarUpdatePosAndVelocity = scene.StatAvatarUpdatePosAndVelocity; stats.StatCollisionOptimizedTime = scene.StatCollisionOptimizedTime; stats.StatPhysicsMoveTime = scene.StatPhysicsMoveTime; stats.StatPhysicsTaintTime = scene.StatPhysicsTaintTime; stats.StatPrimUpdatePosAndVelocity = scene.StatPrimUpdatePosAndVelocity; stats.StatSendCollisionsTime = scene.StatSendCollisionsTime; stats.StatUnlockedArea = scene.StatUnlockedArea; stats.StatFindContactsTime = scene.StatFindContactsTime; stats.StatContactLoopTime = scene.StatContactLoopTime; stats.StatCollisionAccountingTime = scene.StatCollisionAccountingTime; } else { stats.StatAvatarUpdatePosAndVelocity += scene.StatAvatarUpdatePosAndVelocity; stats.StatCollisionOptimizedTime += scene.StatCollisionOptimizedTime; stats.StatPhysicsMoveTime += scene.StatPhysicsMoveTime; stats.StatPhysicsTaintTime += scene.StatPhysicsTaintTime; stats.StatPrimUpdatePosAndVelocity += scene.StatPrimUpdatePosAndVelocity; stats.StatSendCollisionsTime += scene.StatSendCollisionsTime; stats.StatUnlockedArea += scene.StatUnlockedArea; stats.StatFindContactsTime += scene.StatFindContactsTime; stats.StatContactLoopTime += scene.StatContactLoopTime; stats.StatCollisionAccountingTime += scene.StatCollisionAccountingTime; } m_currentPhysicsStats[RegionID] = stats; PhysicsStats ProfilerStats = new PhysicsStats(); ProfilerStats.StatAvatarUpdatePosAndVelocity = scene.StatAvatarUpdatePosAndVelocity; ProfilerStats.StatCollisionOptimizedTime = scene.StatCollisionOptimizedTime; ProfilerStats.StatPhysicsMoveTime = scene.StatPhysicsMoveTime; ProfilerStats.StatPhysicsTaintTime = scene.StatPhysicsTaintTime; ProfilerStats.StatPrimUpdatePosAndVelocity = scene.StatPrimUpdatePosAndVelocity; ProfilerStats.StatSendCollisionsTime = scene.StatSendCollisionsTime; ProfilerStats.StatUnlockedArea = scene.StatUnlockedArea; ProfilerStats.StatFindContactsTime = scene.StatFindContactsTime; ProfilerStats.StatContactLoopTime = scene.StatContactLoopTime; ProfilerStats.StatCollisionAccountingTime = scene.StatCollisionAccountingTime; //Add the stats to the profiler Profiler p = ProfilerManager.GetProfiler(); p.AddStat("CurrentStatAvatarUpdatePosAndVelocity " + RegionID, ProfilerStats.StatAvatarUpdatePosAndVelocity); p.AddStat("CurrentStatCollisionOptimizedTime " + RegionID, ProfilerStats.StatCollisionOptimizedTime); p.AddStat("CurrentStatPhysicsMoveTime " + RegionID, ProfilerStats.StatPhysicsMoveTime); p.AddStat("CurrentStatPhysicsTaintTime " + RegionID, ProfilerStats.StatPhysicsTaintTime); p.AddStat("CurrentStatPrimUpdatePosAndVelocity " + RegionID, ProfilerStats.StatPrimUpdatePosAndVelocity); p.AddStat("CurrentStatSendCollisionsTime " + RegionID, ProfilerStats.StatSendCollisionsTime); p.AddStat("CurrentStatUnlockedArea " + RegionID, ProfilerStats.StatUnlockedArea); p.AddStat("CurrentStatFindContactsTime " + RegionID, ProfilerStats.StatFindContactsTime); p.AddStat("CurrentStatContactLoopTime " + RegionID, ProfilerStats.StatContactLoopTime); p.AddStat("CurrentStatCollisionAccountingTime " + RegionID, ProfilerStats.StatCollisionAccountingTime); } }
public virtual void AddPhysicsStats(UUID RegionID, PhysicsScene scene) { if (!m_collectingStats) return; lock (m_currentPhysicsStats) { PhysicsStats stats; if (!m_currentPhysicsStats.TryGetValue(RegionID, out stats)) { stats = new PhysicsStats { StatAvatarUpdatePosAndVelocity = scene.StatAvatarUpdatePosAndVelocity, StatCollisionOptimizedTime = scene.StatCollisionOptimizedTime, StatPhysicsMoveTime = scene.StatPhysicsMoveTime, StatPhysicsTaintTime = scene.StatPhysicsTaintTime, StatPrimUpdatePosAndVelocity = scene.StatPrimUpdatePosAndVelocity, StatSendCollisionsTime = scene.StatSendCollisionsTime, StatUnlockedArea = scene.StatUnlockedArea, StatFindContactsTime = scene.StatFindContactsTime, StatContactLoopTime = scene.StatContactLoopTime, StatCollisionAccountingTime = scene.StatCollisionAccountingTime }; } else { stats.StatAvatarUpdatePosAndVelocity += scene.StatAvatarUpdatePosAndVelocity; stats.StatCollisionOptimizedTime += scene.StatCollisionOptimizedTime; stats.StatPhysicsMoveTime += scene.StatPhysicsMoveTime; stats.StatPhysicsTaintTime += scene.StatPhysicsTaintTime; stats.StatPrimUpdatePosAndVelocity += scene.StatPrimUpdatePosAndVelocity; stats.StatSendCollisionsTime += scene.StatSendCollisionsTime; stats.StatUnlockedArea += scene.StatUnlockedArea; stats.StatFindContactsTime += scene.StatFindContactsTime; stats.StatContactLoopTime += scene.StatContactLoopTime; stats.StatCollisionAccountingTime += scene.StatCollisionAccountingTime; } m_currentPhysicsStats[RegionID] = stats; PhysicsStats ProfilerStats = new PhysicsStats { StatAvatarUpdatePosAndVelocity = scene.StatAvatarUpdatePosAndVelocity, StatCollisionOptimizedTime = scene.StatCollisionOptimizedTime, StatPhysicsMoveTime = scene.StatPhysicsMoveTime, StatPhysicsTaintTime = scene.StatPhysicsTaintTime, StatPrimUpdatePosAndVelocity = scene.StatPrimUpdatePosAndVelocity, StatSendCollisionsTime = scene.StatSendCollisionsTime, StatUnlockedArea = scene.StatUnlockedArea, StatFindContactsTime = scene.StatFindContactsTime, StatContactLoopTime = scene.StatContactLoopTime, StatCollisionAccountingTime = scene.StatCollisionAccountingTime }; //Add the stats to the profiler Profiler p = ProfilerManager.GetProfiler(); p.AddStat("CurrentStatAvatarUpdatePosAndVelocity " + RegionID, ProfilerStats.StatAvatarUpdatePosAndVelocity); p.AddStat("CurrentStatCollisionOptimizedTime " + RegionID, ProfilerStats.StatCollisionOptimizedTime); p.AddStat("CurrentStatPhysicsMoveTime " + RegionID, ProfilerStats.StatPhysicsMoveTime); p.AddStat("CurrentStatPhysicsTaintTime " + RegionID, ProfilerStats.StatPhysicsTaintTime); p.AddStat("CurrentStatPrimUpdatePosAndVelocity " + RegionID, ProfilerStats.StatPrimUpdatePosAndVelocity); p.AddStat("CurrentStatSendCollisionsTime " + RegionID, ProfilerStats.StatSendCollisionsTime); p.AddStat("CurrentStatUnlockedArea " + RegionID, ProfilerStats.StatUnlockedArea); p.AddStat("CurrentStatFindContactsTime " + RegionID, ProfilerStats.StatFindContactsTime); p.AddStat("CurrentStatContactLoopTime " + RegionID, ProfilerStats.StatContactLoopTime); p.AddStat("CurrentStatCollisionAccountingTime " + RegionID, ProfilerStats.StatCollisionAccountingTime); } }
protected virtual void DumpStatsToConsole(IScene scene, PhysicsStats stats) { MainConsole.Instance.Info("------ Physics Stats for region " + scene.RegionInfo.RegionName + " ------"); MainConsole.Instance.Info(" All stats are in milliseconds spent per second."); MainConsole.Instance.Info(" These are in the order they are run in the PhysicsScene."); MainConsole.Instance.Info(" PhysicsTaintTime: " + stats.StatPhysicsTaintTime); MainConsole.Instance.Info(" PhysicsMoveTime: " + stats.StatPhysicsMoveTime); MainConsole.Instance.Info(" FindContactsTime: " + stats.StatFindContactsTime); MainConsole.Instance.Info(" ContactLoopTime: " + stats.StatContactLoopTime); MainConsole.Instance.Info(" CollisionAccountingTime: " + stats.StatCollisionAccountingTime); MainConsole.Instance.Info(" CollisionOptimizedTime: " + stats.StatCollisionOptimizedTime); MainConsole.Instance.Info(" SendCollisionsTime: " + stats.StatSendCollisionsTime); MainConsole.Instance.Info(" AvatarUpdatePosAndVelocity: " + stats.StatAvatarUpdatePosAndVelocity); MainConsole.Instance.Info(" PrimUpdatePosAndVelocity: " + stats.StatPrimUpdatePosAndVelocity); MainConsole.Instance.Info(" UnlockedArea: " + stats.StatUnlockedArea); MainConsole.Instance.Info(""); }