View Javadoc

1   // Autogenerated Jamon implementation
2   // /grid/0/jenkins/workspace/HDP-parallel-centos7/SOURCES/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.TraditionalBinaryPrefix;
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    @Override public void renderNoFlush(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   // 271, 1
106   private void __jamon_innerUnit__bc_l(final java.io.Writer jamonWriter, final BlockCache bc, final String name, final boolean evictions)
107     throws java.io.IOException
108   {
109     // 277, 1
110     if (bc == null )
111     {
112       // 277, 19
113       jamonWriter.write("\n<p>No ");
114       // 278, 7
115       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(name), jamonWriter);
116       // 278, 17
117       jamonWriter.write(" deployed</p>\n");
118     }
119     // 279, 1
120     else
121     {
122       // 279, 8
123       jamonWriter.write("\n");
124       // 280, 1
125       {
126         // 280, 1
127         __jamon_innerUnit__block_cache(jamonWriter, bc, name, evictions);
128       }
129       // 280, 65
130       jamonWriter.write("\n");
131     }
132     // 281, 7
133     jamonWriter.write("\n");
134   }
135   
136   
137   // 284, 1
138   private void __jamon_innerUnit__block_cache(final java.io.Writer jamonWriter, final BlockCache bc, final String name, final boolean evictions)
139     throws java.io.IOException
140   {
141     // 290, 1
142     
143   final long nanosPerSecond = 1000000000;
144   String bcUrl = "http://hbase.apache.org/devapidocs/" + bc.getClass().getName().replaceAll("\\.", "/") + ".html";
145   String bcName = bc.getClass().getSimpleName();
146   org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.CachedBlocksByFile cbsbf =
147     org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.getLoadedCachedBlocksByFile(config, bc);
148   AgeSnapshot cbsbfSnapshot = cbsbf.getAgeInCacheSnapshot();
149 
150   boolean bucketCache = bc.getClass().getSimpleName().equals("BucketCache");
151   BucketCacheStats bucketCacheStats = null;
152   BucketAllocator bucketAllocator = null;
153   Bucket [] buckets = null;
154 
155   if (bucketCache) {
156     bucketCacheStats = (BucketCacheStats)bc.getStats();
157     bucketAllocator = ((BucketCache)bc).getAllocator();
158     buckets = bucketAllocator.getBuckets();
159   }
160 
161     // 309, 1
162     if (cbsbf.isFull() )
163     {
164       // 309, 23
165       jamonWriter.write("\n<p><b>Statistics below is based on sampling first ");
166       // 310, 51
167       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cbsbfSnapshot.getMax()), jamonWriter);
168       // 310, 79
169       jamonWriter.write(" blocks only</b> (hbase.ui.blockcache.by.file.max)</p> \n");
170     }
171     // 311, 7
172     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=\"");
173     // 320, 22
174     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bcUrl), jamonWriter);
175     // 320, 33
176     jamonWriter.write("\">");
177     // 320, 35
178     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bc.getClass().getSimpleName()), jamonWriter);
179     // 320, 70
180     jamonWriter.write("</a></td>\n        <td>Class implementing this block cache Level</td>\n    </tr>\n");
181     // 323, 1
182     if (bucketCache )
183     {
184       // 323, 20
185       jamonWriter.write("\n    <tr>\n        <td>Implementation</td>\n        <td>");
186       // 326, 13
187       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(((BucketCache)bc).getIoEngine()), jamonWriter);
188       // 326, 50
189       jamonWriter.write("</a></td>\n        <td>IOEngine</td>\n    </tr>\n");
190     }
191     // 329, 7
192     jamonWriter.write("\n    <tr>\n        <td>Count</td>\n        <td>");
193     // 332, 13
194     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", cbsbf.getCount())), jamonWriter);
195     // 332, 57
196     jamonWriter.write("</td>\n        <td>Count of Blocks</td>\n    </tr>\n");
197     // 335, 1
198     if (!bucketCache )
199     {
200       // 335, 21
201       jamonWriter.write("\n    <tr>\n        <td>Count</td>\n        <td>");
202       // 338, 13
203       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", cbsbf.getDataCount())), jamonWriter);
204       // 338, 61
205       jamonWriter.write("</td>\n        <td>Count of DATA Blocks</td>\n    </tr>\n");
206     }
207     // 341, 7
208     jamonWriter.write("\n    <tr>\n        <td>Size</td>\n        <td>");
209     // 344, 13
210     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(cbsbf.getSize(), "B", 1)), jamonWriter);
211     // 344, 79
212     jamonWriter.write("</td>\n        <td>Size of Blocks</td>\n    </tr>\n");
213     // 347, 1
214     if (!bucketCache )
215     {
216       // 347, 21
217       jamonWriter.write("\n    <tr>\n        <td>Size</td>\n        <td>");
218       // 350, 13
219       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(cbsbf.getDataSize(), "B", 1)), jamonWriter);
220       // 350, 83
221       jamonWriter.write("</td>\n        <td>Size of DATA Blocks</td>\n    </tr>\n");
222     }
223     // 353, 7
224     jamonWriter.write(" \n");
225     // 354, 1
226     {
227       // 354, 1
228       __jamon_innerUnit__evictions_tmpl(jamonWriter, bc);
229     }
230     // 354, 31
231     jamonWriter.write("\n");
232     // 355, 1
233     {
234       // 355, 1
235       __jamon_innerUnit__hits_tmpl(jamonWriter, bc);
236     }
237     // 355, 26
238     jamonWriter.write("\n\n");
239     // 357, 1
240     if (bucketCache )
241     {
242       // 357, 20
243       jamonWriter.write("\n    <tr>\n        <td>Hits per Second</td>\n        <td>");
244       // 360, 13
245       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucketCacheStats.getIOHitsPerSecond()), jamonWriter);
246       // 360, 56
247       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>");
248       // 365, 13
249       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucketCacheStats.getIOTimePerHit()), jamonWriter);
250       // 365, 53
251       jamonWriter.write("</td>\n        <td>Time per cache hit</td>\n    </tr>\n");
252     }
253     // 368, 7
254     jamonWriter.write("\n</table>\n<p>View block cache <a href=\"?format=json&bcn=");
255     // 371, 47
256     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(name), jamonWriter);
257     // 371, 57
258     jamonWriter.write("\">as JSON</a> | Block cache <a href=\"?format=json&bcn=");
259     // 371, 111
260     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(name), jamonWriter);
261     // 371, 121
262     jamonWriter.write("&bcv=file\">as JSON by file</a></p>\n");
263     // 372, 1
264     if (bucketCache )
265     {
266       // 372, 20
267       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 Bytes</th>\n        <th>Used Bytes</th>\n    </tr>\n");
268       // 382, 1
269       for (Bucket bucket: buckets )
270       {
271         // 382, 32
272         jamonWriter.write("\n    <tr>\n        <td>");
273         // 384, 13
274         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucket.getBaseOffset()), jamonWriter);
275         // 384, 41
276         jamonWriter.write("</td>\n        <td>");
277         // 385, 13
278         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucket.getItemAllocationSize()), jamonWriter);
279         // 385, 49
280         jamonWriter.write("</td>\n        <td>");
281         // 386, 13
282         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucket.getFreeBytes()), jamonWriter);
283         // 386, 40
284         jamonWriter.write("</td>\n        <td>");
285         // 387, 13
286         org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bucket.getUsedBytes()), jamonWriter);
287         // 387, 40
288         jamonWriter.write("</td>\n    </tr>\n");
289       }
290       // 389, 8
291       jamonWriter.write("\n</table>\n");
292     }
293     // 391, 7
294     jamonWriter.write("\n");
295     // 392, 1
296     
297 cbsbf = null;
298 
299   }
300   
301   
302   // 233, 1
303   private void __jamon_innerUnit__bc_stats(final java.io.Writer jamonWriter, final CacheConfig cacheConfig)
304     throws java.io.IOException
305   {
306     // 237, 1
307     if (cacheConfig == null || cacheConfig.getBlockCache() == null )
308     {
309       // 237, 67
310       jamonWriter.write("\n<p>CacheConfig is null</p>\n");
311     }
312     // 239, 1
313     else
314     {
315       // 239, 8
316       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>");
317       // 248, 13
318       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(cacheConfig.getBlockCache().getCurrentSize(),
319             "B", 1)), jamonWriter);
320       // 249, 23
321       jamonWriter.write("</td>\n        <td>Current size of block cache in use (bytes)</td>\n    </tr>\n    <tr>\n        <td>Free</td>\n        <td>");
322       // 254, 13
323       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(cacheConfig.getBlockCache().getFreeSize(),
324             "B", 1)), jamonWriter);
325       // 255, 23
326       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>");
327       // 260, 13
328       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", cacheConfig.getBlockCache().getBlockCount())), jamonWriter);
329       // 260, 84
330       jamonWriter.write("</td>\n        <td>Number of blocks in block cache</td>\n    </tr>\n    ");
331       // 263, 5
332       {
333         // 263, 5
334         __jamon_innerUnit__evictions_tmpl(jamonWriter, cacheConfig.getBlockCache());
335       }
336       // 263, 60
337       jamonWriter.write("\n    ");
338       // 264, 5
339       {
340         // 264, 5
341         __jamon_innerUnit__hits_tmpl(jamonWriter, cacheConfig.getBlockCache());
342       }
343       // 264, 55
344       jamonWriter.write("\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");
345     }
346     // 268, 7
347     jamonWriter.write("\n");
348   }
349   
350   
351   // 119, 1
352   private void __jamon_innerUnit__bc_config(final java.io.Writer jamonWriter, final CacheConfig cacheConfig)
353     throws java.io.IOException
354   {
355     // 123, 1
356     if (cacheConfig == null )
357     {
358       // 123, 28
359       jamonWriter.write("\n<p>CacheConfig is null</p>\n");
360     }
361     // 125, 1
362     else
363     {
364       // 125, 8
365       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>");
366       // 134, 13
367       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheDataOnRead()), jamonWriter);
368       // 134, 54
369       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>");
370       // 140, 13
371       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheDataOnWrite()), jamonWriter);
372       // 140, 55
373       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>");
374       // 145, 13
375       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheIndexesOnWrite()), jamonWriter);
376       // 145, 58
377       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>");
378       // 150, 13
379       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheBloomsOnWrite()), jamonWriter);
380       // 150, 57
381       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>");
382       // 155, 13
383       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldEvictOnClose()), jamonWriter);
384       // 155, 51
385       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>");
386       // 161, 13
387       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldCacheDataCompressed()), jamonWriter);
388       // 161, 58
389       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>");
390       // 166, 13
391       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(cacheConfig.shouldPrefetchOnOpen()), jamonWriter);
392       // 166, 53
393       jamonWriter.write("</td>\n        <td>True if blocks are prefetched into cache on open</td>\n    </tr>\n</table>\n");
394     }
395     // 170, 7
396     jamonWriter.write("\n");
397   }
398   
399   
400   // 77, 1
401   private void __jamon_innerUnit__bc_baseInfo(final java.io.Writer jamonWriter, final CacheConfig cacheConfig, final String bcUrl, final String bcName)
402     throws java.io.IOException
403   {
404     // 83, 1
405     
406   BlockCache bc = cacheConfig == null? null: cacheConfig.getBlockCache();
407   BlockCache [] bcs = bc == null? null: bc.getBlockCaches();
408   String bcl1Url = null;
409   String bcl1Name = null;
410   String bcl2Url = null;
411   String bcl2Name = null;
412   if (bcs != null) {
413     BlockCache bcl1 = bcs[0];
414     if (bcl1 != null) {
415       bcl1Url = "http://hbase.apache.org/devapidocs/" + bcl1.getClass().getName().replaceAll("\\.", "/") + ".html";
416       bcl1Name = bcl1.getClass().getSimpleName();
417     }
418     if (bcs.length == 2) {
419       BlockCache bcl2 = bcs[1];
420       bcl2Url = "http://hbase.apache.org/devapidocs/" + bcl2.getClass().getName().replaceAll("\\.", "/") + ".html";
421       bcl2Name = bcl2.getClass().getSimpleName();
422     }
423   }
424 
425     // 103, 1
426     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=\"");
427     // 112, 22
428     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bcUrl), jamonWriter);
429     // 112, 33
430     jamonWriter.write("\">");
431     // 112, 35
432     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(bcName), jamonWriter);
433     // 112, 47
434     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");
435   }
436   
437   
438   // 173, 1
439   private void __jamon_innerUnit__evictions_tmpl(final java.io.Writer jamonWriter, final BlockCache bc)
440     throws java.io.IOException
441   {
442     // 177, 1
443     
444   AgeSnapshot ageAtEvictionSnapshot = bc.getStats().getAgeAtEvictionSnapshot();
445   // Only show if non-zero mean and stddev as is the case in combinedblockcache
446   double mean = ageAtEvictionSnapshot.getMean();
447 
448     // 182, 5
449     jamonWriter.write("<tr>\n        <td>Evicted</td>\n        <td>");
450     // 184, 13
451     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getEvictedCount())), jamonWriter);
452     // 184, 72
453     jamonWriter.write("</td>\n        <td>The total number of blocks evicted</td>\n    </tr>\n    <tr>\n        <td>Evictions</td>\n        <td>");
454     // 189, 13
455     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getEvictionCount())), jamonWriter);
456     // 189, 73
457     jamonWriter.write("</td>\n        <td>The total number of times an eviction has occurred</td>\n    </tr>\n");
458     // 192, 1
459     if (mean > 0 )
460     {
461       // 192, 17
462       jamonWriter.write("\n    <tr>\n        <td>Mean</td>\n        <td>");
463       // 195, 13
464       org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", (long)(ageAtEvictionSnapshot.getMean()/(1000000 * 1000)))), jamonWriter);
465       // 195, 97
466       jamonWriter.write("</td>\n        <td>Mean age of Blocks at eviction time (seconds)</td>\n    </tr>\n");
467     }
468     // 198, 7
469     jamonWriter.write("\n");
470   }
471   
472   
473   // 201, 1
474   private void __jamon_innerUnit__hits_tmpl(final java.io.Writer jamonWriter, final BlockCache bc)
475     throws java.io.IOException
476   {
477     // 205, 5
478     jamonWriter.write("<tr>\n        <td>Hits</td>\n        <td>");
479     // 207, 13
480     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getHitCount())), jamonWriter);
481     // 207, 68
482     jamonWriter.write("</td>\n        <td>Number requests that were cache hits</td>\n    </tr>\n    <tr>\n        <td>Hits Caching</td>\n        <td>");
483     // 212, 13
484     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getHitCachingCount())), jamonWriter);
485     // 212, 75
486     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>");
487     // 217, 13
488     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getMissCount())), jamonWriter);
489     // 217, 69
490     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>");
491     // 222, 13
492     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,d", bc.getStats().getMissCount())), jamonWriter);
493     // 222, 69
494     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>");
495     // 227, 13
496     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%,.2f", bc.getStats().getHitRatio() * 100)), jamonWriter);
497     // 227, 76
498     org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf("%"), jamonWriter);
499     // 227, 85
500     jamonWriter.write("</td>\n        <td>Hit Count divided by total requests count</td>\n    </tr>\n\n");
501   }
502   
503   
504 }