class GroongaQueryLog::Command::Analyzer::WorkerStatistic

Attributes

id[R]
idle_time_max[R]
idle_time_mean[R]
idle_time_min[R]
idle_time_total[R]
metrics[R]
n_statistics[R]

Public Class Methods

new(id) click to toggle source
# File lib/groonga-query-log/command/analyzer/worker-statistic.rb, line 28
def initialize(id)
  @id = id
  @idle_time_total = 0.0
  @idle_time_mean = 0.0
  @idle_time_min = 0.0
  @idle_time_max = 0.0
  @n_statistics = 0
  @metrics = {
    timestamp: [],
    idle_time: [],
    elapsed: [],
  }
  @previous_statistic = nil
end

Public Instance Methods

<<(statistic) click to toggle source
# File lib/groonga-query-log/command/analyzer/worker-statistic.rb, line 43
def <<(statistic)
  @n_statistics += 1
  if @previous_statistic
    idle_time = statistic.start_time - @previous_statistic.end_time
    @idle_time_total += idle_time
    @idle_time_mean += ((idle_time - @idle_time_mean) / @n_statistics)
    if @idle_time_min.zero?
      @idle_time_min = idle_time
    else
      @idle_time_min = [@idle_time_min, idle_time].min
    end
    @idle_time_max = [@idle_time_max, idle_time].max
    @metrics[:timestamp] << statistic.start_time
    @metrics[:idle_time] << idle_time
    @metrics[:elapsed] << statistic.elapsed_in_seconds
  end
  @previous_statistic = statistic
end