From e464bf5d828edf9d48f7922730f2a106baf4ea35 Mon Sep 17 00:00:00 2001
From: UbitUmarov
Date: Wed, 21 Oct 2015 18:34:06 +0100
Subject: recover scripts execution time stat i lost on previus changes.
Behing async, this will not add with other time stats giving total frame
time, as happens on other simulators. But its a good diag stat.
---
OpenSim/Region/Framework/Scenes/Scene.cs | 11 +++++++----
OpenSim/Region/Framework/Scenes/SimStatsReporter.cs | 4 +++-
2 files changed, 10 insertions(+), 5 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index e47aa9c..c61a23d 100755
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1904,14 +1904,17 @@ namespace OpenSim.Region.Framework.Scenes
}
///
- /// Returns the total execution time of all the scripts in the region since the last frame
- /// (in milliseconds), and clears the value in preparation for the next frame.
+ /// Returns the total execution time of all the scripts in the region since the last call
+ /// (in milliseconds), and clears the value in preparation for the next call.
///
/// Time in milliseconds
- private long GetAndResetScriptExecutionTime()
+
+ // Warning: this is now called from StatsReporter, and can't be shared
+
+ public long GetAndResetScriptExecutionTime()
{
long ticks = Interlocked.Exchange(ref m_scriptExecutionTime, 0);
- return (ticks * 1000) / Stopwatch.Frequency;
+ return (ticks * 1000L) / Stopwatch.Frequency;
}
public void AddGroupTarget(SceneObjectGroup grp)
diff --git a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
index 7f6a1cd..5fe0551 100755
--- a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
+++ b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
@@ -412,6 +412,8 @@ namespace OpenSim.Region.Framework.Scenes
if (m_otherMS < 0)
m_otherMS = 0;
+ float scriptTimeMS = m_scene.GetAndResetScriptExecutionTime();
+
for (int i = 0; i < m_statisticViewerArraySize; i++)
{
sb[i] = new SimStatsPacket.StatBlock();
@@ -533,7 +535,7 @@ namespace OpenSim.Region.Framework.Scenes
sb[36].StatValue = 0;
sb[37].StatID = (uint)Stats.ScriptMS;
- sb[37].StatValue = 0;
+ sb[37].StatValue = scriptTimeMS * perframefactor;
for (int i = 0; i < m_statisticViewerArraySize; i++)
--
cgit v1.1