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);
            }
        }
Exemple #3
0
 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("");
 }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
        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("");
 }