diff options
author | Teravus Ovares (Dan Olivares) | 2009-11-29 05:06:25 -0500 |
---|---|---|
committer | Teravus Ovares (Dan Olivares) | 2009-11-29 05:06:25 -0500 |
commit | 4338f4e1d7c841ba447eb2d7481daaa009182bc7 (patch) | |
tree | 12a3822843fbd40beb1cd7149203bd20e4db79c1 /OpenSim | |
parent | Add some conditionals to references to the WorldComm module, so that the (diff) | |
download | opensim-SC-4338f4e1d7c841ba447eb2d7481daaa009182bc7.zip opensim-SC-4338f4e1d7c841ba447eb2d7481daaa009182bc7.tar.gz opensim-SC-4338f4e1d7c841ba447eb2d7481daaa009182bc7.tar.bz2 opensim-SC-4338f4e1d7c841ba447eb2d7481daaa009182bc7.tar.xz |
* Patch from Misterblue to fix Environment.TickCount for statistics purposes. Resolves the wrap-around of the 32 bit uint.
* Teravus moved the Environment methods to the Util class
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Framework/Util.cs | 26 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs | 5 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 118 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 60 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SimStatsReporter.cs | 5 |
5 files changed, 132 insertions, 82 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 87ba5a8..a459f8d 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -1389,6 +1389,30 @@ namespace OpenSim.Framework | |||
1389 | return null; | 1389 | return null; |
1390 | } | 1390 | } |
1391 | 1391 | ||
1392 | #endregion FireAndForget Threading Pattern | 1392 | #endregion FireAndForget Threading Pattern |
1393 | /// <summary> | ||
1394 | /// Environment.TickCount is an int but it counts all 32 bits so it goes positive | ||
1395 | /// and negative every 24.9 days. This trims down TickCount so it doesn't wrap | ||
1396 | /// for the callers. | ||
1397 | /// This trims it to a 12 day interval so don't let your frame time get too long. | ||
1398 | /// </summary> | ||
1399 | /// <returns></returns> | ||
1400 | public static Int32 EnvironmentTickCount() | ||
1401 | { | ||
1402 | return Environment.TickCount & EnvironmentTickCountMask; | ||
1403 | } | ||
1404 | const Int32 EnvironmentTickCountMask = 0x3fffffff; | ||
1405 | |||
1406 | /// <summary> | ||
1407 | /// Environment.TickCount is an int but it counts all 32 bits so it goes positive | ||
1408 | /// and negative every 24.9 days. Subtracts the passed value (previously fetched by | ||
1409 | /// 'EnvironmentTickCount()') and accounts for any wrapping. | ||
1410 | /// </summary> | ||
1411 | /// <returns>subtraction of passed prevValue from current Environment.TickCount</returns> | ||
1412 | public static Int32 EnvironmentTickCountSubtract(Int32 prevValue) | ||
1413 | { | ||
1414 | Int32 diff = EnvironmentTickCount() - prevValue; | ||
1415 | return (diff >= 0) ? diff : (diff + EnvironmentTickCountMask + 1); | ||
1416 | } | ||
1393 | } | 1417 | } |
1394 | } | 1418 | } |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 9856a1c..1e5f15a 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs | |||
@@ -28,6 +28,7 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Net; | 30 | using System.Net; |
31 | using System.Threading; | ||
31 | using log4net; | 32 | using log4net; |
32 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
33 | using OpenMetaverse; | 34 | using OpenMetaverse; |
@@ -429,7 +430,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
429 | // Send the packet | 430 | // Send the packet |
430 | m_udpServer.SendPacketFinal(nextPacket); | 431 | m_udpServer.SendPacketFinal(nextPacket); |
431 | m_nextPackets[i] = null; | 432 | m_nextPackets[i] = null; |
432 | packetSent = true; | 433 | packetSent = true; |
434 | this.PacketsSent++; | ||
433 | } | 435 | } |
434 | } | 436 | } |
435 | else | 437 | else |
@@ -446,6 +448,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
446 | // Send the packet | 448 | // Send the packet |
447 | m_udpServer.SendPacketFinal(packet); | 449 | m_udpServer.SendPacketFinal(packet); |
448 | packetSent = true; | 450 | packetSent = true; |
451 | this.PacketsSent++; | ||
449 | } | 452 | } |
450 | else | 453 | else |
451 | { | 454 | { |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index fbabb5c..a3f3d8f 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -310,7 +310,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
310 | private Thread HeartbeatThread; | 310 | private Thread HeartbeatThread; |
311 | private volatile bool shuttingdown; | 311 | private volatile bool shuttingdown; |
312 | 312 | ||
313 | private int m_lastUpdate = Environment.TickCount; | 313 | private int m_lastUpdate; |
314 | private bool m_firstHeartbeat = true; | 314 | private bool m_firstHeartbeat = true; |
315 | 315 | ||
316 | private UpdatePrioritizationSchemes m_update_prioritization_scheme = UpdatePrioritizationSchemes.Time; | 316 | private UpdatePrioritizationSchemes m_update_prioritization_scheme = UpdatePrioritizationSchemes.Time; |
@@ -526,6 +526,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
526 | m_regionHandle = m_regInfo.RegionHandle; | 526 | m_regionHandle = m_regInfo.RegionHandle; |
527 | m_regionName = m_regInfo.RegionName; | 527 | m_regionName = m_regInfo.RegionName; |
528 | m_datastore = m_regInfo.DataStore; | 528 | m_datastore = m_regInfo.DataStore; |
529 | m_lastUpdate = Util.EnvironmentTickCount(); | ||
529 | 530 | ||
530 | m_physicalPrim = physicalPrim; | 531 | m_physicalPrim = physicalPrim; |
531 | m_seeIntoRegionFromNeighbor = SeeIntoRegionFromNeighbor; | 532 | m_seeIntoRegionFromNeighbor = SeeIntoRegionFromNeighbor; |
@@ -735,6 +736,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
735 | 736 | ||
736 | m_regInfo = regInfo; | 737 | m_regInfo = regInfo; |
737 | m_eventManager = new EventManager(); | 738 | m_eventManager = new EventManager(); |
739 | |||
740 | m_lastUpdate = Util.EnvironmentTickCount(); | ||
738 | } | 741 | } |
739 | 742 | ||
740 | #endregion | 743 | #endregion |
@@ -1089,7 +1092,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1089 | HeartbeatThread.Abort(); | 1092 | HeartbeatThread.Abort(); |
1090 | HeartbeatThread = null; | 1093 | HeartbeatThread = null; |
1091 | } | 1094 | } |
1092 | m_lastUpdate = Environment.TickCount; | 1095 | m_lastUpdate = Util.EnvironmentTickCount(); |
1093 | 1096 | ||
1094 | HeartbeatThread = Watchdog.StartThread(Heartbeat, "Heartbeat for region " + RegionInfo.RegionName, ThreadPriority.Normal, false); | 1097 | HeartbeatThread = Watchdog.StartThread(Heartbeat, "Heartbeat for region " + RegionInfo.RegionName, ThreadPriority.Normal, false); |
1095 | } | 1098 | } |
@@ -1130,7 +1133,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1130 | { | 1133 | { |
1131 | Update(); | 1134 | Update(); |
1132 | 1135 | ||
1133 | m_lastUpdate = Environment.TickCount; | 1136 | m_lastUpdate = Util.EnvironmentTickCount(); |
1134 | m_firstHeartbeat = false; | 1137 | m_firstHeartbeat = false; |
1135 | } | 1138 | } |
1136 | catch (ThreadAbortException) | 1139 | catch (ThreadAbortException) |
@@ -1156,10 +1159,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1156 | while (!shuttingdown) | 1159 | while (!shuttingdown) |
1157 | { | 1160 | { |
1158 | TimeSpan SinceLastFrame = DateTime.UtcNow - m_lastupdate; | 1161 | TimeSpan SinceLastFrame = DateTime.UtcNow - m_lastupdate; |
1159 | physicsFPS = 0f; | 1162 | physicsFPS = 0f; |
1160 | 1163 | ||
1161 | maintc = otherMS = Environment.TickCount; | 1164 | maintc = Util.EnvironmentTickCount(); |
1162 | int tmpFrameMS = maintc; | 1165 | int tmpFrameMS = maintc; |
1166 | tempOnRezMS = eventMS = backupMS = terrainMS = landMS = 0; | ||
1163 | 1167 | ||
1164 | // Increment the frame counter | 1168 | // Increment the frame counter |
1165 | ++m_frame; | 1169 | ++m_frame; |
@@ -1179,74 +1183,65 @@ namespace OpenSim.Region.Framework.Scenes | |||
1179 | if (m_frame % m_update_presences == 0) | 1183 | if (m_frame % m_update_presences == 0) |
1180 | m_sceneGraph.UpdatePresences(); | 1184 | m_sceneGraph.UpdatePresences(); |
1181 | 1185 | ||
1182 | int TempPhysicsMS2 = Environment.TickCount; | 1186 | int tmpPhysicsMS2 = Util.EnvironmentTickCount(); |
1183 | if ((m_frame % m_update_physics == 0) && m_physics_enabled) | 1187 | if ((m_frame % m_update_physics == 0) && m_physics_enabled) |
1184 | m_sceneGraph.UpdatePreparePhysics(); | 1188 | m_sceneGraph.UpdatePreparePhysics(); |
1185 | TempPhysicsMS2 = Environment.TickCount - TempPhysicsMS2; | 1189 | physicsMS2 = Util.EnvironmentTickCountSubtract(tmpPhysicsMS2); |
1186 | physicsMS2 = TempPhysicsMS2; | ||
1187 | 1190 | ||
1188 | if (m_frame % m_update_entitymovement == 0) | 1191 | if (m_frame % m_update_entitymovement == 0) |
1189 | m_sceneGraph.UpdateScenePresenceMovement(); | 1192 | m_sceneGraph.UpdateScenePresenceMovement(); |
1190 | 1193 | ||
1191 | int TempPhysicsMS = Environment.TickCount; | 1194 | int tmpPhysicsMS = Util.EnvironmentTickCount(); |
1192 | if (m_frame % m_update_physics == 0) | 1195 | if (m_frame % m_update_physics == 0) |
1193 | { | 1196 | { |
1194 | if (m_physics_enabled) | 1197 | if (m_physics_enabled) |
1195 | physicsFPS = m_sceneGraph.UpdatePhysics(Math.Max(SinceLastFrame.TotalSeconds, m_timespan)); | 1198 | physicsFPS = m_sceneGraph.UpdatePhysics(Math.Max(SinceLastFrame.TotalSeconds, m_timespan)); |
1196 | if (SynchronizeScene != null) | 1199 | if (SynchronizeScene != null) |
1197 | SynchronizeScene(this); | 1200 | SynchronizeScene(this); |
1198 | } | 1201 | } |
1199 | TempPhysicsMS = Environment.TickCount - TempPhysicsMS; | 1202 | physicsMS = Util.EnvironmentTickCountSubtract(tmpPhysicsMS); |
1200 | physicsMS = TempPhysicsMS; | ||
1201 | 1203 | ||
1202 | // Delete temp-on-rez stuff | 1204 | // Delete temp-on-rez stuff |
1203 | if (m_frame % m_update_backup == 0) | 1205 | if (m_frame % m_update_backup == 0) |
1204 | { | 1206 | { |
1205 | int tozMS = Environment.TickCount; | 1207 | int tmpTempOnRezMS = Util.EnvironmentTickCount(); |
1206 | CleanTempObjects(); | 1208 | CleanTempObjects(); |
1207 | tozMS -= Environment.TickCount; | 1209 | tempOnRezMS = Util.EnvironmentTickCountSubtract(tmpTempOnRezMS); |
1208 | tempOnRezMS = tozMS; | ||
1209 | } | 1210 | } |
1210 | 1211 | ||
1211 | if (RegionStatus != RegionStatus.SlaveScene) | 1212 | if (RegionStatus != RegionStatus.SlaveScene) |
1212 | { | 1213 | { |
1213 | if (m_frame % m_update_events == 0) | 1214 | if (m_frame % m_update_events == 0) |
1214 | { | 1215 | { |
1215 | int evMS = Environment.TickCount; | 1216 | int evMS = Util.EnvironmentTickCount(); |
1216 | UpdateEvents(); | 1217 | UpdateEvents(); |
1217 | evMS -= Environment.TickCount; | 1218 | eventMS = Util.EnvironmentTickCountSubtract(evMS); ; |
1218 | eventMS = evMS; | ||
1219 | } | 1219 | } |
1220 | 1220 | ||
1221 | if (m_frame % m_update_backup == 0) | 1221 | if (m_frame % m_update_backup == 0) |
1222 | { | 1222 | { |
1223 | int backMS = Environment.TickCount; | 1223 | int backMS = Util.EnvironmentTickCount(); |
1224 | UpdateStorageBackup(); | 1224 | UpdateStorageBackup(); |
1225 | backMS -= Environment.TickCount; | 1225 | backupMS = Util.EnvironmentTickCountSubtract(backMS); |
1226 | backupMS = backMS; | ||
1227 | } | 1226 | } |
1228 | 1227 | ||
1229 | if (m_frame % m_update_terrain == 0) | 1228 | if (m_frame % m_update_terrain == 0) |
1230 | { | 1229 | { |
1231 | int terMS = Environment.TickCount; | 1230 | int terMS = Util.EnvironmentTickCount(); |
1232 | UpdateTerrain(); | 1231 | UpdateTerrain(); |
1233 | terMS -= Environment.TickCount; | 1232 | terrainMS = Util.EnvironmentTickCountSubtract(terMS); |
1234 | terrainMS = terMS; | ||
1235 | } | 1233 | } |
1236 | 1234 | ||
1237 | if (m_frame % m_update_land == 0) | 1235 | if (m_frame % m_update_land == 0) |
1238 | { | 1236 | { |
1239 | int ldMS = Environment.TickCount; | 1237 | int ldMS = Util.EnvironmentTickCount(); |
1240 | UpdateLand(); | 1238 | UpdateLand(); |
1241 | ldMS -= Environment.TickCount; | 1239 | landMS = Util.EnvironmentTickCountSubtract(ldMS); |
1242 | landMS = ldMS; | 1240 | } |
1243 | } | 1241 | |
1244 | 1242 | frameMS = Util.EnvironmentTickCountSubtract(tmpFrameMS); | |
1245 | int tickCount = Environment.TickCount; | 1243 | otherMS = tempOnRezMS + eventMS + backupMS + terrainMS + landMS; |
1246 | otherMS = tickCount - otherMS; | 1244 | lastCompletedFrame = Util.EnvironmentTickCount(); |
1247 | tmpFrameMS -= tickCount; | ||
1248 | frameMS = tmpFrameMS; | ||
1249 | lastCompletedFrame = tickCount; | ||
1250 | 1245 | ||
1251 | // if (m_frame%m_update_avatars == 0) | 1246 | // if (m_frame%m_update_avatars == 0) |
1252 | // UpdateInWorldTime(); | 1247 | // UpdateInWorldTime(); |
@@ -1298,9 +1293,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
1298 | finally | 1293 | finally |
1299 | { | 1294 | { |
1300 | m_lastupdate = DateTime.UtcNow; | 1295 | m_lastupdate = DateTime.UtcNow; |
1301 | } | 1296 | } |
1302 | 1297 | ||
1303 | maintc = Environment.TickCount - maintc; | 1298 | maintc = Util.EnvironmentTickCountSubtract(maintc); |
1304 | maintc = (int)(m_timespan * 1000) - maintc; | 1299 | maintc = (int)(m_timespan * 1000) - maintc; |
1305 | 1300 | ||
1306 | if ((maintc < (m_timespan * 1000)) && maintc > 0) | 1301 | if ((maintc < (m_timespan * 1000)) && maintc > 0) |
@@ -1311,6 +1306,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1311 | } | 1306 | } |
1312 | } | 1307 | } |
1313 | 1308 | ||
1309 | |||
1314 | 1310 | ||
1315 | public void AddGroupTarget(SceneObjectGroup grp) | 1311 | public void AddGroupTarget(SceneObjectGroup grp) |
1316 | { | 1312 | { |
@@ -2585,9 +2581,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
2585 | sp.IsChildAgent = false; | 2581 | sp.IsChildAgent = false; |
2586 | Util.FireAndForget(delegate(object o) { sp.RezAttachments(); }); | 2582 | Util.FireAndForget(delegate(object o) { sp.RezAttachments(); }); |
2587 | } | 2583 | } |
2588 | } | 2584 | } |
2589 | 2585 | ||
2590 | m_LastLogin = Environment.TickCount; | 2586 | m_LastLogin = Util.EnvironmentTickCount(); |
2591 | EventManager.TriggerOnNewClient(client); | 2587 | EventManager.TriggerOnNewClient(client); |
2592 | } | 2588 | } |
2593 | 2589 | ||
@@ -4654,16 +4650,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
4654 | // 3 = We have seen a new user enter within the past 4 minutes | 4650 | // 3 = We have seen a new user enter within the past 4 minutes |
4655 | // which can be seen as positive confirmation of sim health | 4651 | // which can be seen as positive confirmation of sim health |
4656 | // | 4652 | // |
4657 | int health=1; // Start at 1, means we're up | 4653 | int health=1; // Start at 1, means we're up |
4658 | 4654 | ||
4659 | if ((Environment.TickCount - m_lastUpdate) < 1000) | 4655 | if ((Util.EnvironmentTickCountSubtract(m_lastUpdate)) < 1000) |
4660 | health+=1; | 4656 | health+=1; |
4661 | else | 4657 | else |
4662 | return health; | 4658 | return health; |
4663 | 4659 | ||
4664 | // A login in the last 4 mins? We can't be doing too badly | 4660 | // A login in the last 4 mins? We can't be doing too badly |
4665 | // | 4661 | // |
4666 | if ((Environment.TickCount - m_LastLogin) < 240000) | 4662 | if ((Util.EnvironmentTickCountSubtract(m_LastLogin)) < 240000) |
4667 | health++; | 4663 | health++; |
4668 | else | 4664 | else |
4669 | return health; | 4665 | return health; |
@@ -4859,9 +4855,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
4859 | private void CheckHeartbeat() | 4855 | private void CheckHeartbeat() |
4860 | { | 4856 | { |
4861 | if (m_firstHeartbeat) | 4857 | if (m_firstHeartbeat) |
4862 | return; | 4858 | return; |
4863 | 4859 | ||
4864 | if (System.Environment.TickCount - m_lastUpdate > 2000) | 4860 | if (Util.EnvironmentTickCountSubtract(m_lastUpdate) > 2000) |
4865 | StartTimer(); | 4861 | StartTimer(); |
4866 | } | 4862 | } |
4867 | } | 4863 | } |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 5604e3d..bcad335 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -755,13 +755,37 @@ namespace OpenSim.Region.Framework.Scenes | |||
755 | /// </summary> | 755 | /// </summary> |
756 | public void SendPrimUpdates() | 756 | public void SendPrimUpdates() |
757 | { | 757 | { |
758 | m_perfMonMS = Environment.TickCount; | 758 | m_perfMonMS = EnvironmentTickCount(); |
759 | 759 | ||
760 | m_sceneViewer.SendPrimUpdates(); | 760 | m_sceneViewer.SendPrimUpdates(); |
761 | 761 | ||
762 | m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS); | 762 | m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); |
763 | } | 763 | } |
764 | 764 | ||
765 | /// <summary> | ||
766 | /// Environment.TickCount is an int but it counts all 32 bits so it goes positive | ||
767 | /// and negative every 24.9 days. This trims down TickCount so it doesn't wrap | ||
768 | /// for the callers. | ||
769 | /// This trims it to a 12 day interval so don't let your frame time get too long. | ||
770 | /// </summary> | ||
771 | /// <returns></returns> | ||
772 | const Int32 EnvironmentTickCountMask = 0x3fffffff; | ||
773 | private static Int32 EnvironmentTickCount() { | ||
774 | return Environment.TickCount & EnvironmentTickCountMask; | ||
775 | } | ||
776 | |||
777 | /// <summary> | ||
778 | /// Environment.TickCount is an int but it counts all 32 bits so it goes positive | ||
779 | /// and negative every 24.9 days. Subtracts the passed value (previously fetched by | ||
780 | /// 'EnvironmentTickCount()') and accounts for any wrapping. | ||
781 | /// </summary> | ||
782 | /// <returns>subtraction of passed prevValue from current Environment.TickCount</returns> | ||
783 | private static Int32 EnvironmentTickCountSubtract(Int32 prevValue) { | ||
784 | Int32 diff = EnvironmentTickCount() - prevValue; | ||
785 | return (diff >= 0) ? diff : (diff + EnvironmentTickCountMask + 1); | ||
786 | } | ||
787 | |||
788 | |||
765 | #region Status Methods | 789 | #region Status Methods |
766 | 790 | ||
767 | /// <summary> | 791 | /// <summary> |
@@ -1148,7 +1172,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1148 | // return; | 1172 | // return; |
1149 | //} | 1173 | //} |
1150 | 1174 | ||
1151 | m_perfMonMS = Environment.TickCount; | 1175 | m_perfMonMS = EnvironmentTickCount(); |
1152 | 1176 | ||
1153 | ++m_movementUpdateCount; | 1177 | ++m_movementUpdateCount; |
1154 | if (m_movementUpdateCount < 1) | 1178 | if (m_movementUpdateCount < 1) |
@@ -1464,7 +1488,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1464 | 1488 | ||
1465 | m_scene.EventManager.TriggerOnClientMovement(this); | 1489 | m_scene.EventManager.TriggerOnClientMovement(this); |
1466 | 1490 | ||
1467 | m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS); | 1491 | m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); |
1468 | } | 1492 | } |
1469 | 1493 | ||
1470 | public void DoAutoPilot(uint not_used, Vector3 Pos, IClientAPI remote_client) | 1494 | public void DoAutoPilot(uint not_used, Vector3 Pos, IClientAPI remote_client) |
@@ -1924,7 +1948,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1924 | return; | 1948 | return; |
1925 | } | 1949 | } |
1926 | 1950 | ||
1927 | m_perfMonMS = Environment.TickCount; | 1951 | m_perfMonMS = EnvironmentTickCount(); |
1928 | 1952 | ||
1929 | Rotation = rotation; | 1953 | Rotation = rotation; |
1930 | Vector3 direc = vec * rotation; | 1954 | Vector3 direc = vec * rotation; |
@@ -1966,7 +1990,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1966 | // TODO: Add the force instead of only setting it to support multiple forces per frame? | 1990 | // TODO: Add the force instead of only setting it to support multiple forces per frame? |
1967 | m_forceToApply = direc; | 1991 | m_forceToApply = direc; |
1968 | 1992 | ||
1969 | m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS); | 1993 | m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); |
1970 | } | 1994 | } |
1971 | 1995 | ||
1972 | #endregion | 1996 | #endregion |
@@ -2032,7 +2056,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2032 | // server. | 2056 | // server. |
2033 | if (remoteClient.IsActive) | 2057 | if (remoteClient.IsActive) |
2034 | { | 2058 | { |
2035 | m_perfMonMS = Environment.TickCount; | 2059 | m_perfMonMS = EnvironmentTickCount(); |
2036 | 2060 | ||
2037 | PhysicsActor actor = m_physicsActor; | 2061 | PhysicsActor actor = m_physicsActor; |
2038 | Vector3 velocity = (actor != null) ? actor.Velocity : Vector3.Zero; | 2062 | Vector3 velocity = (actor != null) ? actor.Velocity : Vector3.Zero; |
@@ -2045,7 +2069,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2045 | remoteClient.SendAvatarTerseUpdate(new SendAvatarTerseData(m_rootRegionHandle, (ushort)(m_scene.TimeDilation * ushort.MaxValue), LocalId, | 2069 | remoteClient.SendAvatarTerseUpdate(new SendAvatarTerseData(m_rootRegionHandle, (ushort)(m_scene.TimeDilation * ushort.MaxValue), LocalId, |
2046 | pos, velocity, Vector3.Zero, m_bodyRot, CollisionPlane, m_uuid, null, GetUpdatePriority(remoteClient))); | 2070 | pos, velocity, Vector3.Zero, m_bodyRot, CollisionPlane, m_uuid, null, GetUpdatePriority(remoteClient))); |
2047 | 2071 | ||
2048 | m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS); | 2072 | m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); |
2049 | m_scene.StatsReporter.AddAgentUpdates(1); | 2073 | m_scene.StatsReporter.AddAgentUpdates(1); |
2050 | } | 2074 | } |
2051 | } | 2075 | } |
@@ -2055,11 +2079,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
2055 | /// </summary> | 2079 | /// </summary> |
2056 | public void SendTerseUpdateToAllClients() | 2080 | public void SendTerseUpdateToAllClients() |
2057 | { | 2081 | { |
2058 | m_perfMonMS = Environment.TickCount; | 2082 | m_perfMonMS = EnvironmentTickCount(); |
2059 | 2083 | ||
2060 | m_scene.ForEachClient(SendTerseUpdateToClient); | 2084 | m_scene.ForEachClient(SendTerseUpdateToClient); |
2061 | 2085 | ||
2062 | m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS); | 2086 | m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); |
2063 | } | 2087 | } |
2064 | 2088 | ||
2065 | public void SendCoarseLocations() | 2089 | public void SendCoarseLocations() |
@@ -2079,7 +2103,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2079 | 2103 | ||
2080 | public void SendCoarseLocationsDefault(UUID sceneId, ScenePresence p) | 2104 | public void SendCoarseLocationsDefault(UUID sceneId, ScenePresence p) |
2081 | { | 2105 | { |
2082 | m_perfMonMS = Environment.TickCount; | 2106 | m_perfMonMS = EnvironmentTickCount(); |
2083 | 2107 | ||
2084 | List<Vector3> CoarseLocations = new List<Vector3>(); | 2108 | List<Vector3> CoarseLocations = new List<Vector3>(); |
2085 | List<UUID> AvatarUUIDs = new List<UUID>(); | 2109 | List<UUID> AvatarUUIDs = new List<UUID>(); |
@@ -2115,7 +2139,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2115 | 2139 | ||
2116 | m_controllingClient.SendCoarseLocationUpdate(AvatarUUIDs, CoarseLocations); | 2140 | m_controllingClient.SendCoarseLocationUpdate(AvatarUUIDs, CoarseLocations); |
2117 | 2141 | ||
2118 | m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS); | 2142 | m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); |
2119 | } | 2143 | } |
2120 | 2144 | ||
2121 | public void CoarseLocationChange() | 2145 | public void CoarseLocationChange() |
@@ -2152,7 +2176,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2152 | /// </summary> | 2176 | /// </summary> |
2153 | public void SendInitialFullUpdateToAllClients() | 2177 | public void SendInitialFullUpdateToAllClients() |
2154 | { | 2178 | { |
2155 | m_perfMonMS = Environment.TickCount; | 2179 | m_perfMonMS = EnvironmentTickCount(); |
2156 | 2180 | ||
2157 | ScenePresence[] avatars = m_scene.GetScenePresences(); | 2181 | ScenePresence[] avatars = m_scene.GetScenePresences(); |
2158 | 2182 | ||
@@ -2178,14 +2202,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
2178 | } | 2202 | } |
2179 | 2203 | ||
2180 | m_scene.StatsReporter.AddAgentUpdates(avatars.Length); | 2204 | m_scene.StatsReporter.AddAgentUpdates(avatars.Length); |
2181 | m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS); | 2205 | m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); |
2182 | 2206 | ||
2183 | //Animator.SendAnimPack(); | 2207 | //Animator.SendAnimPack(); |
2184 | } | 2208 | } |
2185 | 2209 | ||
2186 | public void SendFullUpdateToAllClients() | 2210 | public void SendFullUpdateToAllClients() |
2187 | { | 2211 | { |
2188 | m_perfMonMS = Environment.TickCount; | 2212 | m_perfMonMS = EnvironmentTickCount(); |
2189 | 2213 | ||
2190 | // only send update from root agents to other clients; children are only "listening posts" | 2214 | // only send update from root agents to other clients; children are only "listening posts" |
2191 | List<ScenePresence> avatars = m_scene.GetAvatars(); | 2215 | List<ScenePresence> avatars = m_scene.GetAvatars(); |
@@ -2195,7 +2219,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2195 | 2219 | ||
2196 | } | 2220 | } |
2197 | m_scene.StatsReporter.AddAgentUpdates(avatars.Count); | 2221 | m_scene.StatsReporter.AddAgentUpdates(avatars.Count); |
2198 | m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS); | 2222 | m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); |
2199 | 2223 | ||
2200 | Animator.SendAnimPack(); | 2224 | Animator.SendAnimPack(); |
2201 | } | 2225 | } |
@@ -2237,7 +2261,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2237 | /// </summary> | 2261 | /// </summary> |
2238 | public void SendAppearanceToAllOtherAgents() | 2262 | public void SendAppearanceToAllOtherAgents() |
2239 | { | 2263 | { |
2240 | m_perfMonMS = Environment.TickCount; | 2264 | m_perfMonMS = EnvironmentTickCount(); |
2241 | 2265 | ||
2242 | m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) | 2266 | m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) |
2243 | { | 2267 | { |
@@ -2247,7 +2271,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2247 | } | 2271 | } |
2248 | }); | 2272 | }); |
2249 | 2273 | ||
2250 | m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS); | 2274 | m_scene.StatsReporter.AddAgentTime(EnvironmentTickCountSubtract(m_perfMonMS)); |
2251 | } | 2275 | } |
2252 | 2276 | ||
2253 | /// <summary> | 2277 | /// <summary> |
diff --git a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs index 3b5455f..f92f440 100644 --- a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs +++ b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs | |||
@@ -193,6 +193,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
193 | // / 10 divides the value by the number of times the sim heartbeat runs (10fps) | 193 | // / 10 divides the value by the number of times the sim heartbeat runs (10fps) |
194 | // Then we divide the whole amount by the amount of seconds pass in between stats updates. | 194 | // Then we divide the whole amount by the amount of seconds pass in between stats updates. |
195 | 195 | ||
196 | // 'statsUpdateFactor' is how often stats packets are sent in seconds. Used below to change | ||
197 | // values to X-per-second values. | ||
198 | |||
196 | for (int i = 0; i<21;i++) | 199 | for (int i = 0; i<21;i++) |
197 | { | 200 | { |
198 | sb[i] = new SimStatsPacket.StatBlock(); | 201 | sb[i] = new SimStatsPacket.StatBlock(); |
@@ -237,7 +240,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
237 | sb[12].StatID = (uint)Stats.OtherMS; | 240 | sb[12].StatID = (uint)Stats.OtherMS; |
238 | sb[12].StatValue = m_otherMS / statsUpdateFactor; | 241 | sb[12].StatValue = m_otherMS / statsUpdateFactor; |
239 | 242 | ||
240 | sb[13].StatID = (uint)Stats.InPacketsPerSecond; | 243 | sb[13].StatID = (uint)Stats.InPacketsPerSecond; |
241 | sb[13].StatValue = (m_inPacketsPerSecond / statsUpdateFactor); | 244 | sb[13].StatValue = (m_inPacketsPerSecond / statsUpdateFactor); |
242 | 245 | ||
243 | sb[14].StatID = (uint)Stats.OutPacketsPerSecond; | 246 | sb[14].StatID = (uint)Stats.OutPacketsPerSecond; |