Class: Perfm::SidekiqGvlMetricsAnalyzer

Inherits:
Object
  • Object
show all
Defined in:
lib/perfm/sidekiq_gvl_metrics_analyzer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(start_time: nil, end_time: nil, job_class: nil, queue: nil) ⇒ SidekiqGvlMetricsAnalyzer

Returns a new instance of SidekiqGvlMetricsAnalyzer.



7
8
9
10
11
12
13
14
# File 'lib/perfm/sidekiq_gvl_metrics_analyzer.rb', line 7

def initialize(start_time: nil, end_time: nil, job_class: nil, queue: nil)
  @start_time = start_time
  @end_time = end_time
  @query = SidekiqGvlMetric.where(true)
  @query = @query.where(job_class: job_class) if job_class
  @query = @query.where(queue: queue) if queue
  @query = @query.where(created_at: start_time..end_time) if start_time && end_time
end

Instance Attribute Details

#end_timeObject (readonly)

Returns the value of attribute end_time.



5
6
7
# File 'lib/perfm/sidekiq_gvl_metrics_analyzer.rb', line 5

def end_time
  @end_time
end

#queryObject (readonly)

Returns the value of attribute query.



5
6
7
# File 'lib/perfm/sidekiq_gvl_metrics_analyzer.rb', line 5

def query
  @query
end

#start_timeObject (readonly)

Returns the value of attribute start_time.



5
6
7
# File 'lib/perfm/sidekiq_gvl_metrics_analyzer.rb', line 5

def start_time
  @start_time
end

Instance Method Details

#analyzeObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/perfm/sidekiq_gvl_metrics_analyzer.rb', line 16

def analyze
  return {} if query.count.zero?

  result = {}
  result[:total_io_percentage] = total_io_percentage
  result[:total_io_and_stall_percentage] = total_io_and_stall_percentage
  result[:average_processing_time_ms] = average_processing_time_ms
  result[:average_stall_ms] = average_stall_ms
  result[:job_count] = job_count
  result[:time_range] = time_range_info
  result[:by_job_class] = metrics_by_job_class
  result[:by_queue] = metrics_by_queue
  result
end