1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.io.hfile.bucket;
20
21 import java.util.concurrent.atomic.AtomicLong;
22
23 import org.apache.hadoop.classification.InterfaceAudience;
24 import org.apache.hadoop.hbase.io.hfile.CacheStats;
25 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
26
27
28
29
30 @InterfaceAudience.Private
31 public class BucketCacheStats extends CacheStats {
32 private final AtomicLong ioHitCount = new AtomicLong(0);
33 private final AtomicLong ioHitTime = new AtomicLong(0);
34 private final static int nanoTime = 1000000;
35 private long lastLogTime = EnvironmentEdgeManager.currentTimeMillis();
36
37 public void ioHit(long time) {
38 ioHitCount.incrementAndGet();
39 ioHitTime.addAndGet(time);
40 }
41
42 public long getIOHitsPerSecond() {
43 long now = EnvironmentEdgeManager.currentTimeMillis();
44 long took = (now - lastLogTime) / 1000;
45 lastLogTime = now;
46 return ioHitCount.get() / took;
47 }
48
49 public double getIOTimePerHit() {
50 long time = ioHitTime.get() / nanoTime;
51 long count = ioHitCount.get();
52 return ((float) time / (float) count);
53 }
54
55 public void reset() {
56 ioHitCount.set(0);
57 ioHitTime.set(0);
58 }
59 }