aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Statistics
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Framework/Statistics')
-rw-r--r--OpenSim/Framework/Statistics/AssetStatsCollector.cs28
-rw-r--r--OpenSim/Framework/Statistics/Interfaces/IStatsCollector.cs4
-rw-r--r--OpenSim/Framework/Statistics/SimExtraStatsCollector.cs62
-rw-r--r--OpenSim/Framework/Statistics/StatsManager.cs28
-rw-r--r--OpenSim/Framework/Statistics/UserStatsCollector.cs24
5 files changed, 73 insertions, 73 deletions
diff --git a/OpenSim/Framework/Statistics/AssetStatsCollector.cs b/OpenSim/Framework/Statistics/AssetStatsCollector.cs
index bd36c3f..ed6779d 100644
--- a/OpenSim/Framework/Statistics/AssetStatsCollector.cs
+++ b/OpenSim/Framework/Statistics/AssetStatsCollector.cs
@@ -37,35 +37,35 @@ namespace OpenSim.Framework.Statistics
37 { 37 {
38 private Timer ageStatsTimer = new Timer(24 * 60 * 60 * 1000); 38 private Timer ageStatsTimer = new Timer(24 * 60 * 60 * 1000);
39 private DateTime startTime = DateTime.Now; 39 private DateTime startTime = DateTime.Now;
40 40
41 private long assetRequestsToday; 41 private long assetRequestsToday;
42 private long assetRequestsNotFoundToday; 42 private long assetRequestsNotFoundToday;
43 private long assetRequestsYesterday; 43 private long assetRequestsYesterday;
44 private long assetRequestsNotFoundYesterday; 44 private long assetRequestsNotFoundYesterday;
45 45
46 public long AssetRequestsToday { get { return assetRequestsToday; } } 46 public long AssetRequestsToday { get { return assetRequestsToday; } }
47 public long AssetRequestsNotFoundToday { get { return assetRequestsNotFoundToday; } } 47 public long AssetRequestsNotFoundToday { get { return assetRequestsNotFoundToday; } }
48 public long AssetRequestsYesterday { get { return assetRequestsYesterday; } } 48 public long AssetRequestsYesterday { get { return assetRequestsYesterday; } }
49 public long AssetRequestsNotFoundYesterday { get { return assetRequestsNotFoundYesterday; } } 49 public long AssetRequestsNotFoundYesterday { get { return assetRequestsNotFoundYesterday; } }
50 50
51 public AssetStatsCollector() 51 public AssetStatsCollector()
52 { 52 {
53 ageStatsTimer.Elapsed += new ElapsedEventHandler(OnAgeing); 53 ageStatsTimer.Elapsed += new ElapsedEventHandler(OnAgeing);
54 ageStatsTimer.Enabled = true; 54 ageStatsTimer.Enabled = true;
55 } 55 }
56 56
57 private void OnAgeing(object source, ElapsedEventArgs e) 57 private void OnAgeing(object source, ElapsedEventArgs e)
58 { 58 {
59 assetRequestsYesterday = assetRequestsToday; 59 assetRequestsYesterday = assetRequestsToday;
60 60
61 // There is a possibility that an asset request could occur between the execution of these 61 // There is a possibility that an asset request could occur between the execution of these
62 // two statements. But we're better off without the synchronization overhead. 62 // two statements. But we're better off without the synchronization overhead.
63 assetRequestsToday = 0; 63 assetRequestsToday = 0;
64 64
65 assetRequestsNotFoundYesterday = assetRequestsNotFoundToday; 65 assetRequestsNotFoundYesterday = assetRequestsNotFoundToday;
66 assetRequestsNotFoundToday = 0; 66 assetRequestsNotFoundToday = 0;
67 } 67 }
68 68
69 /// <summary> 69 /// <summary>
70 /// Record that an asset request failed to find an asset 70 /// Record that an asset request failed to find an asset
71 /// </summary> 71 /// </summary>
@@ -73,7 +73,7 @@ namespace OpenSim.Framework.Statistics
73 { 73 {
74 assetRequestsNotFoundToday++; 74 assetRequestsNotFoundToday++;
75 } 75 }
76 76
77 /// <summary> 77 /// <summary>
78 /// Record that a request was made to the asset server 78 /// Record that a request was made to the asset server
79 /// </summary> 79 /// </summary>
@@ -90,10 +90,10 @@ namespace OpenSim.Framework.Statistics
90 { 90 {
91 double elapsedHours = (DateTime.Now - startTime).TotalHours; 91 double elapsedHours = (DateTime.Now - startTime).TotalHours;
92 if (elapsedHours <= 0) { elapsedHours = 1; } // prevent divide by zero 92 if (elapsedHours <= 0) { elapsedHours = 1; } // prevent divide by zero
93 93
94 long assetRequestsTodayPerHour = (long)Math.Round(AssetRequestsToday / elapsedHours); 94 long assetRequestsTodayPerHour = (long)Math.Round(AssetRequestsToday / elapsedHours);
95 long assetRequestsYesterdayPerHour = (long)Math.Round(AssetRequestsYesterday / 24.0); 95 long assetRequestsYesterdayPerHour = (long)Math.Round(AssetRequestsYesterday / 24.0);
96 96
97 return string.Format( 97 return string.Format(
98@"Asset requests today : {0} ({1} per hour) of which {2} were not found 98@"Asset requests today : {0} ({1} per hour) of which {2} were not found
99Asset requests yesterday : {3} ({4} per hour) of which {5} were not found", 99Asset requests yesterday : {3} ({4} per hour) of which {5} were not found",
diff --git a/OpenSim/Framework/Statistics/Interfaces/IStatsCollector.cs b/OpenSim/Framework/Statistics/Interfaces/IStatsCollector.cs
index 768cd22..e468fb2 100644
--- a/OpenSim/Framework/Statistics/Interfaces/IStatsCollector.cs
+++ b/OpenSim/Framework/Statistics/Interfaces/IStatsCollector.cs
@@ -26,7 +26,7 @@
26 */ 26 */
27 27
28namespace OpenSim.Framework.Statistics 28namespace OpenSim.Framework.Statistics
29{ 29{
30 /// <summary> 30 /// <summary>
31 /// Implemented by classes which collect up non-viewer statistical information 31 /// Implemented by classes which collect up non-viewer statistical information
32 /// </summary> 32 /// </summary>
@@ -36,6 +36,6 @@ namespace OpenSim.Framework.Statistics
36 /// Report back collected statistical information. 36 /// Report back collected statistical information.
37 /// </summary> 37 /// </summary>
38 /// <returns></returns> 38 /// <returns></returns>
39 string Report(); 39 string Report();
40 } 40 }
41} 41}
diff --git a/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs b/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs
index fd021bc..2e7278b 100644
--- a/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs
+++ b/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs
@@ -32,20 +32,20 @@ using libsecondlife;
32using OpenSim.Framework.Statistics.Interfaces; 32using OpenSim.Framework.Statistics.Interfaces;
33 33
34namespace OpenSim.Framework.Statistics 34namespace OpenSim.Framework.Statistics
35{ 35{
36 /// <summary> 36 /// <summary>
37 /// Collects sim statistics which aren't already being collected for the linden viewer's statistics pane 37 /// Collects sim statistics which aren't already being collected for the linden viewer's statistics pane
38 /// </summary> 38 /// </summary>
39 public class SimExtraStatsCollector : IStatsCollector 39 public class SimExtraStatsCollector : IStatsCollector
40 { 40 {
41 private long assetsInCache; 41 private long assetsInCache;
42 private long texturesInCache; 42 private long texturesInCache;
43 private long assetCacheMemoryUsage; 43 private long assetCacheMemoryUsage;
44 private long textureCacheMemoryUsage; 44 private long textureCacheMemoryUsage;
45 private long blockedMissingTextureRequests; 45 private long blockedMissingTextureRequests;
46 46
47 private long inventoryServiceRetrievalFailures; 47 private long inventoryServiceRetrievalFailures;
48 48
49 public long AssetsInCache { get { return assetsInCache; } } 49 public long AssetsInCache { get { return assetsInCache; } }
50 public long TexturesInCache { get { return texturesInCache; } } 50 public long TexturesInCache { get { return texturesInCache; } }
51 public long AssetCacheMemoryUsage { get { return assetCacheMemoryUsage; } } 51 public long AssetCacheMemoryUsage { get { return assetCacheMemoryUsage; } }
@@ -58,47 +58,47 @@ namespace OpenSim.Framework.Statistics
58 /// driver bugs on clients (though this seems less likely). 58 /// driver bugs on clients (though this seems less likely).
59 /// </summary> 59 /// </summary>
60 public long BlockedMissingTextureRequests { get { return blockedMissingTextureRequests; } } 60 public long BlockedMissingTextureRequests { get { return blockedMissingTextureRequests; } }
61 61
62 /// <summary> 62 /// <summary>
63 /// Number of known failures to retrieve avatar inventory from the inventory service. This does not 63 /// Number of known failures to retrieve avatar inventory from the inventory service. This does not
64 /// cover situations where the inventory service accepts the request but never returns any data, since 64 /// cover situations where the inventory service accepts the request but never returns any data, since
65 /// we do not yet timeout this situation. 65 /// we do not yet timeout this situation.
66 /// </summary> 66 /// </summary>
67 public long InventoryServiceRetrievalFailures { get { return inventoryServiceRetrievalFailures; } } 67 public long InventoryServiceRetrievalFailures { get { return inventoryServiceRetrievalFailures; } }
68 68
69 /// <summary> 69 /// <summary>
70 /// Retain a dictionary of all packet queues stats reporters 70 /// Retain a dictionary of all packet queues stats reporters
71 /// </summary> 71 /// </summary>
72 private IDictionary<LLUUID, PacketQueueStatsCollector> packetQueueStatsCollectors 72 private IDictionary<LLUUID, PacketQueueStatsCollector> packetQueueStatsCollectors
73 = new Dictionary<LLUUID, PacketQueueStatsCollector>(); 73 = new Dictionary<LLUUID, PacketQueueStatsCollector>();
74 74
75 public void AddAsset(AssetBase asset) 75 public void AddAsset(AssetBase asset)
76 { 76 {
77 assetsInCache++; 77 assetsInCache++;
78 assetCacheMemoryUsage += asset.Data.Length; 78 assetCacheMemoryUsage += asset.Data.Length;
79 } 79 }
80 80
81 public void AddTexture(AssetBase image) 81 public void AddTexture(AssetBase image)
82 { 82 {
83 if (image.Data != null) 83 if (image.Data != null)
84 { 84 {
85 texturesInCache++; 85 texturesInCache++;
86 86
87 // This could have been a pull stat, though there was originally a nebulous idea to measure flow rates 87 // This could have been a pull stat, though there was originally a nebulous idea to measure flow rates
88 textureCacheMemoryUsage += image.Data.Length; 88 textureCacheMemoryUsage += image.Data.Length;
89 } 89 }
90 } 90 }
91 91
92 public void AddBlockedMissingTextureRequest() 92 public void AddBlockedMissingTextureRequest()
93 { 93 {
94 blockedMissingTextureRequests++; 94 blockedMissingTextureRequests++;
95 } 95 }
96 96
97 public void AddInventoryServiceRetrievalFailure() 97 public void AddInventoryServiceRetrievalFailure()
98 { 98 {
99 inventoryServiceRetrievalFailures++; 99 inventoryServiceRetrievalFailures++;
100 } 100 }
101 101
102 /// <summary> 102 /// <summary>
103 /// Register as a packet queue stats provider 103 /// Register as a packet queue stats provider
104 /// </summary> 104 /// </summary>
@@ -111,7 +111,7 @@ namespace OpenSim.Framework.Statistics
111 packetQueueStatsCollectors[uuid] = new PacketQueueStatsCollector(provider); 111 packetQueueStatsCollectors[uuid] = new PacketQueueStatsCollector(provider);
112 } 112 }
113 } 113 }
114 114
115 /// <summary> 115 /// <summary>
116 /// Deregister a packet queue stats provider 116 /// Deregister a packet queue stats provider
117 /// </summary> 117 /// </summary>
@@ -129,25 +129,25 @@ namespace OpenSim.Framework.Statistics
129 /// </summary> 129 /// </summary>
130 /// <returns></returns> 130 /// <returns></returns>
131 public string Report() 131 public string Report()
132 { 132 {
133 StringBuilder sb = new StringBuilder(Environment.NewLine); 133 StringBuilder sb = new StringBuilder(Environment.NewLine);
134 sb.Append("ASSET STATISTICS"); 134 sb.Append("ASSET STATISTICS");
135 sb.Append(Environment.NewLine); 135 sb.Append(Environment.NewLine);
136 sb.Append( 136 sb.Append(
137 string.Format( 137 string.Format(
138@"Asset cache contains {0,6} assets using {1,10:0.000}K" + Environment.NewLine, 138@"Asset cache contains {0,6} assets using {1,10:0.000}K" + Environment.NewLine,
139 AssetsInCache, AssetCacheMemoryUsage / 1024.0)); 139 AssetsInCache, AssetCacheMemoryUsage / 1024.0));
140 140
141 sb.Append(Environment.NewLine); 141 sb.Append(Environment.NewLine);
142 sb.Append("TEXTURE STATISTICS"); 142 sb.Append("TEXTURE STATISTICS");
143 sb.Append(Environment.NewLine); 143 sb.Append(Environment.NewLine);
144 sb.Append( 144 sb.Append(
145 string.Format( 145 string.Format(
146@"Texture cache contains {0,6} textures using {1,10:0.000}K 146@"Texture cache contains {0,6} textures using {1,10:0.000}K
147Blocked requests for missing textures: {2}" + Environment.NewLine, 147Blocked requests for missing textures: {2}" + Environment.NewLine,
148 TexturesInCache, TextureCacheMemoryUsage / 1024.0, 148 TexturesInCache, TextureCacheMemoryUsage / 1024.0,
149 BlockedMissingTextureRequests)); 149 BlockedMissingTextureRequests));
150 150
151 sb.Append(Environment.NewLine); 151 sb.Append(Environment.NewLine);
152 sb.Append("INVENTORY STATISTICS"); 152 sb.Append("INVENTORY STATISTICS");
153 sb.Append(Environment.NewLine); 153 sb.Append(Environment.NewLine);
@@ -155,26 +155,26 @@ Blocked requests for missing textures: {2}" + Environment.NewLine,
155 string.Format( 155 string.Format(
156 "Initial inventory caching failures: {0}" + Environment.NewLine, 156 "Initial inventory caching failures: {0}" + Environment.NewLine,
157 InventoryServiceRetrievalFailures)); 157 InventoryServiceRetrievalFailures));
158 158
159 sb.Append(Environment.NewLine); 159 sb.Append(Environment.NewLine);
160 sb.Append("PACKET QUEUE STATISTICS"); 160 sb.Append("PACKET QUEUE STATISTICS");
161 sb.Append(Environment.NewLine); 161 sb.Append(Environment.NewLine);
162 sb.Append("Agent UUID "); 162 sb.Append("Agent UUID ");
163 sb.Append( 163 sb.Append(
164 string.Format( 164 string.Format(
165 " {0,7} {1,7} {2,7} {3,7} {4,7} {5,7} {6,7} {7,7} {8,7} {9,7}", 165 " {0,7} {1,7} {2,7} {3,7} {4,7} {5,7} {6,7} {7,7} {8,7} {9,7}",
166 "Send", "In", "Out", "Resend", "Land", "Wind", "Cloud", "Task", "Texture", "Asset")); 166 "Send", "In", "Out", "Resend", "Land", "Wind", "Cloud", "Task", "Texture", "Asset"));
167 sb.Append(Environment.NewLine); 167 sb.Append(Environment.NewLine);
168 168
169 foreach (LLUUID key in packetQueueStatsCollectors.Keys) 169 foreach (LLUUID key in packetQueueStatsCollectors.Keys)
170 { 170 {
171 sb.Append(string.Format("{0}: ", key)); 171 sb.Append(string.Format("{0}: ", key));
172 sb.Append(packetQueueStatsCollectors[key].Report()); 172 sb.Append(packetQueueStatsCollectors[key].Report());
173 sb.Append(Environment.NewLine); 173 sb.Append(Environment.NewLine);
174 } 174 }
175 175
176 return sb.ToString(); 176 return sb.ToString();
177 } 177 }
178 } 178 }
179 179
180 /// <summary> 180 /// <summary>
@@ -183,16 +183,16 @@ Blocked requests for missing textures: {2}" + Environment.NewLine,
183 public class PacketQueueStatsCollector : IStatsCollector 183 public class PacketQueueStatsCollector : IStatsCollector
184 { 184 {
185 private IPullStatsProvider m_statsProvider; 185 private IPullStatsProvider m_statsProvider;
186 186
187 public PacketQueueStatsCollector(IPullStatsProvider provider) 187 public PacketQueueStatsCollector(IPullStatsProvider provider)
188 { 188 {
189 m_statsProvider = provider; 189 m_statsProvider = provider;
190 } 190 }
191 191
192 /// <summary> 192 /// <summary>
193 /// Report back collected statistical information. 193 /// Report back collected statistical information.
194 /// </summary> 194 /// </summary>
195 /// <returns></returns> 195 /// <returns></returns>
196 public string Report() 196 public string Report()
197 { 197 {
198 return m_statsProvider.GetStats(); 198 return m_statsProvider.GetStats();
diff --git a/OpenSim/Framework/Statistics/StatsManager.cs b/OpenSim/Framework/Statistics/StatsManager.cs
index 3c97dde..41de3f3 100644
--- a/OpenSim/Framework/Statistics/StatsManager.cs
+++ b/OpenSim/Framework/Statistics/StatsManager.cs
@@ -26,7 +26,7 @@
26 */ 26 */
27 27
28namespace OpenSim.Framework.Statistics 28namespace OpenSim.Framework.Statistics
29{ 29{
30 /// <summary> 30 /// <summary>
31 /// Singleton used to provide access to statistics reporters 31 /// Singleton used to provide access to statistics reporters
32 /// </summary> 32 /// </summary>
@@ -34,44 +34,44 @@ namespace OpenSim.Framework.Statistics
34 { 34 {
35 private static AssetStatsCollector assetStats; 35 private static AssetStatsCollector assetStats;
36 private static UserStatsCollector userStats; 36 private static UserStatsCollector userStats;
37 private static SimExtraStatsCollector simExtraStats; 37 private static SimExtraStatsCollector simExtraStats;
38 38
39 public static AssetStatsCollector AssetStats { get { return assetStats; } } 39 public static AssetStatsCollector AssetStats { get { return assetStats; } }
40 public static UserStatsCollector UserStats { get { return userStats; } } 40 public static UserStatsCollector UserStats { get { return userStats; } }
41 public static SimExtraStatsCollector SimExtraStats { get { return simExtraStats; } } 41 public static SimExtraStatsCollector SimExtraStats { get { return simExtraStats; } }
42 42
43 private StatsManager() {} 43 private StatsManager() {}
44 44
45 /// <summary> 45 /// <summary>
46 /// Start collecting statistics related to assets. 46 /// Start collecting statistics related to assets.
47 /// Should only be called once. 47 /// Should only be called once.
48 /// </summary> 48 /// </summary>
49 public static AssetStatsCollector StartCollectingAssetStats() 49 public static AssetStatsCollector StartCollectingAssetStats()
50 { 50 {
51 assetStats = new AssetStatsCollector(); 51 assetStats = new AssetStatsCollector();
52 52
53 return assetStats; 53 return assetStats;
54 } 54 }
55 55
56 /// <summary> 56 /// <summary>
57 /// Start collecting statistics related to users. 57 /// Start collecting statistics related to users.
58 /// Should only be called once. 58 /// Should only be called once.
59 /// </summary> 59 /// </summary>
60 public static UserStatsCollector StartCollectingUserStats() 60 public static UserStatsCollector StartCollectingUserStats()
61 { 61 {
62 userStats = new UserStatsCollector(); 62 userStats = new UserStatsCollector();
63 63
64 return userStats; 64 return userStats;
65 } 65 }
66 66
67 /// <summary> 67 /// <summary>
68 /// Start collecting extra sim statistics apart from those collected for the client. 68 /// Start collecting extra sim statistics apart from those collected for the client.
69 /// Should only be called once. 69 /// Should only be called once.
70 /// </summary> 70 /// </summary>
71 public static SimExtraStatsCollector StartCollectingSimExtraStats() 71 public static SimExtraStatsCollector StartCollectingSimExtraStats()
72 { 72 {
73 simExtraStats = new SimExtraStatsCollector(); 73 simExtraStats = new SimExtraStatsCollector();
74 74
75 return simExtraStats; 75 return simExtraStats;
76 } 76 }
77 } 77 }
diff --git a/OpenSim/Framework/Statistics/UserStatsCollector.cs b/OpenSim/Framework/Statistics/UserStatsCollector.cs
index f0f0417..c7fe7c2 100644
--- a/OpenSim/Framework/Statistics/UserStatsCollector.cs
+++ b/OpenSim/Framework/Statistics/UserStatsCollector.cs
@@ -35,43 +35,43 @@ namespace OpenSim.Framework.Statistics
35 public class UserStatsCollector : IStatsCollector 35 public class UserStatsCollector : IStatsCollector
36 { 36 {
37 private Timer ageStatsTimer = new Timer(24 * 60 * 60 * 1000); 37 private Timer ageStatsTimer = new Timer(24 * 60 * 60 * 1000);
38 38
39 private int successfulLoginsToday; 39 private int successfulLoginsToday;
40 public int SuccessfulLoginsToday { get { return successfulLoginsToday; } } 40 public int SuccessfulLoginsToday { get { return successfulLoginsToday; } }
41 41
42 private int successfulLoginsYesterday; 42 private int successfulLoginsYesterday;
43 public int SuccessfulLoginsYesterday { get { return successfulLoginsYesterday; } } 43 public int SuccessfulLoginsYesterday { get { return successfulLoginsYesterday; } }
44 44
45 private int successfulLogins; 45 private int successfulLogins;
46 public int SuccessfulLogins { get { return successfulLogins; } } 46 public int SuccessfulLogins { get { return successfulLogins; } }
47 47
48 private int logouts; 48 private int logouts;
49 public int Logouts { get { return logouts; } } 49 public int Logouts { get { return logouts; } }
50 50
51 public UserStatsCollector() 51 public UserStatsCollector()
52 { 52 {
53 ageStatsTimer.Elapsed += new ElapsedEventHandler(OnAgeing); 53 ageStatsTimer.Elapsed += new ElapsedEventHandler(OnAgeing);
54 ageStatsTimer.Enabled = true; 54 ageStatsTimer.Enabled = true;
55 } 55 }
56 56
57 private void OnAgeing(object source, ElapsedEventArgs e) 57 private void OnAgeing(object source, ElapsedEventArgs e)
58 { 58 {
59 successfulLoginsYesterday = successfulLoginsToday; 59 successfulLoginsYesterday = successfulLoginsToday;
60 60
61 // There is a possibility that an asset request could occur between the execution of these 61 // There is a possibility that an asset request could occur between the execution of these
62 // two statements. But we're better off without the synchronization overhead. 62 // two statements. But we're better off without the synchronization overhead.
63 successfulLoginsToday = 0; 63 successfulLoginsToday = 0;
64 } 64 }
65 65
66 /// <summary> 66 /// <summary>
67 /// Record a successful login 67 /// Record a successful login
68 /// </summary> 68 /// </summary>
69 public void AddSuccessfulLogin() 69 public void AddSuccessfulLogin()
70 { 70 {
71 successfulLogins++; 71 successfulLogins++;
72 successfulLoginsToday++; 72 successfulLoginsToday++;
73 } 73 }
74 74
75 public void AddLogout() 75 public void AddLogout()
76 { 76 {
77 logouts++; 77 logouts++;