Skip to content

Commit

Permalink
(PUP-7520) Update Puppet profiling timers to use monotonic clock
Browse files Browse the repository at this point in the history
This commit updates Puppet::Util::Profiler::WallClock and
Puppet::Util::Profiler::Aggregate to use
Process.clock_gettime(Process::CLOCK_MONOTONIC) instead of Time.now. Time.now
returns a value from the OS REALTIME clock which can be affected by events
like NTP updates. Process.clock_gettime(Process::CLOCK_MONOTONIC) uses a
monotonic clock which isn't affected by things like NTP updates.
  • Loading branch information
AriaXLi committed Jul 18, 2024
1 parent b6dac24 commit e0d1778
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
4 changes: 2 additions & 2 deletions lib/puppet/util/profiler/aggregate.rb
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,11 @@ def add_time(time)

class Timer
def initialize
@start = Time.now
@start = Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_second)
end

def stop
Time.now - @start
Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_second) - @start
end
end
end
4 changes: 2 additions & 2 deletions lib/puppet/util/profiler/wall_clock.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ class Timer
FOUR_DECIMAL_DIGITS = '%0.4f'

def initialize
@start = Time.now
@start = Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_second)
end

def stop
@time = Time.now - @start
@time = Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_second) - @start
@time
end

Expand Down

0 comments on commit e0d1778

Please sign in to comment.