diff options
author | diva | 2009-05-28 21:04:10 +0000 |
---|---|---|
committer | diva | 2009-05-28 21:04:10 +0000 |
commit | 0094556d04add28d5a36c653b39901b93f0a69ba (patch) | |
tree | cdd94c1f19f1f114b09dac7f24983b947824b16d /OpenSim | |
parent | * Tweak to above (diff) | |
download | opensim-SC-0094556d04add28d5a36c653b39901b93f0a69ba.zip opensim-SC-0094556d04add28d5a36c653b39901b93f0a69ba.tar.gz opensim-SC-0094556d04add28d5a36c653b39901b93f0a69ba.tar.bz2 opensim-SC-0094556d04add28d5a36c653b39901b93f0a69ba.tar.xz |
Instrumenting GlynnTuckerCache to find out the hit rate.
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs b/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs index f784c1b..9f02868 100644 --- a/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs | |||
@@ -48,6 +48,9 @@ namespace OpenSim.Region.CoreModules.Asset | |||
48 | private bool m_Enabled = false; | 48 | private bool m_Enabled = false; |
49 | private ICache m_Cache = new GlynnTucker.Cache.SimpleMemoryCache(); | 49 | private ICache m_Cache = new GlynnTucker.Cache.SimpleMemoryCache(); |
50 | 50 | ||
51 | // Instrumentation | ||
52 | private uint m_DebugRate = 0; | ||
53 | |||
51 | public string Name | 54 | public string Name |
52 | { | 55 | { |
53 | get { return "GlynnTuckerAssetCache"; } | 56 | get { return "GlynnTuckerAssetCache"; } |
@@ -68,6 +71,11 @@ namespace OpenSim.Region.CoreModules.Asset | |||
68 | 71 | ||
69 | m_log.Info("[ASSET CACHE]: GlynnTucker asset cache enabled"); | 72 | m_log.Info("[ASSET CACHE]: GlynnTucker asset cache enabled"); |
70 | 73 | ||
74 | // Instrumentation | ||
75 | IConfig cacheConfig = source.Configs["AssetCache"]; | ||
76 | if (cacheConfig != null) | ||
77 | m_DebugRate = (uint)cacheConfig.GetInt("DebugRate", 0); | ||
78 | |||
71 | } | 79 | } |
72 | } | 80 | } |
73 | } | 81 | } |
@@ -104,10 +112,31 @@ namespace OpenSim.Region.CoreModules.Asset | |||
104 | m_Cache.AddOrUpdate(asset.ID, asset); | 112 | m_Cache.AddOrUpdate(asset.ID, asset); |
105 | } | 113 | } |
106 | 114 | ||
115 | private ulong m_Hits = 0; | ||
116 | private ulong m_Requests = 0; | ||
117 | private void Debug(Object asset) | ||
118 | { | ||
119 | // Temporary instrumentation to measure the hit/miss rate | ||
120 | if (m_DebugRate > 0) | ||
121 | { | ||
122 | m_Requests++; | ||
123 | if (asset != null) | ||
124 | m_Hits++; | ||
125 | |||
126 | if ((m_Requests % m_DebugRate) == 0) | ||
127 | m_log.DebugFormat("[ASSET CACHE]: Hit Rate {0} / {1} == {2}%", m_Hits, m_Requests, ((float)m_Hits / m_Requests) * 100); | ||
128 | |||
129 | } | ||
130 | // End instrumentation | ||
131 | } | ||
132 | |||
107 | public AssetBase Get(string id) | 133 | public AssetBase Get(string id) |
108 | { | 134 | { |
109 | Object asset = null; | 135 | Object asset = null; |
110 | m_Cache.TryGet(id, out asset); | 136 | m_Cache.TryGet(id, out asset); |
137 | |||
138 | Debug(asset); | ||
139 | |||
111 | return (AssetBase)asset; | 140 | return (AssetBase)asset; |
112 | } | 141 | } |
113 | 142 | ||