[PUP-7520] Puppet profiling timers do not use a monotonic clock Created: 2017/05/11  Updated: 2018/06/08

Status: Accepted
Project: Puppet
Component/s: None
Affects Version/s: PUP 4.10.1
Fix Version/s: None

Type: Bug Priority: Normal
Reporter: Charlie Sharpsteen Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: performance
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Relates
relates to PUP-6344 metrics.time.total does not correlate... Closed
Template:
Epic Link: Puppet Performance
Team: Server
Method Found: Inspection
QA Risk Assessment: Needs Assessment

 Description   

Puppet has support for timing and profiling execution through the Puppet::Util::Profiler::WallClock class, used for profiling Puppet Server operations, and the Puppet::Util.thinmark method, used for measuring things like resource application. Historically these methods have measured time by calling Time.now. However, this method returns a value from the OS REALTIME clock, which can be affected by events like NTP updates. Since the puppet agent often initiates a NTP update, these jumps can create confusing profile results.

In 2.1.0, Ruby added methods to access a monotonic clock which isn't affected by things like NTP updates. We should prefer this clock for profiling timers when it is available:

https://ruby-doc.org/core-2.1.0/Process.html


Generated at Thu Nov 14 00:33:52 PST 2019 using JIRA 7.7.1#77002-sha1:e75ca93d5574d9409c0630b81c894d9065296414.