View Javadoc

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