Module: Mudis::Metrics

Included in:
Mudis
Defined in:
lib/mudis/metrics.rb

Overview

Metrics module handles tracking of cache hits, misses, evictions and memory usage

Instance Method Summary collapse

Instance Method Details

#metricsObject

Returns a snapshot of metrics (thread-safe)



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/mudis/metrics.rb', line 7

def metrics # rubocop:disable Metrics/MethodLength
  @metrics_mutex.synchronize do
    {
      hits: @metrics[:hits],
      misses: @metrics[:misses],
      evictions: @metrics[:evictions],
      rejected: @metrics[:rejected],
      total_memory: current_memory_bytes,
      least_touched: least_touched(10),
      buckets: buckets.times.map do |idx|
        {
          index: idx,
          keys: @stores[idx].size,
          memory_bytes: @current_bytes[idx],
          lru_size: @lru_nodes[idx].size
        }
      end
    }
  end
end

#reset_metrics!Object

Resets metric counters (thread-safe)



29
30
31
32
33
# File 'lib/mudis/metrics.rb', line 29

def reset_metrics!
  @metrics_mutex.synchronize do
    @metrics = { hits: 0, misses: 0, evictions: 0, rejected: 0 }
  end
end