diff options
author | Teravus Ovares | 2008-01-16 02:48:39 +0000 |
---|---|---|
committer | Teravus Ovares | 2008-01-16 02:48:39 +0000 |
commit | 314c554ed40fe015397cf0fa6981e47b5025b6f8 (patch) | |
tree | 7337f1b63bc207809306c1967559577479e448ec /OpenSim/Region/Environment/Scenes/SimStatsReporter.cs | |
parent | * Restore non dash asset UUID persistence which was made dashed in r3069 (diff) | |
download | opensim-SC-314c554ed40fe015397cf0fa6981e47b5025b6f8.zip opensim-SC-314c554ed40fe015397cf0fa6981e47b5025b6f8.tar.gz opensim-SC-314c554ed40fe015397cf0fa6981e47b5025b6f8.tar.bz2 opensim-SC-314c554ed40fe015397cf0fa6981e47b5025b6f8.tar.xz |
* Refactored the SimStatsReporter to reuse the same packet and packet blocks over and over again instead of creating 1 a second.
* Added frame Milliseconds, Physics Milliseconds and Other Milliseconds to the Sim Stats Reporter so we can start to figure out what the slowdowns are. (these were the most convenient to get and had just about no overhead.
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/SimStatsReporter.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SimStatsReporter.cs | 110 |
1 files changed, 87 insertions, 23 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs b/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs index 1b2ff9a..36c2868 100644 --- a/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs +++ b/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs | |||
@@ -45,6 +45,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
45 | SimFPS = 1, | 45 | SimFPS = 1, |
46 | PhysicsFPS = 2, | 46 | PhysicsFPS = 2, |
47 | AgentUpdates = 3, | 47 | AgentUpdates = 3, |
48 | FrameMS = 4, | ||
49 | NetMS = 5, | ||
50 | OtherMS = 6, | ||
51 | PhysicsMS = 7, | ||
52 | AgentMS = 8, | ||
53 | ImageMS = 9, | ||
48 | TotalPrim = 11, | 54 | TotalPrim = 11, |
49 | ActivePrim = 12, | 55 | ActivePrim = 12, |
50 | Agents = 13, | 56 | Agents = 13, |
@@ -59,6 +65,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
59 | private int m_fps = 0; | 65 | private int m_fps = 0; |
60 | private float m_pfps = 0; | 66 | private float m_pfps = 0; |
61 | private float m_agentUpdates = 0; | 67 | private float m_agentUpdates = 0; |
68 | private int m_frameMS = 0; | ||
69 | private int m_netMS = 0; | ||
70 | private int m_physicsMS = 0; | ||
71 | private int m_imageMS = 0; | ||
72 | private int m_otherMS = 0; | ||
62 | private int m_rootAgents = 0; | 73 | private int m_rootAgents = 0; |
63 | private int m_childAgents = 0; | 74 | private int m_childAgents = 0; |
64 | private int m_numPrim = 0; | 75 | private int m_numPrim = 0; |
@@ -66,6 +77,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
66 | private int m_outPacketsPerSecond = 0; | 77 | private int m_outPacketsPerSecond = 0; |
67 | private int m_activePrim = 0; | 78 | private int m_activePrim = 0; |
68 | private int m_unAckedBytes = 0; | 79 | private int m_unAckedBytes = 0; |
80 | |||
81 | SimStatsPacket.StatBlock[] sb = new SimStatsPacket.StatBlock[16]; | ||
82 | SimStatsPacket.RegionBlock rb = new SimStatsPacket.RegionBlock(); | ||
83 | SimStatsPacket statpack = (SimStatsPacket)PacketPool.Instance.GetPacket(PacketType.SimStats); | ||
84 | |||
85 | |||
69 | private RegionInfo ReportingRegion; | 86 | private RegionInfo ReportingRegion; |
70 | 87 | ||
71 | private Timer m_report = new Timer(); | 88 | private Timer m_report = new Timer(); |
@@ -74,6 +91,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
74 | public SimStatsReporter(RegionInfo regionData) | 91 | public SimStatsReporter(RegionInfo regionData) |
75 | { | 92 | { |
76 | ReportingRegion = regionData; | 93 | ReportingRegion = regionData; |
94 | for (int i = 0; i<16;i++) | ||
95 | { | ||
96 | sb[i] = new SimStatsPacket.StatBlock(); | ||
97 | } | ||
77 | m_report.AutoReset = true; | 98 | m_report.AutoReset = true; |
78 | m_report.Interval = statsUpdatesEveryMS; | 99 | m_report.Interval = statsUpdatesEveryMS; |
79 | m_report.Elapsed += new ElapsedEventHandler(statsHeartBeat); | 100 | m_report.Elapsed += new ElapsedEventHandler(statsHeartBeat); |
@@ -83,11 +104,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
83 | private void statsHeartBeat(object sender, EventArgs e) | 104 | private void statsHeartBeat(object sender, EventArgs e) |
84 | { | 105 | { |
85 | m_report.Enabled = false; | 106 | m_report.Enabled = false; |
86 | SimStatsPacket statpack = (SimStatsPacket) PacketPool.Instance.GetPacket(PacketType.SimStats); | 107 | |
87 | // TODO: don't create new blocks if recycling an old packet | 108 | // Packet is already initialized and ready for data insert |
88 | 109 | ||
89 | SimStatsPacket.StatBlock[] sb = new SimStatsPacket.StatBlock[11]; | 110 | |
90 | statpack.Region = new SimStatsPacket.RegionBlock(); | 111 | statpack.Region = rb; |
91 | statpack.Region.RegionX = ReportingRegion.RegionLocX; | 112 | statpack.Region.RegionX = ReportingRegion.RegionLocX; |
92 | statpack.Region.RegionY = ReportingRegion.RegionLocY; | 113 | statpack.Region.RegionY = ReportingRegion.RegionLocY; |
93 | try | 114 | try |
@@ -119,49 +140,64 @@ namespace OpenSim.Region.Environment.Scenes | |||
119 | 140 | ||
120 | #endregion | 141 | #endregion |
121 | 142 | ||
122 | sb[0] = new SimStatsPacket.StatBlock(); | 143 | //sb[0] = sbb; |
123 | sb[0].StatID = (uint) Stats.TimeDilation; | 144 | sb[0].StatID = (uint) Stats.TimeDilation; |
124 | sb[0].StatValue = (m_timeDilation); | 145 | sb[0].StatValue = (m_timeDilation); |
125 | 146 | ||
126 | sb[1] = new SimStatsPacket.StatBlock(); | 147 | //sb[1] = sbb; |
127 | sb[1].StatID = (uint) Stats.SimFPS; | 148 | sb[1].StatID = (uint) Stats.SimFPS; |
128 | sb[1].StatValue = simfps; | 149 | sb[1].StatValue = simfps; |
129 | 150 | ||
130 | sb[2] = new SimStatsPacket.StatBlock(); | 151 | //sb[2] = sbb; |
131 | sb[2].StatID = (uint) Stats.PhysicsFPS; | 152 | sb[2].StatID = (uint) Stats.PhysicsFPS; |
132 | sb[2].StatValue = physfps; | 153 | sb[2].StatValue = physfps; |
133 | 154 | ||
134 | sb[3] = new SimStatsPacket.StatBlock(); | 155 | //sb[3] = sbb; |
135 | sb[3].StatID = (uint) Stats.AgentUpdates; | 156 | sb[3].StatID = (uint) Stats.AgentUpdates; |
136 | sb[3].StatValue = (m_agentUpdates/statsUpdatesEveryMS); | 157 | sb[3].StatValue = (m_agentUpdates); |
137 | 158 | ||
138 | sb[4] = new SimStatsPacket.StatBlock(); | 159 | //sb[4] = sbb; |
139 | sb[4].StatID = (uint) Stats.Agents; | 160 | //sb[4].StatID = (uint) Stats.Agents; |
140 | sb[4].StatValue = m_rootAgents; | 161 | sb[4].StatValue = m_rootAgents; |
141 | 162 | ||
142 | sb[5] = new SimStatsPacket.StatBlock(); | 163 | //sb[5] = sbb; |
143 | sb[5].StatID = (uint) Stats.ChildAgents; | 164 | sb[5].StatID = (uint) Stats.ChildAgents; |
144 | sb[5].StatValue = m_childAgents; | 165 | sb[5].StatValue = m_childAgents; |
145 | 166 | ||
146 | sb[6] = new SimStatsPacket.StatBlock(); | 167 | //sb[6] = sbb; |
147 | sb[6].StatID = (uint) Stats.TotalPrim; | 168 | sb[6].StatID = (uint) Stats.TotalPrim; |
148 | sb[6].StatValue = m_numPrim; | 169 | sb[6].StatValue = m_numPrim; |
149 | 170 | ||
150 | sb[7] = new SimStatsPacket.StatBlock(); | 171 | //sb[7] = sbb; |
151 | sb[7].StatID = (uint) Stats.ActivePrim; | 172 | sb[7].StatID = (uint) Stats.ActivePrim; |
152 | sb[7].StatValue = m_activePrim; | 173 | sb[7].StatValue = m_activePrim; |
153 | 174 | ||
154 | sb[8] = new SimStatsPacket.StatBlock(); | 175 | sb[8].StatID = (uint)Stats.FrameMS; |
155 | sb[8].StatID = (uint) Stats.InPacketsPerSecond; | 176 | sb[8].StatValue = m_frameMS; |
156 | sb[8].StatValue = (int) (m_inPacketsPerSecond/statsUpdatesEveryMS); | 177 | |
178 | sb[9].StatID = (uint)Stats.NetMS; | ||
179 | sb[9].StatValue = m_netMS; | ||
180 | |||
181 | sb[10].StatID = (uint)Stats.PhysicsMS; | ||
182 | sb[10].StatValue = m_physicsMS; | ||
157 | 183 | ||
158 | sb[9] = new SimStatsPacket.StatBlock(); | 184 | sb[11].StatID = (uint)Stats.ImageMS ; |
159 | sb[9].StatID = (uint) Stats.OutPacketsPerSecond; | 185 | sb[11].StatValue = m_imageMS; |
160 | sb[9].StatValue = (int) (m_outPacketsPerSecond/statsUpdatesEveryMS); | ||
161 | 186 | ||
162 | sb[10] = new SimStatsPacket.StatBlock(); | 187 | sb[12].StatID = (uint)Stats.OtherMS; |
163 | sb[10].StatID = (uint) Stats.UnAckedBytes; | 188 | sb[12].StatValue = m_otherMS; |
164 | sb[10].StatValue = (int) (m_unAckedBytes/statsUpdatesEveryMS); | 189 | |
190 | //sb[8] = sbb; | ||
191 | sb[13].StatID = (uint) Stats.InPacketsPerSecond; | ||
192 | sb[13].StatValue = (m_inPacketsPerSecond); | ||
193 | |||
194 | //sb[9] = sbb; | ||
195 | sb[14].StatID = (uint) Stats.OutPacketsPerSecond; | ||
196 | sb[14].StatValue = (m_outPacketsPerSecond); | ||
197 | |||
198 | //sb[10] = sbb; | ||
199 | sb[15].StatID = (uint) Stats.UnAckedBytes; | ||
200 | sb[15].StatValue = m_unAckedBytes; | ||
165 | 201 | ||
166 | statpack.Stat = sb; | 202 | statpack.Stat = sb; |
167 | 203 | ||
@@ -181,8 +217,15 @@ namespace OpenSim.Region.Environment.Scenes | |||
181 | m_inPacketsPerSecond = 0; | 217 | m_inPacketsPerSecond = 0; |
182 | m_outPacketsPerSecond = 0; | 218 | m_outPacketsPerSecond = 0; |
183 | m_unAckedBytes = 0; | 219 | m_unAckedBytes = 0; |
220 | m_frameMS = 0; | ||
221 | m_netMS = 0; | ||
222 | m_physicsMS = 0; | ||
223 | m_imageMS = 0; | ||
224 | m_otherMS = 0; | ||
184 | } | 225 | } |
185 | 226 | ||
227 | |||
228 | |||
186 | public void SetTimeDilation(float td) | 229 | public void SetTimeDilation(float td) |
187 | { | 230 | { |
188 | m_timeDilation = td; | 231 | m_timeDilation = td; |
@@ -242,5 +285,26 @@ namespace OpenSim.Region.Environment.Scenes | |||
242 | { | 285 | { |
243 | m_unAckedBytes += numBytes; | 286 | m_unAckedBytes += numBytes; |
244 | } | 287 | } |
288 | |||
289 | public void addFrameMS(int ms) | ||
290 | { | ||
291 | m_frameMS += ms; | ||
292 | } | ||
293 | public void addNetMS(int ms) | ||
294 | { | ||
295 | m_netMS += ms; | ||
296 | } | ||
297 | public void addPhysicsMS(int ms) | ||
298 | { | ||
299 | m_physicsMS += ms; | ||
300 | } | ||
301 | public void addImageMS(int ms) | ||
302 | { | ||
303 | m_imageMS += ms; | ||
304 | } | ||
305 | public void addOtherMS(int ms) | ||
306 | { | ||
307 | m_otherMS += ms; | ||
308 | } | ||
245 | } | 309 | } |
246 | } | 310 | } |