diff options
author | Melanie | 2012-10-04 20:16:23 +0100 |
---|---|---|
committer | Melanie | 2012-10-04 20:16:23 +0100 |
commit | 637e9a10db25930a3a23b98fb8f3fe6040335bf4 (patch) | |
tree | 3df797463214861c86f7068280e6ab07b97c1066 /OpenSim/Region/Framework/Scenes/SimStatsReporter.cs | |
parent | Merge branch 'master' into careminster (diff) | |
parent | Allow default animation to be stopped to be replaced with another one. (diff) | |
download | opensim-SC-637e9a10db25930a3a23b98fb8f3fe6040335bf4.zip opensim-SC-637e9a10db25930a3a23b98fb8f3fe6040335bf4.tar.gz opensim-SC-637e9a10db25930a3a23b98fb8f3fe6040335bf4.tar.bz2 opensim-SC-637e9a10db25930a3a23b98fb8f3fe6040335bf4.tar.xz |
Merge branch 'master' into careminster
Conflicts:
OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SimStatsReporter.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SimStatsReporter.cs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs index 756b1f4..0d359b9 100644 --- a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs +++ b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs | |||
@@ -47,6 +47,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
47 | = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | 47 | = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); |
48 | 48 | ||
49 | public const string LastReportedObjectUpdateStatName = "LastReportedObjectUpdates"; | 49 | public const string LastReportedObjectUpdateStatName = "LastReportedObjectUpdates"; |
50 | public const string SlowFramesStatName = "SlowFrames"; | ||
50 | 51 | ||
51 | public delegate void SendStatResult(SimStats stats); | 52 | public delegate void SendStatResult(SimStats stats); |
52 | 53 | ||
@@ -129,6 +130,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
129 | } | 130 | } |
130 | 131 | ||
131 | /// <summary> | 132 | /// <summary> |
133 | /// Number of frames that have taken longer to process than Scene.MIN_FRAME_TIME | ||
134 | /// </summary> | ||
135 | public Stat SlowFramesStat { get; private set; } | ||
136 | |||
137 | /// <summary> | ||
138 | /// The threshold at which we log a slow frame. | ||
139 | /// </summary> | ||
140 | public int SlowFramesStatReportThreshold { get; private set; } | ||
141 | |||
142 | /// <summary> | ||
132 | /// Extra sim statistics that are used by monitors but not sent to the client. | 143 | /// Extra sim statistics that are used by monitors but not sent to the client. |
133 | /// </summary> | 144 | /// </summary> |
134 | /// <value> | 145 | /// <value> |
@@ -226,6 +237,22 @@ namespace OpenSim.Region.Framework.Scenes | |||
226 | 237 | ||
227 | if (StatsManager.SimExtraStats != null) | 238 | if (StatsManager.SimExtraStats != null) |
228 | OnSendStatsResult += StatsManager.SimExtraStats.ReceiveClassicSimStatsPacket; | 239 | OnSendStatsResult += StatsManager.SimExtraStats.ReceiveClassicSimStatsPacket; |
240 | |||
241 | /// At the moment, we'll only report if a frame is over 120% of target, since commonly frames are a bit | ||
242 | /// longer than ideal (which in itself is a concern). | ||
243 | SlowFramesStatReportThreshold = (int)Math.Ceiling(m_scene.MinFrameTime * 1000 * 1.2); | ||
244 | |||
245 | SlowFramesStat | ||
246 | = new Stat( | ||
247 | "SlowFrames", | ||
248 | "Slow Frames", | ||
249 | " frames", | ||
250 | "scene", | ||
251 | m_scene.Name, | ||
252 | StatVerbosity.Info, | ||
253 | "Number of frames where frame time has been significantly longer than the desired frame time."); | ||
254 | |||
255 | StatsManager.RegisterStat(SlowFramesStat); | ||
229 | } | 256 | } |
230 | 257 | ||
231 | public void Close() | 258 | public void Close() |
@@ -443,6 +470,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
443 | lock (m_lastReportedExtraSimStats) | 470 | lock (m_lastReportedExtraSimStats) |
444 | { | 471 | { |
445 | m_lastReportedExtraSimStats[LastReportedObjectUpdateStatName] = m_objectUpdates / m_statsUpdateFactor; | 472 | m_lastReportedExtraSimStats[LastReportedObjectUpdateStatName] = m_objectUpdates / m_statsUpdateFactor; |
473 | m_lastReportedExtraSimStats[SlowFramesStat.ShortName] = (float)SlowFramesStat.Value; | ||
446 | 474 | ||
447 | Dictionary<string, float> physicsStats = m_scene.PhysicsScene.GetStats(); | 475 | Dictionary<string, float> physicsStats = m_scene.PhysicsScene.GetStats(); |
448 | 476 | ||
@@ -563,6 +591,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
563 | public void addFrameMS(int ms) | 591 | public void addFrameMS(int ms) |
564 | { | 592 | { |
565 | m_frameMS += ms; | 593 | m_frameMS += ms; |
594 | |||
595 | // At the moment, we'll only report if a frame is over 120% of target, since commonly frames are a bit | ||
596 | // longer than ideal due to the inaccuracy of the Sleep in Scene.Update() (which in itself is a concern). | ||
597 | if (ms > SlowFramesStatReportThreshold) | ||
598 | SlowFramesStat.Value++; | ||
566 | } | 599 | } |
567 | 600 | ||
568 | public void addNetMS(int ms) | 601 | public void addNetMS(int ms) |