From 9a5e7222cef7e81fee0c992c4557ac56e9665808 Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Tue, 20 Oct 2009 10:33:23 -0700
Subject: * Removing cruft left over from the conversion to the new texture
sending and UDP code * Changing the cache modules to only initialize the
caches if they are actually enabled. Should save a bit of resources from
unused cache systems
---
.../Region/CoreModules/Asset/CenomeAssetCache.cs | 10 +----
OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs | 7 ++-
.../Region/CoreModules/Asset/FlotsamAssetCache.cs | 51 +++++++++-------------
.../CoreModules/Asset/GlynnTuckerAssetCache.cs | 43 +++++++++---------
4 files changed, 45 insertions(+), 66 deletions(-)
(limited to 'OpenSim/Region/CoreModules/Asset')
diff --git a/OpenSim/Region/CoreModules/Asset/CenomeAssetCache.cs b/OpenSim/Region/CoreModules/Asset/CenomeAssetCache.cs
index 66ca7c2..1add0ab 100644
--- a/OpenSim/Region/CoreModules/Asset/CenomeAssetCache.cs
+++ b/OpenSim/Region/CoreModules/Asset/CenomeAssetCache.cs
@@ -155,14 +155,6 @@ namespace OpenSim.Region.CoreModules.Asset
private int m_hitCount;
///
- /// Initialize asset cache module with default parameters.
- ///
- public void Initialize()
- {
- Initialize(DefaultMaxSize, DefaultMaxCount, DefaultExpirationTime);
- }
-
- ///
/// Initialize asset cache module, with custom parameters.
///
///
@@ -174,7 +166,7 @@ namespace OpenSim.Region.CoreModules.Asset
///
/// Asset's expiration time.
///
- public void Initialize(long maximalSize, int maximalCount, TimeSpan expirationTime)
+ protected void Initialize(long maximalSize, int maximalCount, TimeSpan expirationTime)
{
if (maximalSize <= 0 || maximalCount <= 0)
{
diff --git a/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs b/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs
index 0a7e736..7da5e7a 100644
--- a/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs
+++ b/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs
@@ -44,10 +44,8 @@ namespace OpenSim.Region.CoreModules.Asset
LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
- private bool m_Enabled = false;
- private Cache m_Cache = new Cache(CacheMedium.Memory,
- CacheStrategy.Aggressive,
- CacheFlags.AllowUpdate);
+ private bool m_Enabled;
+ private Cache m_Cache;
public string Name
{
@@ -77,6 +75,7 @@ namespace OpenSim.Region.CoreModules.Asset
return;
}
+ m_Cache = new Cache(CacheMedium.Memory, CacheStrategy.Aggressive, CacheFlags.AllowUpdate);
m_Enabled = true;
m_log.Info("[ASSET CACHE]: Core asset cache enabled");
diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
index d45c35c..cbdca16 100644
--- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
+++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
@@ -61,24 +61,23 @@ namespace Flotsam.RegionModules.AssetCache
LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
- private bool m_Enabled = false;
+ private bool m_Enabled;
private const string m_ModuleName = "FlotsamAssetCache";
private const string m_DefaultCacheDirectory = m_ModuleName;
private string m_CacheDirectory = m_DefaultCacheDirectory;
-
- private List m_InvalidChars = new List();
+ private readonly List m_InvalidChars = new List();
private int m_LogLevel = 1;
private ulong m_HitRateDisplay = 1; // How often to display hit statistics, given in requests
- private static ulong m_Requests = 0;
- private static ulong m_RequestsForInprogress = 0;
- private static ulong m_DiskHits = 0;
- private static ulong m_MemoryHits = 0;
- private static double m_HitRateMemory = 0.0;
- private static double m_HitRateFile = 0.0;
+ private static ulong m_Requests;
+ private static ulong m_RequestsForInprogress;
+ private static ulong m_DiskHits;
+ private static ulong m_MemoryHits;
+ private static double m_HitRateMemory;
+ private static double m_HitRateFile;
#if WAIT_ON_INPROGRESS_REQUESTS
private Dictionary m_CurrentlyWriting = new Dictionary();
@@ -87,7 +86,7 @@ namespace Flotsam.RegionModules.AssetCache
private List m_CurrentlyWriting = new List();
#endif
- private ExpiringCache m_MemoryCache = new ExpiringCache();
+ private ExpiringCache m_MemoryCache;
private bool m_MemoryCacheEnabled = true;
// Expiration is expressed in hours.
@@ -101,12 +100,12 @@ namespace Flotsam.RegionModules.AssetCache
private static int m_CacheDirectoryTierLen = 3;
private static int m_CacheWarnAt = 30000;
- private System.Timers.Timer m_CachCleanTimer = new System.Timers.Timer();
+ private System.Timers.Timer m_CacheCleanTimer;
- private IAssetService m_AssetService = null;
+ private IAssetService m_AssetService;
private List m_Scenes = new List();
- private bool m_DeepScanBeforePurge = false;
+ private bool m_DeepScanBeforePurge;
public FlotsamAssetCache()
{
@@ -128,14 +127,15 @@ namespace Flotsam.RegionModules.AssetCache
{
IConfig moduleConfig = source.Configs["Modules"];
-
if (moduleConfig != null)
{
- string name = moduleConfig.GetString("AssetCaching", "");
+ string name = moduleConfig.GetString("AssetCaching", String.Empty);
if (name == Name)
{
+ m_MemoryCache = new ExpiringCache();
m_Enabled = true;
+
m_log.InfoFormat("[FLOTSAM ASSET CACHE]: {0} enabled", this.Name);
IConfig assetConfig = source.Configs["AssetCache"];
@@ -163,21 +163,11 @@ namespace Flotsam.RegionModules.AssetCache
m_FileExpirationCleanupTimer = TimeSpan.FromHours(assetConfig.GetDouble("FileCleanupTimer", m_DefaultFileExpiration));
if ((m_FileExpiration > TimeSpan.Zero) && (m_FileExpirationCleanupTimer > TimeSpan.Zero))
{
- m_CachCleanTimer.Interval = m_FileExpirationCleanupTimer.TotalMilliseconds;
- m_CachCleanTimer.AutoReset = true;
- m_CachCleanTimer.Elapsed += CleanupExpiredFiles;
- m_CachCleanTimer.Enabled = true;
- lock (m_CachCleanTimer)
- {
- m_CachCleanTimer.Start();
- }
- }
- else
- {
- lock (m_CachCleanTimer)
- {
- m_CachCleanTimer.Enabled = false;
- }
+ m_CacheCleanTimer = new System.Timers.Timer(m_FileExpirationCleanupTimer.TotalMilliseconds);
+ m_CacheCleanTimer.AutoReset = true;
+ m_CacheCleanTimer.Elapsed += CleanupExpiredFiles;
+ lock (m_CacheCleanTimer)
+ m_CacheCleanTimer.Start();
}
m_CacheDirectoryTiers = assetConfig.GetInt("CacheDirectoryTiers", 1);
@@ -208,7 +198,6 @@ namespace Flotsam.RegionModules.AssetCache
MainConsole.Instance.Commands.AddCommand(this.Name, true, "fcache clear", "fcache clear [file] [memory]", "Remove all assets in the file and/or memory cache", HandleConsoleCommand);
MainConsole.Instance.Commands.AddCommand(this.Name, true, "fcache assets", "fcache assets", "Attempt a deep scan and cache of all assets in all scenes", HandleConsoleCommand);
MainConsole.Instance.Commands.AddCommand(this.Name, true, "fcache expire", "fcache expire ", "Purge cached assets older then the specified date/time", HandleConsoleCommand);
-
}
}
}
diff --git a/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs b/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs
index 4869f5d..1365e69 100644
--- a/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs
+++ b/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs
@@ -45,11 +45,13 @@ namespace OpenSim.Region.CoreModules.Asset
LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
- private bool m_Enabled = false;
- private ICache m_Cache = new GlynnTucker.Cache.SimpleMemoryCache();
+ private bool m_Enabled;
+ private ICache m_Cache;
+ private ulong m_Hits;
+ private ulong m_Requests;
// Instrumentation
- private uint m_DebugRate = 0;
+ private uint m_DebugRate;
public Type ReplaceableInterface
{
@@ -72,6 +74,7 @@ namespace OpenSim.Region.CoreModules.Asset
if (name == Name)
{
+ m_Cache = new GlynnTucker.Cache.SimpleMemoryCache();
m_Enabled = true;
m_log.Info("[ASSET CACHE]: GlynnTucker asset cache enabled");
@@ -80,7 +83,6 @@ namespace OpenSim.Region.CoreModules.Asset
IConfig cacheConfig = source.Configs["AssetCache"];
if (cacheConfig != null)
m_DebugRate = (uint)cacheConfig.GetInt("DebugRate", 0);
-
}
}
}
@@ -117,24 +119,6 @@ namespace OpenSim.Region.CoreModules.Asset
m_Cache.AddOrUpdate(asset.ID, asset);
}
- private ulong m_Hits = 0;
- private ulong m_Requests = 0;
- private void Debug(Object asset)
- {
- // Temporary instrumentation to measure the hit/miss rate
- if (m_DebugRate > 0)
- {
- m_Requests++;
- if (asset != null)
- m_Hits++;
-
- if ((m_Requests % m_DebugRate) == 0)
- m_log.DebugFormat("[ASSET CACHE]: Hit Rate {0} / {1} == {2}%", m_Hits, m_Requests, ((float)m_Hits / m_Requests) * 100);
-
- }
- // End instrumentation
- }
-
public AssetBase Get(string id)
{
Object asset = null;
@@ -156,5 +140,20 @@ namespace OpenSim.Region.CoreModules.Asset
{
m_Cache.Clear();
}
+
+ private void Debug(Object asset)
+ {
+ // Temporary instrumentation to measure the hit/miss rate
+ if (m_DebugRate > 0)
+ {
+ ++m_Requests;
+ if (asset != null)
+ ++m_Hits;
+
+ if ((m_Requests % m_DebugRate) == 0)
+ m_log.DebugFormat("[ASSET CACHE]: Hit Rate {0} / {1} == {2}%", m_Hits, m_Requests, ((float)m_Hits / (float)m_Requests) * 100.0f);
+ }
+ // End instrumentation
+ }
}
}
--
cgit v1.1