View Javadoc

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