class AmdgpuFan::Watcher
Keep track of stats over time.
Attributes
core_clock[R]
fan_speed[R]
mem_clock[R]
num_measurements[R]
power[R]
temp[R]
Public Class Methods
new(amdgpu_service)
click to toggle source
# File lib/amdgpu_fan/watcher.rb, line 10 def initialize(amdgpu_service) @amdgpu_service = amdgpu_service @num_measurements = 0 @core_clock = StatSet.new 'MHz' @mem_clock = StatSet.new 'MHz' @fan_speed = StatSet.new 'RPM' @power = StatSet.new 'W' @temp = StatSet.new '°C' end
Public Instance Methods
measure()
click to toggle source
Take a new set of measurements and adjust the stats.
# File lib/amdgpu_fan/watcher.rb, line 24 def measure @num_measurements += 1 @core_clock.now = @amdgpu_service.core_clock.to_i @mem_clock.now = @amdgpu_service.memory_clock.to_i @fan_speed.now = @amdgpu_service.fan_speed_rpm.to_i @power.now = @amdgpu_service.power_draw.to_f @temp.now = @amdgpu_service.temperature.to_i [@core_clock, @mem_clock, @fan_speed, @power, @temp].each do |stat_set| calculate_stats(stat_set) end end
Private Instance Methods
calculate_stats(stat_set)
click to toggle source
# File lib/amdgpu_fan/watcher.rb, line 40 def calculate_stats(stat_set) if num_measurements == 1 stat_set.min = stat_set.now stat_set.avg = stat_set.now.to_f stat_set.max = stat_set.now return end stat_set.min = stat_set.now if stat_set.now < stat_set.min stat_set.avg = ((stat_set.now + stat_set.avg * (num_measurements - 1)) / num_measurements.to_f) .round(1) stat_set.max = stat_set.now if stat_set.now > stat_set.max end