View Javadoc

1   // Autogenerated Jamon implementation
2   // /Users/enis/projects/git-repos/hbase/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.jamon
3   
4   package org.apache.hadoop.hbase.tmpl.regionserver;
5   
6   // 37, 1
7   import java.util.Map;
8   // 38, 1
9   import org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.CachedBlocksByFile;
10  // 39, 1
11  import org.apache.hadoop.hbase.io.hfile.AgeSnapshot;
12  // 40, 1
13  import org.apache.hadoop.hbase.io.hfile.CachedBlock;
14  // 41, 1
15  import org.apache.hadoop.conf.Configuration;
16  // 42, 1
17  import org.apache.hadoop.hbase.io.hfile.CacheConfig;
18  // 43, 1
19  import org.apache.hadoop.hbase.io.hfile.BlockCache;
20  // 44, 1
21  import org.apache.hadoop.hbase.io.hfile.bucket.BucketCacheStats;
22  // 45, 1
23  import org.apache.hadoop.hbase.io.hfile.bucket.BucketCache;
24  // 46, 1
25  import org.apache.hadoop.hbase.io.hfile.bucket.BucketAllocator;
26  // 47, 1
27  import org.apache.hadoop.hbase.io.hfile.bucket.BucketAllocator.Bucket;
28  // 48, 1
29  import org.apache.hadoop.util.StringUtils;
30  
31  public class BlockCacheTmplImpl
32    extends org.jamon.AbstractTemplateImpl
33    implements org.apache.hadoop.hbase.tmpl.regionserver.BlockCacheTmpl.Intf
34  
35  {
36    private final CacheConfig cacheConfig;
37    private final Configuration config;
38    protected static org.apache.hadoop.hbase.tmpl.regionserver.BlockCacheTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.regionserver.BlockCacheTmpl.ImplData p_implData)
39    {
40      return p_implData;
41    }
42    public BlockCacheTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.regionserver.BlockCacheTmpl.ImplData p_implData)
43    {
44      super(p_templateManager, __jamon_setOptionalArguments(p_implData));
45      cacheConfig = p_implData.getCacheConfig();
46      config = p_implData.getConfig();
47    }
48    
49    public void renderNoFlush(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter)
50      throws java.io.IOException
51    {
52      // 24, 1
53      
54    BlockCache bc = cacheConfig == null? null: cacheConfig.getBlockCache();
55    String bcUrl = null;
56    String bcName = null;
57    if (bc != null) {
58      bcUrl = "http://hbase.apache.org/devapidocs/" + bc.getClass().getName().replaceAll("\\.", "/") + ".html";
59      bcName = bc.getClass().getSimpleName();
60    }
61    BlockCache [] bcs = cacheConfig == null? null: cacheConfig.getBlockCache() == null? null: cacheConfig.getBlockCache().getBlockCaches();
62    // If more than one bc, show evictions in each bc listing so can compare
63    boolean evictions = bcs != null && bcs.length > 1;
64  
65      // 50, 1
66      jamonWriter.write("<div class=\"tabbable\">\n    <ul class=\"nav nav-pills\">\n        <li class=\"active\"><a href=\"#tab_bc_baseInfo\" data-toggle=\"tab\">Base Info</a></li>\n        <li class=\"\"><a href=\"#tab_bc_config\" data-toggle=\"tab\">Config</a></li>\n        <li class=\"\"><a href=\"#tab_bc_stats\" data-toggle=\"tab\">Stats</a></li>\n        <li class=\"\"><a href=\"#tab_bc_l1\" data-toggle=\"tab\">L1</a></li>\n        <li class=\"\"><a href=\"#tab_bc_l2\" data-toggle=\"tab\">L2</a></li>\n    </ul>\n    <div class=\"tab-content\" style=\"padding-bottom: 9px; border-bottom: 1px solid #ddd;\">\n        <div class=\"tab-pane active\" id=\"tab_bc_baseInfo\">\n            ");
67      // 60, 13
68      {
69        // 60, 13
70        __jamon_innerUnit__bc_baseInfo(jamonWriter, cacheConfig, bcUrl, bcName);
71      }
72      // 60, 91
73      jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_bc_config\">\n            ");
74      // 63, 13
75      {
76        // 63, 13
77        __jamon_innerUnit__bc_config(jamonWriter, cacheConfig );
78      }
79      // 63, 55
80      jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_bc_stats\">\n            ");
81      // 66, 13
82      {
83        // 66, 13
84        __jamon_innerUnit__bc_stats(jamonWriter, cacheConfig );
85      }
86      // 66, 54
87      jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_bc_l1\">\n            ");
88      // 69, 13
89      {
90        // 69, 13
91        __jamon_innerUnit__bc_l(jamonWriter, bcs == null? bc: bcs[0], "L1", evictions);
92      }
93      // 69, 90
94      jamonWriter.write("\n        </div>\n        <div class=\"tab-pane\" id=\"tab_bc_l2\">\n            ");
95      // 72, 13
96      {
97        // 72, 13
98        __jamon_innerUnit__bc_l(jamonWriter, bcs == null? null: bcs.length <= 1? null: bcs[1], "L2", evictions);
99      }
100     // 72, 115
101     jamonWriter.write("\n        </div>\n    </div>\n</div>\n\n");
102   }
103   
104   
105   // 209, 1
106   private void __jamon_innerUnit__bc_stats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final CacheConfig cacheConfig)
107     throws java.io.IOException
108   {
109     // 213, 1
110     if (cacheConfig == null || cacheConfig.getBlockCache() == null )
111     {
112       // 213, 67
113       jamonWriter.write("\n<p>CacheConfig is null</p>\n");
114     }
115     // 215, 1
116     else
117     {
118       // 215, 8
119       jamonWriter.write("\n<table class=\"table table-striped\">\n    <tr>\n        <th>Attribute</th>\n        <th>Value</th>\n        <th>Description</th>\n    </tr>\n    <tr>\n        <td>Size</td>\n        <td>");
120       // 224, 13
121       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(cacheConfig.getBlockCache().getCurrentSize())), jamonWriter);
122       // 224, 93
123       jamonWriter.write("</td>\n        <td>Current size of block cache in use (bytes)</td>\n    </tr>\n    <tr>\n        <td>Free</td>\n        <td>");
124       // 229, 13
125       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(cacheConfig.getBlockCache().getFreeSize())), jamonWriter);
126       // 229, 90
127       jamonWriter.write("</td>\n        <td>The total free memory currently available to store more cache entries (bytes)</td>\n    </tr>\n    <tr>\n        <td>Count</td>\n        <td>");
128       // 234, 13
129       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", cacheConfig.getBlockCache().getBlockCount())), jamonWriter);
130       // 234, 84
131       jamonWriter.write("</td>\n        <td>Number of blocks in block cache</td>\n    </tr>\n    ");
132       // 237, 5
133       {
134         // 237, 5
135         __jamon_innerUnit__evictions_tmpl(jamonWriter, cacheConfig.getBlockCache());
136       }
137       // 237, 60
138       jamonWriter.write("\n    <tr>\n        <td>Hits</td>\n        <td>");
139       // 240, 13
140       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", cacheConfig.getBlockCache().getStats().getHitCount())), jamonWriter);
141       // 240, 93
142       jamonWriter.write("</td>\n        <td>Number requests that were cache hits</td>\n    </tr>\n    <tr>\n        <td>Hits Caching</td>\n        <td>");
143       // 245, 13
144       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", cacheConfig.getBlockCache().getStats().getHitCachingCount())), jamonWriter);
145       // 245, 100
146       jamonWriter.write("</td>\n        <td>Cache hit block requests but only requests set to cache block if a miss</td>\n    </tr>\n    <tr>\n        <td>Misses</td>\n        <td>");
147       // 250, 13
148       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", cacheConfig.getBlockCache().getStats().getMissCount())), jamonWriter);
149       // 250, 94
150       jamonWriter.write("</td>\n        <td>Block requests that were cache misses but set to cache missed blocks</td>\n    </tr>\n    <tr>\n        <td>Misses Caching</td>\n        <td>");
151       // 255, 13
152       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", cacheConfig.getBlockCache().getStats().getMissCount())), jamonWriter);
153       // 255, 94
154       jamonWriter.write("</td>\n        <td>Block requests that were cache misses but only requests set to use block cache</td>\n    </tr>\n    <tr>\n        <td>Hit Ratio</td>\n        <td>");
155       // 260, 13
156       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,.2f", cacheConfig.getBlockCache().getStats().getHitRatio() * 100)), jamonWriter);
157       // 260, 101
158       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf("%"), jamonWriter);
159       // 260, 110
160       jamonWriter.write("</td>\n        <td>Hit Count divided by total requests count</td>\n    </tr>\n</table>\n<p>If block cache is made up of more than one cache -- i.e. a L1 and a L2 -- then the above\nare combined counts. Request count is sum of hits and misses.</p>\n");
161     }
162     // 266, 7
163     jamonWriter.write("\n");
164   }
165   
166   
167   // 119, 1
168   private void __jamon_innerUnit__bc_config(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final CacheConfig cacheConfig)
169     throws java.io.IOException
170   {
171     // 123, 1
172     if (cacheConfig == null )
173     {
174       // 123, 28
175       jamonWriter.write("\n<p>CacheConfig is null</p>\n");
176     }
177     // 125, 1
178     else
179     {
180       // 125, 8
181       jamonWriter.write("\n<table class=\"table table-striped\">\n    <tr>\n        <th>Attribute</th>\n        <th>Value</th>\n        <th>Description</th>\n    </tr>\n    <tr>\n        <td>Cache DATA on Read</td>\n        <td>");
182       // 134, 13
183       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheDataOnRead()), jamonWriter);
184       // 134, 54
185       jamonWriter.write("</td>\n        <td>True if DATA blocks are cached on read\n        (INDEX & BLOOM blocks are always cached)</td>\n    </tr>\n    <tr>\n        <td>Cache DATA on Write</td>\n        <td>");
186       // 140, 13
187       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheDataOnWrite()), jamonWriter);
188       // 140, 55
189       jamonWriter.write("</td>\n        <td>True if DATA blocks are cached on write.</td>\n    </tr>\n    <tr>\n        <td>Cache INDEX on Write</td>\n        <td>");
190       // 145, 13
191       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheIndexesOnWrite()), jamonWriter);
192       // 145, 58
193       jamonWriter.write("</td>\n        <td>True if INDEX blocks are cached on write</td>\n    </tr>\n    <tr>\n        <td>Cache BLOOM on Write</td>\n        <td>");
194       // 150, 13
195       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheBloomsOnWrite()), jamonWriter);
196       // 150, 57
197       jamonWriter.write("</td>\n        <td>True if BLOOM blocks are cached on write</td>\n    </tr>\n    <tr>\n        <td>Evict blocks on Close</td>\n        <td>");
198       // 155, 13
199       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldEvictOnClose()), jamonWriter);
200       // 155, 51
201       jamonWriter.write("</td>\n        <td>True if blocks are evicted from cache when an HFile\n        reader is closed</td>\n    </tr>\n    <tr>\n        <td>Cache DATA in compressed format</td>\n        <td>");
202       // 161, 13
203       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheDataCompressed()), jamonWriter);
204       // 161, 58
205       jamonWriter.write("</td>\n        <td>True if DATA blocks are cached in their compressed form</td>\n    </tr>\n    <tr>\n        <td>Prefetch on Open</td>\n        <td>");
206       // 166, 13
207       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldPrefetchOnOpen()), jamonWriter);
208       // 166, 53
209       jamonWriter.write("</td>\n        <td>True if blocks are prefetched into cache on open</td>\n    </tr>\n</table>\n");
210     }
211     // 170, 7
212     jamonWriter.write("\n");
213   }
214   
215   
216   // 77, 1
217   private void __jamon_innerUnit__bc_baseInfo(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final CacheConfig cacheConfig, final String bcUrl, final String bcName)
218     throws java.io.IOException
219   {
220     // 83, 1
221     
222   BlockCache bc = cacheConfig == null? null: cacheConfig.getBlockCache();
223   BlockCache [] bcs = bc == null? null: bc.getBlockCaches();
224   String bcl1Url = null;
225   String bcl1Name = null;
226   String bcl2Url = null;
227   String bcl2Name = null;
228   if (bcs != null) {
229     BlockCache bcl1 = bcs[0];
230     if (bcl1 != null) {
231       bcl1Url = "http://hbase.apache.org/devapidocs/" + bcl1.getClass().getName().replaceAll("\\.", "/") + ".html";
232       bcl1Name = bcl1.getClass().getSimpleName();
233     }
234     if (bcs.length == 2) {
235       BlockCache bcl2 = bcs[1];
236       bcl2Url = "http://hbase.apache.org/devapidocs/" + bcl2.getClass().getName().replaceAll("\\.", "/") + ".html";
237       bcl2Name = bcl2.getClass().getSimpleName();
238     }
239   }
240 
241     // 103, 1
242     jamonWriter.write("<table class=\"table table-striped\">\n    <tr>\n        <th>Attribute</th>\n        <th>Value</th>\n        <th>Description</th>\n    </tr>\n    </tr>\n    <tr>\n        <td>Implementation</td>\n        <td><a href=\"");
243     // 112, 22
244     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bcUrl), jamonWriter);
245     // 112, 33
246     jamonWriter.write("\">");
247     // 112, 35
248     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bcName), jamonWriter);
249     // 112, 47
250     jamonWriter.write("</a></td>\n        <td>Block cache implementing class</td>\n    </tr>\n</table>\n<p>See <a href=\"http://hbase.apache.org/book.html#block.cache\">block cache</a> in the HBase Reference Guide for help.</p>\n");
251   }
252   
253   
254   // 282, 1
255   private void __jamon_innerUnit__block_cache(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final BlockCache bc, final String name, final boolean evictions)
256     throws java.io.IOException
257   {
258     // 288, 1
259     
260   final long nanosPerSecond = 1000000000;
261   String bcUrl = "http://hbase.apache.org/devapidocs/" + bc.getClass().getName().replaceAll("\\.", "/") + ".html";
262   String bcName = bc.getClass().getSimpleName();
263   org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.CachedBlocksByFile cbsbf =
264     org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.getLoadedCachedBlocksByFile(config, bc);
265   AgeSnapshot cbsbfSnapshot = cbsbf.getAgeInCacheSnapshot();
266 
267   boolean bucketCache = bc.getClass().getSimpleName().equals("BucketCache");
268   BucketCacheStats bucketCacheStats = null;
269   BucketAllocator bucketAllocator = null;
270   Bucket [] buckets = null;
271 
272   if (bucketCache) {
273     bucketCacheStats = (BucketCacheStats)bc.getStats();
274     bucketAllocator = ((BucketCache)bc).getAllocator();
275     buckets = bucketAllocator.getBuckets();
276   }
277 
278     // 307, 1
279     if (cbsbf.isFull() )
280     {
281       // 307, 23
282       jamonWriter.write("\n<p><b>Statistics below is based on sampling first ");
283       // 308, 51
284       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cbsbfSnapshot.getMax()), jamonWriter);
285       // 308, 79
286       jamonWriter.write(" blocks only</b> (hbase.ui.blockcache.by.file.max)</p> \n");
287     }
288     // 309, 7
289     jamonWriter.write("\n<table id=\"blocks_summary\" class=\"table table-striped\">\n    <tr>\n        <th>Attribute</th>\n        <th>Value</th>\n        <th>Description</th>\n    </tr>\n    <tr>\n        <td>Implementation</td>\n        <td><a href=\"");
290     // 318, 22
291     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bcUrl), jamonWriter);
292     // 318, 33
293     jamonWriter.write("\">");
294     // 318, 35
295     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bc.getClass().getSimpleName()), jamonWriter);
296     // 318, 70
297     jamonWriter.write("</a></td>\n        <td>Class implementing this block cache Level</td>\n    </tr>\n");
298     // 321, 1
299     if (bucketCache )
300     {
301       // 321, 20
302       jamonWriter.write("\n    <tr>\n        <td>Implementation</td>\n        <td>");
303       // 324, 13
304       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(((BucketCache)bc).getIoEngine()), jamonWriter);
305       // 324, 50
306       jamonWriter.write("</a></td>\n        <td>IOEngine</td>\n    </tr>\n");
307     }
308     // 327, 7
309     jamonWriter.write("\n    <tr>\n        <td>Count</td>\n        <td>");
310     // 330, 13
311     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", cbsbf.getCount())), jamonWriter);
312     // 330, 57
313     jamonWriter.write("</td>\n        <td>Count of Blocks</td>\n    </tr>\n");
314     // 333, 1
315     if (!bucketCache )
316     {
317       // 333, 21
318       jamonWriter.write("\n    <tr>\n        <td>Count</td>\n        <td>");
319       // 336, 13
320       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", cbsbf.getDataCount())), jamonWriter);
321       // 336, 61
322       jamonWriter.write("</td>\n        <td>Count of DATA Blocks</td>\n    </tr>\n");
323     }
324     // 339, 7
325     jamonWriter.write("\n    <tr>\n        <td>Size</td>\n        <td>");
326     // 342, 13
327     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(cbsbf.getSize())), jamonWriter);
328     // 342, 64
329     jamonWriter.write("</td>\n        <td>Size of Blocks</td>\n    </tr>\n");
330     // 345, 1
331     if (!bucketCache )
332     {
333       // 345, 21
334       jamonWriter.write("\n    <tr>\n        <td>Size</td>\n        <td>");
335       // 348, 13
336       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(cbsbf.getDataSize())), jamonWriter);
337       // 348, 68
338       jamonWriter.write("</td>\n        <td>Size of DATA Blocks</td>\n    </tr>\n");
339     }
340     // 351, 7
341     jamonWriter.write(" \n");
342     // 352, 1
343     if (evictions )
344     {
345       // 352, 18
346       {
347         // 352, 18
348         __jamon_innerUnit__evictions_tmpl(jamonWriter, bc);
349       }
350     }
351     // 352, 54
352     jamonWriter.write(" \n");
353     // 353, 1
354     if (bucketCache )
355     {
356       // 353, 20
357       jamonWriter.write("\n    <tr>\n        <td>Hits per Second</td>\n        <td>");
358       // 356, 13
359       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucketCacheStats.getIOHitsPerSecond()), jamonWriter);
360       // 356, 56
361       jamonWriter.write("</td>\n        <td>Block gets against this cache per second</td>\n    </tr>\n    <tr>\n        <td>Time per Hit</td>\n        <td>");
362       // 361, 13
363       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucketCacheStats.getIOTimePerHit()), jamonWriter);
364       // 361, 53
365       jamonWriter.write("</td>\n        <td>Time per cache hit</td>\n    </tr>\n");
366     }
367     // 364, 7
368     jamonWriter.write("\n</table>\n<p>View block cache <a href=\"?format=json&bcn=");
369     // 367, 47
370     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(name), jamonWriter);
371     // 367, 57
372     jamonWriter.write("\">as JSON</a> | Block cache <a href=\"?format=json&bcn=");
373     // 367, 111
374     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(name), jamonWriter);
375     // 367, 121
376     jamonWriter.write("&bcv=file\">as JSON by file</a></p>\n");
377     // 368, 1
378     if (bucketCache )
379     {
380       // 368, 20
381       jamonWriter.write("\n<p>BucketCache does not discern between DATA and META blocks so we do not show DATA counts (If deploy is using CombinedBlockCache, BucketCache is only DATA blocks</p>\n<h3>BucketCache Buckets</h3>\n<table class=\"table table-striped\">\n    <tr>\n        <th>Bucket Offset</th>\n        <th>Allocation Size</th>\n        <th>Free Count</th>\n        <th>Used Count</th>\n    </tr>\n");
382       // 378, 1
383       for (Bucket bucket: buckets )
384       {
385         // 378, 32
386         jamonWriter.write("\n    <tr>\n        <td>");
387         // 380, 13
388         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucket.getBaseOffset()), jamonWriter);
389         // 380, 41
390         jamonWriter.write("</td>\n        <td>");
391         // 381, 13
392         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucket.getItemAllocationSize()), jamonWriter);
393         // 381, 49
394         jamonWriter.write("</td>\n        <td>");
395         // 382, 13
396         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucket.getFreeBytes()), jamonWriter);
397         // 382, 40
398         jamonWriter.write("</td>\n        <td>");
399         // 383, 13
400         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucket.getUsedBytes()), jamonWriter);
401         // 383, 40
402         jamonWriter.write("</td>\n    </tr>\n");
403       }
404       // 385, 8
405       jamonWriter.write("\n</table>\n");
406     }
407     // 387, 7
408     jamonWriter.write("\n");
409     // 388, 1
410     
411 cbsbf = null;
412 
413   }
414   
415   
416   // 269, 1
417   private void __jamon_innerUnit__bc_l(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final BlockCache bc, final String name, final boolean evictions)
418     throws java.io.IOException
419   {
420     // 275, 1
421     if (bc == null )
422     {
423       // 275, 19
424       jamonWriter.write("\n<p>No ");
425       // 276, 7
426       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(name), jamonWriter);
427       // 276, 17
428       jamonWriter.write(" deployed</p>\n");
429     }
430     // 277, 1
431     else
432     {
433       // 277, 8
434       jamonWriter.write("\n");
435       // 278, 1
436       {
437         // 278, 1
438         __jamon_innerUnit__block_cache(jamonWriter, bc, name, evictions);
439       }
440       // 278, 65
441       jamonWriter.write("\n");
442     }
443     // 279, 7
444     jamonWriter.write("\n");
445   }
446   
447   
448   // 173, 1
449   private void __jamon_innerUnit__evictions_tmpl(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final BlockCache bc)
450     throws java.io.IOException
451   {
452     // 177, 1
453     
454   AgeSnapshot ageAtEvictionSnapshot = bc.getStats().getAgeAtEvictionSnapshot();
455   // Only show if non-zero mean and stddev as is the case in combinedblockcache
456   double mean = ageAtEvictionSnapshot.getMean();
457   double stddev = ageAtEvictionSnapshot.getStdDev();
458 
459     // 183, 5
460     jamonWriter.write("<tr>\n        <td>Evicted</td>\n        <td>");
461     // 185, 13
462     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getEvictedCount())), jamonWriter);
463     // 185, 72
464     jamonWriter.write("</td>\n        <td>The total number of blocks evicted</td>\n    </tr>\n    <tr>\n        <td>Evictions</td>\n        <td>");
465     // 190, 13
466     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getEvictionCount())), jamonWriter);
467     // 190, 73
468     jamonWriter.write("</td>\n        <td>The total number of times an eviction has occurred</td>\n    </tr>\n");
469     // 193, 1
470     if (mean > 0 )
471     {
472       // 193, 17
473       jamonWriter.write("\n    <tr>\n        <td>Mean</td>\n        <td>");
474       // 196, 13
475       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", (long)(ageAtEvictionSnapshot.getMean()/(1000000 * 1000)))), jamonWriter);
476       // 196, 97
477       jamonWriter.write("</td>\n        <td>Mean age of Blocks at eviction time (seconds)</td>\n    </tr>\n");
478     }
479     // 199, 7
480     jamonWriter.write("\n");
481     // 200, 1
482     if (stddev > 0 )
483     {
484       // 200, 19
485       jamonWriter.write("\n    <tr>\n        <td>StdDev</td>\n        <td>");
486       // 203, 13
487       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", (long)(ageAtEvictionSnapshot.getStdDev()/1000000))), jamonWriter);
488       // 203, 90
489       jamonWriter.write("</td>\n        <td>Standard Deviation for age of Blocks at eviction time</td>\n    </tr>\n");
490     }
491     // 206, 7
492     jamonWriter.write("\n");
493   }
494   
495   
496 }