From 20a9bf08f51351e1e0a9de94f184ff56cd572665 Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Thu, 1 May 2008 18:04:42 +0000 Subject: * Rolled back a few changes. --- .../Region/Environment/Scenes/SimStatsReporter.cs | 274 ++++++++++----------- 1 file changed, 135 insertions(+), 139 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes/SimStatsReporter.cs') diff --git a/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs b/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs index 1f02f23..a53bfcd 100644 --- a/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs +++ b/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs @@ -34,68 +34,105 @@ namespace OpenSim.Region.Environment.Scenes { public class SimStatsReporter { - #region Delegates - public delegate void SendStatResult(SimStatsPacket pack); - #endregion + public event SendStatResult OnSendStatsResult; - private readonly Timer m_report = new Timer(); - private readonly SimStatsPacket.RegionBlock rb = new SimStatsPacket.RegionBlock(); - private readonly RegionInfo ReportingRegion; - private readonly SimStatsPacket.StatBlock[] sb = new SimStatsPacket.StatBlock[21]; - private readonly SimStatsPacket statpack = (SimStatsPacket) PacketPool.Instance.GetPacket(PacketType.SimStats); - - private SendStatResult handlerSendStatResult; - private int m_activePrim; - private int m_activeScripts; - private int m_agentMS; - - private int m_agentUpdates; - private int m_childAgents; - private int m_fps; - - private int m_frameMS; - private int m_imageMS; - private int m_inPacketsPerSecond; - private int m_netMS; - private int m_numPrim; - private int m_otherMS; - private int m_outPacketsPerSecond; - private int m_pendingDownloads; - private int m_pendingUploads; - private float m_pfps; - private int m_physicsMS; - private int m_rootAgents; - private int m_scriptLinesPerSecond; - private float m_timeDilation; - private int m_unAckedBytes; + private SendStatResult handlerSendStatResult = null; - private int objectCapacity = 45000; - private float statsUpdateFactor; + private enum Stats : uint + { + TimeDilation = 0, + SimFPS = 1, + PhysicsFPS = 2, + AgentUpdates = 3, + FrameMS = 4, + NetMS = 5, + OtherMS = 6, + PhysicsMS = 7, + AgentMS = 8, + ImageMS = 9, + ScriptMS = 10, + TotalPrim = 11, + ActivePrim = 12, + Agents = 13, + ChildAgents = 14, + ActiveScripts = 15, + ScriptLinesPerSecond = 16, + InPacketsPerSecond = 17, + OutPacketsPerSecond = 18, + PendingDownloads = 19, + PendingUploads = 20, + UnAckedBytes = 24, + + // Havok4 related... May or may not be in upcoming LLclients + // (kelly added them sometime late in January 2008) + NumRCCSLODReduced = 25, + NumRCCSFixed = 26 + } + + // Sending a stats update every 3 seconds private int statsUpdatesEveryMS = 3000; + private float statsUpdateFactor = 0; + private float m_timeDilation = 0; + private int m_fps = 0; + private float m_pfps = 0; + private int m_agentUpdates = 0; + + private int m_frameMS = 0; + private int m_netMS = 0; + private int m_agentMS = 0; + private int m_physicsMS = 0; + private int m_imageMS = 0; + private int m_otherMS = 0; + +//Ckrinke: (3-21-08) Comment out to remove a compiler warning. Bring back into play when needed. +//Ckrinke private int m_scriptMS = 0; + + private int m_rootAgents = 0; + private int m_childAgents = 0; + private int m_numPrim = 0; + private int m_inPacketsPerSecond = 0; + private int m_outPacketsPerSecond = 0; + private int m_activePrim = 0; + private int m_unAckedBytes = 0; + private int m_pendingDownloads = 0; + private int m_pendingUploads = 0; + private int m_activeScripts = 0; + private int m_scriptLinesPerSecond = 0; + + private int objectCapacity = 45000; + + + SimStatsPacket.StatBlock[] sb = new SimStatsPacket.StatBlock[21]; + SimStatsPacket.RegionBlock rb = new SimStatsPacket.RegionBlock(); + SimStatsPacket statpack = (SimStatsPacket)PacketPool.Instance.GetPacket(PacketType.SimStats); + + + private RegionInfo ReportingRegion; + + private Timer m_report = new Timer(); public SimStatsReporter(RegionInfo regionData) { - statsUpdateFactor = (statsUpdatesEveryMS / 1000); + + statsUpdateFactor = (float)(statsUpdatesEveryMS / 1000); ReportingRegion = regionData; - for (int i = 0; i < 21; i++) + for (int i = 0; i<21;i++) { sb[i] = new SimStatsPacket.StatBlock(); } m_report.AutoReset = true; m_report.Interval = statsUpdatesEveryMS; - m_report.Elapsed += statsHeartBeat; + m_report.Elapsed += new ElapsedEventHandler(statsHeartBeat); m_report.Enabled = true; } - public event SendStatResult OnSendStatsResult; - public void SetUpdateMS(int ms) { statsUpdatesEveryMS = ms; - statsUpdateFactor = (statsUpdatesEveryMS / 1000); + statsUpdateFactor = (float)(statsUpdatesEveryMS / 1000); m_report.Interval = statsUpdatesEveryMS; } @@ -106,8 +143,8 @@ namespace OpenSim.Region.Environment.Scenes lock (m_report) { // Packet is already initialized and ready for data insert - - + + statpack.Region = rb; statpack.Region.RegionX = ReportingRegion.RegionLocX; statpack.Region.RegionY = ReportingRegion.RegionLocY; @@ -117,102 +154,102 @@ namespace OpenSim.Region.Environment.Scenes } catch (Exception) { - statpack.Region.RegionFlags = 0; + statpack.Region.RegionFlags = (uint) 0; } statpack.Region.ObjectCapacity = (uint) objectCapacity; - - #region various statistic googly moogly - + +#region various statistic googly moogly + // Our FPS is actually 10fps, so multiplying by 5 to get the amount that people expect there // 0-50 is pretty close to 0-45 - float simfps = ((m_fps * 5)); - + float simfps = (int) ((m_fps * 5)); + //if (simfps > 45) //simfps = simfps - (simfps - 45); //if (simfps < 0) //simfps = 0; - + // float physfps = ((m_pfps / 1000)); - + //if (physfps > 600) //physfps = physfps - (physfps - 600); - + if (physfps < 0) physfps = 0; - - #endregion - + +#endregion + //Our time dilation is 0.91 when we're running a full speed, // therefore to make sure we get an appropriate range, // we have to factor in our error. (0.10f * statsUpdateFactor) // multiplies the fix for the error times the amount of times it'll occur a second // / 10 divides the value by the number of times the sim heartbeat runs (10fps) // Then we divide the whole amount by the amount of seconds pass in between stats updates. - + sb[0].StatID = (uint) Stats.TimeDilation; - sb[0].StatValue = m_timeDilation; //((((m_timeDilation + (0.10f * statsUpdateFactor)) /10) / statsUpdateFactor)); - + sb[0].StatValue = m_timeDilation ; //((((m_timeDilation + (0.10f * statsUpdateFactor)) /10) / statsUpdateFactor)); + sb[1].StatID = (uint) Stats.SimFPS; - sb[1].StatValue = simfps / statsUpdateFactor; - + sb[1].StatValue = simfps/statsUpdateFactor; + sb[2].StatID = (uint) Stats.PhysicsFPS; sb[2].StatValue = physfps / statsUpdateFactor; - + sb[3].StatID = (uint) Stats.AgentUpdates; sb[3].StatValue = (m_agentUpdates / statsUpdateFactor); - + sb[4].StatID = (uint) Stats.Agents; sb[4].StatValue = m_rootAgents; - + sb[5].StatID = (uint) Stats.ChildAgents; sb[5].StatValue = m_childAgents; - + sb[6].StatID = (uint) Stats.TotalPrim; sb[6].StatValue = m_numPrim; - + sb[7].StatID = (uint) Stats.ActivePrim; sb[7].StatValue = m_activePrim; - - sb[8].StatID = (uint) Stats.FrameMS; + + sb[8].StatID = (uint)Stats.FrameMS; sb[8].StatValue = m_frameMS / statsUpdateFactor; - - sb[9].StatID = (uint) Stats.NetMS; + + sb[9].StatID = (uint)Stats.NetMS; sb[9].StatValue = m_netMS / statsUpdateFactor; - - sb[10].StatID = (uint) Stats.PhysicsMS; + + sb[10].StatID = (uint)Stats.PhysicsMS; sb[10].StatValue = m_physicsMS / statsUpdateFactor; - - sb[11].StatID = (uint) Stats.ImageMS; + + sb[11].StatID = (uint)Stats.ImageMS ; sb[11].StatValue = m_imageMS / statsUpdateFactor; - - sb[12].StatID = (uint) Stats.OtherMS; + + sb[12].StatID = (uint)Stats.OtherMS; sb[12].StatValue = m_otherMS / statsUpdateFactor; - - sb[13].StatID = (uint) Stats.InPacketsPerSecond; + + sb[13].StatID = (uint)Stats.InPacketsPerSecond; sb[13].StatValue = (m_inPacketsPerSecond); - - sb[14].StatID = (uint) Stats.OutPacketsPerSecond; + + sb[14].StatID = (uint)Stats.OutPacketsPerSecond; sb[14].StatValue = (m_outPacketsPerSecond / statsUpdateFactor); - - sb[15].StatID = (uint) Stats.UnAckedBytes; + + sb[15].StatID = (uint)Stats.UnAckedBytes; sb[15].StatValue = m_unAckedBytes; - - sb[16].StatID = (uint) Stats.AgentMS; + + sb[16].StatID = (uint)Stats.AgentMS; sb[16].StatValue = m_agentMS / statsUpdateFactor; - - sb[17].StatID = (uint) Stats.PendingDownloads; + + sb[17].StatID = (uint)Stats.PendingDownloads; sb[17].StatValue = m_pendingDownloads; - - sb[18].StatID = (uint) Stats.PendingUploads; + + sb[18].StatID = (uint)Stats.PendingUploads; sb[18].StatValue = m_pendingUploads; - - sb[19].StatID = (uint) Stats.ActiveScripts; + + sb[19].StatID = (uint)Stats.ActiveScripts; sb[19].StatValue = m_activeScripts; - - sb[20].StatID = (uint) Stats.ScriptLinesPerSecond; + + sb[20].StatID = (uint)Stats.ScriptLinesPerSecond; sb[20].StatValue = m_scriptLinesPerSecond / statsUpdateFactor; - + statpack.Stat = sb; handlerSendStatResult = OnSendStatsResult; @@ -223,7 +260,7 @@ namespace OpenSim.Region.Environment.Scenes resetvalues(); } } - + private void resetvalues() { m_timeDilation = 0; @@ -247,7 +284,6 @@ namespace OpenSim.Region.Environment.Scenes } # region methods called from Scene - // The majority of these functions are additive // so that you can easily change the amount of // seconds in between sim stats updates @@ -256,10 +292,10 @@ namespace OpenSim.Region.Environment.Scenes { //float tdsetting = td; //if (tdsetting > 1.0f) - //tdsetting = (tdsetting - (tdsetting - 0.91f)); + //tdsetting = (tdsetting - (tdsetting - 0.91f)); //if (tdsetting < 0) - //tdsetting = 0.0f; + //tdsetting = 0.0f; m_timeDilation = td; } @@ -317,35 +353,30 @@ namespace OpenSim.Region.Environment.Scenes { m_frameMS += ms; } - public void addNetMS(int ms) { m_netMS += ms; } - public void addAgentMS(int ms) { m_agentMS += ms; } - public void addPhysicsMS(int ms) { m_physicsMS += ms; } - public void addImageMS(int ms) { m_imageMS += ms; } - public void addOtherMS(int ms) { m_otherMS += ms; } - + // private static readonly log4net.ILog m_log // = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - + public void addPendingDownload(int count) { m_pendingDownloads += count; @@ -368,40 +399,5 @@ namespace OpenSim.Region.Environment.Scenes } #endregion - - #region Nested type: Stats - - private enum Stats : uint - { - TimeDilation = 0, - SimFPS = 1, - PhysicsFPS = 2, - AgentUpdates = 3, - FrameMS = 4, - NetMS = 5, - OtherMS = 6, - PhysicsMS = 7, - AgentMS = 8, - ImageMS = 9, - ScriptMS = 10, - TotalPrim = 11, - ActivePrim = 12, - Agents = 13, - ChildAgents = 14, - ActiveScripts = 15, - ScriptLinesPerSecond = 16, - InPacketsPerSecond = 17, - OutPacketsPerSecond = 18, - PendingDownloads = 19, - PendingUploads = 20, - UnAckedBytes = 24, - - // Havok4 related... May or may not be in upcoming LLclients - // (kelly added them sometime late in January 2008) - NumRCCSLODReduced = 25, - NumRCCSFixed = 26 - } - - #endregion } -} \ No newline at end of file +} -- cgit v1.1