Understanding chronyc command fields

Hi,
I am using chronyc to check the status of synchronization. I am trying to interpret the meaning of the fields associated with several chronic commands such as tracking, sources, sourcestats. I need help confirming some of the understanding that I have developed from the website Ubuntu Manpage: chronyc - command-line interface for chrony daemon

chornyc tracking :
Example data from my computer

Reference ID    : AC693CA7 (ntp-pool.time.4v1.in)
Stratum         : 7
Ref time (UTC)  : Sun Mar 24 16:19:48 2024
System time     : 0.000063957 seconds slow of NTP time
Last offset     : +0.000293266 seconds
RMS offset      : 0.000904153 seconds
Frequency       : 7.241 ppm slow
Residual freq   : +0.015 ppm
Skew            : 0.370 ppm
Root delay      : 0.062447630 seconds
Root dispersion : 0.002806796 seconds
Update interval : 258.5 seconds
Leap status     : Normal

I am confused with system time and last offset fields.
The explanation provided at the attached link above states that system time represents the time difference between the current system time and true time as estimated by Chronyd, whereas the last offset indicates the estimated local offset on the last clock update.

Queries:

  1. What does local offset mean? does it refer to the time difference between the current system time and true NTP time?
  2. A positive value of the last offset means that the local time(I assume that refers to system time) is ahead of time sources. In the above terminal output of chronic tracking, system time indicates that the system is behind(slow of) NTP time, but the last offset is positive. What does this situation mean?
    What is the difference in system time and offset?
    I see that when I do chronyc sourcestats, I get one of the fields as offset. What is the difference in the offset specified here and the system time specified under chronyc tracking, I don’t see that they have the same values.
  3. What are the criteria for chronyd to change the leap status from unsynchronized to normal?
    Is it just based on the difference between the current system time and NTP’s estimated true time?

Thank you for the help!

Last offset is the change in the current estimate of true time. System time shows how close is the system clock to that estimate of true time. Even if the estimate steps ahead, it can still be behind the system clock. The signs don’t have to be the same.

sourcestats show the estimated offset for each individual source. tracking shows the combined and weighted result.

The leap status is changed when there is any update to a synchronized source.

1 Like

Just like you I’m also trying to interpret the output of chronyc commands. Here is what I’ve gathered:

To understand System Time in the chronyc tracking output the basic thing you need to keep in mind is that there are at least 3 clocks in action on any system:

a: RTC Clock (keeps time when the system is off and is periodically updated by the OS or Chrony,)

b: The Main System or the Kernel Clock (Kept by the Operating Sysem like Debian. It gets its tick from the hardware clock source from the motherboard)

c. Chrony Virtual Clock that syncs time from the external NTP servers. This virtual clock then applies the slew to the software based System clock.

d. You can also consider the remote NTP servers as the fourth clock.

As far as I’ve understood the System Time field is the remaining correction between the Debian System Clock and the virtual clock maintained by Chrony.

Offset is the difference in seconds between the System Clock and the remote NTP Time Server’s clocks.

Most of the chronyc tracking output is calculated from the combined output of all the NTP servers with the star and the plus signs in the “chronyc sources” output. (To check individual server values you may use the “chronyc ntpdata” command.)

The issue is “Last Offset” value seems to be associated with only one primary NTP server
i.e. ntp-pool.time.4v1.in. Had you posted the output of the chronyc sources command I could have showed it here.

Anyway to prove my point run chronyc tracking and then chronyc sources.

For the primary NTP server under the Last sample column (from sources) subtract the value in brackets from the Last offset value (from tracking) and you’ll get the value to the left of the bracket.