aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Monitoring/Stats/Stat.cs
diff options
context:
space:
mode:
authorRobert Adams2013-08-10 09:09:52 -0700
committerRobert Adams2013-08-10 09:09:52 -0700
commit216f5afe54576c4852974b8479ac95654dc9e08e (patch)
tree683c390a7870ba277edb00d38e2f1068423e7a3c /OpenSim/Framework/Monitoring/Stats/Stat.cs
parentminor: Consistently log IOCP for IO completion thread startup log information... (diff)
downloadopensim-SC-216f5afe54576c4852974b8479ac95654dc9e08e.zip
opensim-SC-216f5afe54576c4852974b8479ac95654dc9e08e.tar.gz
opensim-SC-216f5afe54576c4852974b8479ac95654dc9e08e.tar.bz2
opensim-SC-216f5afe54576c4852974b8479ac95654dc9e08e.tar.xz
Stats treaking. Update ToOSDMap for Stat and PercentageStat to return
all the various numbers that have been added to the console output. Break out EventHistogram from CounterStat.
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/Monitoring/Stats/Stat.cs46
1 files changed, 36 insertions, 10 deletions
diff --git a/OpenSim/Framework/Monitoring/Stats/Stat.cs b/OpenSim/Framework/Monitoring/Stats/Stat.cs
index ffd5132..2b34493 100644
--- a/OpenSim/Framework/Monitoring/Stats/Stat.cs
+++ b/OpenSim/Framework/Monitoring/Stats/Stat.cs
@@ -241,6 +241,8 @@ namespace OpenSim.Framework.Monitoring
241 public virtual OSDMap ToOSDMap() 241 public virtual OSDMap ToOSDMap()
242 { 242 {
243 OSDMap ret = new OSDMap(); 243 OSDMap ret = new OSDMap();
244 ret.Add("StatType", "Stat"); // used by overloading classes to denote type of stat
245
244 ret.Add("Category", OSD.FromString(Category)); 246 ret.Add("Category", OSD.FromString(Category));
245 ret.Add("Container", OSD.FromString(Container)); 247 ret.Add("Container", OSD.FromString(Container));
246 ret.Add("ShortName", OSD.FromString(ShortName)); 248 ret.Add("ShortName", OSD.FromString(ShortName));
@@ -248,26 +250,36 @@ namespace OpenSim.Framework.Monitoring
248 ret.Add("Description", OSD.FromString(Description)); 250 ret.Add("Description", OSD.FromString(Description));
249 ret.Add("UnitName", OSD.FromString(UnitName)); 251 ret.Add("UnitName", OSD.FromString(UnitName));
250 ret.Add("Value", OSD.FromReal(Value)); 252 ret.Add("Value", OSD.FromReal(Value));
251 ret.Add("StatType", "Stat"); // used by overloading classes to denote type of stat 253
254 double lastChangeOverTime, averageChangeOverTime;
255 if (ComputeMeasuresOfInterest(out lastChangeOverTime, out averageChangeOverTime))
256 {
257 ret.Add("LastChangeOverTime", OSD.FromReal(lastChangeOverTime));
258 ret.Add("AverageChangeOverTime", OSD.FromReal(averageChangeOverTime));
259 }
252 260
253 return ret; 261 return ret;
254 } 262 }
255 263
256 protected void AppendMeasuresOfInterest(StringBuilder sb) 264 // Compute the averages over time and return same.
265 // Return 'true' if averages were actually computed. 'false' if no average info.
266 public bool ComputeMeasuresOfInterest(out double lastChangeOverTime, out double averageChangeOverTime)
257 { 267 {
258 if ((MeasuresOfInterest & MeasuresOfInterest.AverageChangeOverTime) 268 bool ret = false;
259 == MeasuresOfInterest.AverageChangeOverTime) 269 lastChangeOverTime = 0;
270 averageChangeOverTime = 0;
271
272 if ((MeasuresOfInterest & MeasuresOfInterest.AverageChangeOverTime) == MeasuresOfInterest.AverageChangeOverTime)
260 { 273 {
261 double totalChange = 0; 274 double totalChange = 0;
262 double lastChangeOverTime = 0;
263 double? penultimateSample = null; 275 double? penultimateSample = null;
264 double? lastSample = null; 276 double? lastSample = null;
265 277
266 lock (m_samples) 278 lock (m_samples)
267 { 279 {
268// m_log.DebugFormat( 280 // m_log.DebugFormat(
269// "[STAT]: Samples for {0} are {1}", 281 // "[STAT]: Samples for {0} are {1}",
270// Name, string.Join(",", m_samples.Select(s => s.ToString()).ToArray())); 282 // Name, string.Join(",", m_samples.Select(s => s.ToString()).ToArray()));
271 283
272 foreach (double s in m_samples) 284 foreach (double s in m_samples)
273 { 285 {
@@ -280,13 +292,27 @@ namespace OpenSim.Framework.Monitoring
280 } 292 }
281 293
282 if (lastSample != null && penultimateSample != null) 294 if (lastSample != null && penultimateSample != null)
283 lastChangeOverTime 295 {
296 lastChangeOverTime
284 = ((double)lastSample - (double)penultimateSample) / (Watchdog.WATCHDOG_INTERVAL_MS / 1000); 297 = ((double)lastSample - (double)penultimateSample) / (Watchdog.WATCHDOG_INTERVAL_MS / 1000);
298 }
285 299
286 int divisor = m_samples.Count <= 1 ? 1 : m_samples.Count - 1; 300 int divisor = m_samples.Count <= 1 ? 1 : m_samples.Count - 1;
287 301
288 double averageChangeOverTime = totalChange / divisor / (Watchdog.WATCHDOG_INTERVAL_MS / 1000); 302 averageChangeOverTime = totalChange / divisor / (Watchdog.WATCHDOG_INTERVAL_MS / 1000);
303 ret = true;
304 }
305
306 return ret;
307 }
289 308
309 protected void AppendMeasuresOfInterest(StringBuilder sb)
310 {
311 double lastChangeOverTime = 0;
312 double averageChangeOverTime = 0;
313
314 if (ComputeMeasuresOfInterest(out lastChangeOverTime, out averageChangeOverTime))
315 {
290 sb.AppendFormat( 316 sb.AppendFormat(
291 ", {0:0.##}{1}/s, {2:0.##}{3}/s", 317 ", {0:0.##}{1}/s, {2:0.##}{3}/s",
292 lastChangeOverTime, 318 lastChangeOverTime,