aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Monitoring
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2014-03-21 02:06:10 +0000
committerJustin Clark-Casey (justincc)2014-03-21 02:06:10 +0000
commit47e7febebcbd12d534b0ba248cb4bfc7da4c9d43 (patch)
tree1831e768f322b464990f6fbfc8bd1f3611d2c740 /OpenSim/Framework/Monitoring
parentAdd H-H-H to contributors (diff)
downloadopensim-SC-47e7febebcbd12d534b0ba248cb4bfc7da4c9d43.zip
opensim-SC-47e7febebcbd12d534b0ba248cb4bfc7da4c9d43.tar.gz
opensim-SC-47e7febebcbd12d534b0ba248cb4bfc7da4c9d43.tar.bz2
opensim-SC-47e7febebcbd12d534b0ba248cb4bfc7da4c9d43.tar.xz
Add monitored thread last update times as stats in "show stats all"
These have the format server.thread.<thread-name>
Diffstat (limited to 'OpenSim/Framework/Monitoring')
-rw-r--r--OpenSim/Framework/Monitoring/Watchdog.cs26
1 files changed, 26 insertions, 0 deletions
diff --git a/OpenSim/Framework/Monitoring/Watchdog.cs b/OpenSim/Framework/Monitoring/Watchdog.cs
index 45762a6..427ed7b 100644
--- a/OpenSim/Framework/Monitoring/Watchdog.cs
+++ b/OpenSim/Framework/Monitoring/Watchdog.cs
@@ -82,12 +82,32 @@ namespace OpenSim.Framework.Monitoring
82 /// </summary> 82 /// </summary>
83 public Func<string> AlarmMethod { get; set; } 83 public Func<string> AlarmMethod { get; set; }
84 84
85 /// <summary>
86 /// Stat structure associated with this thread.
87 /// </summary>
88 public Stat Stat { get; set; }
89
85 public ThreadWatchdogInfo(Thread thread, int timeout) 90 public ThreadWatchdogInfo(Thread thread, int timeout)
86 { 91 {
87 Thread = thread; 92 Thread = thread;
88 Timeout = timeout; 93 Timeout = timeout;
89 FirstTick = Environment.TickCount & Int32.MaxValue; 94 FirstTick = Environment.TickCount & Int32.MaxValue;
90 LastTick = FirstTick; 95 LastTick = FirstTick;
96
97 Stat
98 = new Stat(
99 thread.Name,
100 string.Format("Last update of thread {0}", thread.Name),
101 "",
102 "ms",
103 "server",
104 "thread",
105 StatType.Pull,
106 MeasuresOfInterest.None,
107 stat => stat.Value = Environment.TickCount & Int32.MaxValue - LastTick,
108 StatVerbosity.Debug);
109
110 StatsManager.RegisterStat(Stat);
91 } 111 }
92 112
93 public ThreadWatchdogInfo(ThreadWatchdogInfo previousTwi) 113 public ThreadWatchdogInfo(ThreadWatchdogInfo previousTwi)
@@ -100,6 +120,11 @@ namespace OpenSim.Framework.Monitoring
100 AlarmIfTimeout = previousTwi.AlarmIfTimeout; 120 AlarmIfTimeout = previousTwi.AlarmIfTimeout;
101 AlarmMethod = previousTwi.AlarmMethod; 121 AlarmMethod = previousTwi.AlarmMethod;
102 } 122 }
123
124 public void Cleanup()
125 {
126 StatsManager.DeregisterStat(Stat);
127 }
103 } 128 }
104 129
105 /// <summary> 130 /// <summary>
@@ -238,6 +263,7 @@ namespace OpenSim.Framework.Monitoring
238 m_log.DebugFormat( 263 m_log.DebugFormat(
239 "[WATCHDOG]: Removing thread {0}, ID {1}", twi.Thread.Name, twi.Thread.ManagedThreadId); 264 "[WATCHDOG]: Removing thread {0}, ID {1}", twi.Thread.Name, twi.Thread.ManagedThreadId);
240 265
266 twi.Cleanup();
241 m_threads.Remove(threadID); 267 m_threads.Remove(threadID);
242 268
243 return true; 269 return true;