From 184a288b4d04a58579d03b2d9518b1b6e0640e80 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Tue, 10 Jun 2008 18:10:57 +0000 Subject: [PATCH] * Add memory currently allocated to OpenSim to 'show stats' statistics * This is the GC.GetTotalMemory() method, which I'm guessing does not include memory used by the VM (hence the memory usage reported in top on linux would be much higher) --- .../Statistics/AssetStatsCollector.cs | 2 +- .../Statistics/BaseStatsCollector.cs | 51 +++++++++++++++++++ .../Statistics/SimExtraStatsCollector.cs | 10 ++-- .../Statistics/UserStatsCollector.cs | 2 +- 4 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 OpenSim/Framework/Statistics/BaseStatsCollector.cs diff --git a/OpenSim/Framework/Statistics/AssetStatsCollector.cs b/OpenSim/Framework/Statistics/AssetStatsCollector.cs index ed6779d2ca..f2b765f861 100644 --- a/OpenSim/Framework/Statistics/AssetStatsCollector.cs +++ b/OpenSim/Framework/Statistics/AssetStatsCollector.cs @@ -33,7 +33,7 @@ namespace OpenSim.Framework.Statistics /// /// Asset service statistics collection /// - public class AssetStatsCollector : IStatsCollector + public class AssetStatsCollector : BaseStatsCollector { private Timer ageStatsTimer = new Timer(24 * 60 * 60 * 1000); private DateTime startTime = DateTime.Now; diff --git a/OpenSim/Framework/Statistics/BaseStatsCollector.cs b/OpenSim/Framework/Statistics/BaseStatsCollector.cs new file mode 100644 index 0000000000..9e827af249 --- /dev/null +++ b/OpenSim/Framework/Statistics/BaseStatsCollector.cs @@ -0,0 +1,51 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Text; + +namespace OpenSim.Framework.Statistics +{ + /// + /// Statistics which all collectors are interested in reporting + /// + public class BaseStatsCollector : IStatsCollector + { + public virtual string Report() + { + StringBuilder sb = new StringBuilder(Environment.NewLine); + sb.Append("MEMORY STATISTICS"); + sb.Append(Environment.NewLine); + sb.Append( + string.Format( + "Allocated to OpenSim : {0} MB" + Environment.NewLine, + Math.Round(GC.GetTotalMemory(false) / 1024.0 / 1024.0))); + + return sb.ToString(); + } + } +} diff --git a/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs b/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs index 506db31708..7a74e72a63 100644 --- a/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs +++ b/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs @@ -36,7 +36,7 @@ namespace OpenSim.Framework.Statistics /// /// Collects sim statistics which aren't already being collected for the linden viewer's statistics pane /// - public class SimExtraStatsCollector : IStatsCollector + public class SimExtraStatsCollector : BaseStatsCollector { private long abnormalClientThreadTerminations; @@ -140,14 +140,14 @@ namespace OpenSim.Framework.Statistics /// Report back collected statistical information. /// /// - public string Report() + public override string Report() { StringBuilder sb = new StringBuilder(Environment.NewLine); sb.Append("ASSET STATISTICS"); sb.Append(Environment.NewLine); sb.Append( string.Format( -@"Asset cache contains {0,6} assets using {1,10:0.000}K" + Environment.NewLine, +@"Asset cache contains {0,6} assets using {1,10:0.000} K" + Environment.NewLine, AssetsInCache, AssetCacheMemoryUsage / 1024.0)); sb.Append(Environment.NewLine); @@ -155,7 +155,7 @@ namespace OpenSim.Framework.Statistics sb.Append(Environment.NewLine); sb.Append( string.Format( -@"Texture cache contains {0,6} textures using {1,10:0.000}K +@"Texture cache contains {0,6} textures using {1,10:0.000} K Blocked requests for missing textures: {2}" + Environment.NewLine, TexturesInCache, TextureCacheMemoryUsage / 1024.0, BlockedMissingTextureRequests)); @@ -193,6 +193,8 @@ Blocked requests for missing textures: {2}" + Environment.NewLine, sb.Append(Environment.NewLine); } + sb.Append(base.Report()); + return sb.ToString(); } } diff --git a/OpenSim/Framework/Statistics/UserStatsCollector.cs b/OpenSim/Framework/Statistics/UserStatsCollector.cs index c7fe7c2b96..e094d917fc 100644 --- a/OpenSim/Framework/Statistics/UserStatsCollector.cs +++ b/OpenSim/Framework/Statistics/UserStatsCollector.cs @@ -32,7 +32,7 @@ namespace OpenSim.Framework.Statistics /// /// Collects user service statistics /// - public class UserStatsCollector : IStatsCollector + public class UserStatsCollector : BaseStatsCollector { private Timer ageStatsTimer = new Timer(24 * 60 * 60 * 1000);