diff options
Diffstat (limited to 'OpenSim/Region/Environment')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 23 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SimStatsReporter.cs | 110 |
3 files changed, 110 insertions, 25 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 86f43b3..9af43f5 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -125,6 +125,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
125 | private int m_update_land = 1; | 125 | private int m_update_land = 1; |
126 | private int m_update_avatars = 1; | 126 | private int m_update_avatars = 1; |
127 | 127 | ||
128 | private int frameMS = 0; | ||
129 | private int physicsMS2 = 0; | ||
130 | private int physicsMS = 0; | ||
131 | private int otherMS = 0; | ||
132 | |||
133 | |||
128 | #endregion | 134 | #endregion |
129 | 135 | ||
130 | #region Properties | 136 | #region Properties |
@@ -551,6 +557,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
551 | // Aquire a lock so only one update call happens at once | 557 | // Aquire a lock so only one update call happens at once |
552 | updateLock.WaitOne(); | 558 | updateLock.WaitOne(); |
553 | float physicsFPS = 0; | 559 | float physicsFPS = 0; |
560 | |||
561 | frameMS = System.Environment.TickCount; | ||
554 | try | 562 | try |
555 | { | 563 | { |
556 | // Increment the frame counter | 564 | // Increment the frame counter |
@@ -559,18 +567,26 @@ namespace OpenSim.Region.Environment.Scenes | |||
559 | // Loop it | 567 | // Loop it |
560 | if (m_frame == Int32.MaxValue) | 568 | if (m_frame == Int32.MaxValue) |
561 | m_frame = 0; | 569 | m_frame = 0; |
570 | |||
562 | 571 | ||
572 | physicsMS2 = System.Environment.TickCount; | ||
563 | if (m_frame%m_update_physics == 0) | 573 | if (m_frame%m_update_physics == 0) |
564 | m_innerScene.UpdatePreparePhysics(); | 574 | m_innerScene.UpdatePreparePhysics(); |
575 | physicsMS2 = System.Environment.TickCount - physicsMS2; | ||
565 | 576 | ||
566 | if (m_frame%m_update_entitymovement == 0) | 577 | if (m_frame%m_update_entitymovement == 0) |
567 | m_innerScene.UpdateEntityMovement(); | 578 | m_innerScene.UpdateEntityMovement(); |
568 | 579 | ||
580 | physicsMS = System.Environment.TickCount; | ||
569 | if (m_frame%m_update_physics == 0) | 581 | if (m_frame%m_update_physics == 0) |
570 | physicsFPS = m_innerScene.UpdatePhysics( | 582 | physicsFPS = m_innerScene.UpdatePhysics( |
571 | Math.Max(SinceLastFrame.TotalSeconds, m_timespan) | 583 | Math.Max(SinceLastFrame.TotalSeconds, m_timespan) |
572 | ); | 584 | ); |
585 | |||
586 | physicsMS = System.Environment.TickCount - physicsMS; | ||
587 | physicsMS += physicsMS2; | ||
573 | 588 | ||
589 | otherMS = System.Environment.TickCount; | ||
574 | if (m_frame%m_update_entities == 0) | 590 | if (m_frame%m_update_entities == 0) |
575 | m_innerScene.UpdateEntities(); | 591 | m_innerScene.UpdateEntities(); |
576 | 592 | ||
@@ -585,7 +601,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
585 | 601 | ||
586 | if (m_frame%m_update_land == 0) | 602 | if (m_frame%m_update_land == 0) |
587 | UpdateLand(); | 603 | UpdateLand(); |
588 | 604 | otherMS = System.Environment.TickCount - otherMS; | |
589 | // if (m_frame%m_update_avatars == 0) | 605 | // if (m_frame%m_update_avatars == 0) |
590 | // UpdateInWorldTime(); | 606 | // UpdateInWorldTime(); |
591 | m_statsReporter.AddPhysicsFPS(physicsFPS); | 607 | m_statsReporter.AddPhysicsFPS(physicsFPS); |
@@ -597,6 +613,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
597 | m_statsReporter.SetChildAgents(m_innerScene.GetChildAgentCount()); | 613 | m_statsReporter.SetChildAgents(m_innerScene.GetChildAgentCount()); |
598 | m_statsReporter.SetObjects(m_innerScene.GetTotalObjects()); | 614 | m_statsReporter.SetObjects(m_innerScene.GetTotalObjects()); |
599 | m_statsReporter.SetActiveObjects(m_innerScene.GetActiveObjects()); | 615 | m_statsReporter.SetActiveObjects(m_innerScene.GetActiveObjects()); |
616 | frameMS = System.Environment.TickCount - frameMS; | ||
617 | m_statsReporter.addFrameMS(frameMS); | ||
618 | m_statsReporter.addPhysicsMS(physicsMS); | ||
619 | m_statsReporter.addOtherMS(otherMS); | ||
620 | |||
600 | } | 621 | } |
601 | catch (NotImplementedException) | 622 | catch (NotImplementedException) |
602 | { | 623 | { |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 60ea480..660deaf 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | |||
@@ -327,7 +327,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
327 | } | 327 | } |
328 | else | 328 | else |
329 | { | 329 | { |
330 | // Child prim we have to calculate it's world rotation | 330 | // Child prim we have to calculate it's world rotationwel |
331 | LLQuaternion resultingrotation = GetWorldRotation(); | 331 | LLQuaternion resultingrotation = GetWorldRotation(); |
332 | PhysActor.Orientation = new Quaternion(resultingrotation.W, resultingrotation.X, resultingrotation.Y, resultingrotation.Z); | 332 | PhysActor.Orientation = new Quaternion(resultingrotation.W, resultingrotation.X, resultingrotation.Y, resultingrotation.Z); |
333 | //MainLog.Instance.Verbose("PART", "RO2:" + PhysActor.Orientation.ToString()); | 333 | //MainLog.Instance.Verbose("PART", "RO2:" + PhysActor.Orientation.ToString()); |
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 | } |