below.
+
----
-2015-02-23 05:40:50 203.0.113.15 3 340.529 1.606 1.046e-03 N \
- 4 6.849e-03 -4.670e-04
+2017-08-22 13:22:36 203.0.113.15 2 -3.541 0.075 -8.621e-06 N \
+ 2 2.940e-03 -2.084e-04 1.534e-02 3.472e-04 8.304e-03
----
+
The columns are as follows (the quantities in square brackets are the
values from the example line above) :
+
-. Date [2015-02-03]
+. Date [2017-08-22]
. Hour:Minute:Second. Note that the date-time pair is expressed in UTC, not the
- local time zone. [05:40:50]
+ local time zone. [13:22:36]
. The IP address of the server or peer to which the local system is synchronised.
[203.0.113.15]
-. The stratum of the local system. [3]
+. The stratum of the local system. [2]
. The local system frequency (in ppm, positive means the local system runs fast
- of UTC). [340.529]
-. The error bounds on the frequency (in ppm). [1.606]
-. The estimated local offset at the epoch (which is rapidly corrected by
- slewing the local clock. (In seconds, positive indicates the local system
- is fast of UTC). [1.046e-3]
+ of UTC). [-3.541]
+. The error bounds on the frequency (in ppm). [0.075]
+. The estimated local offset at the epoch, which is normally corrected by
+ slewing the local clock (in seconds, positive indicates the clock is fast of
+ UTC). [-8.621e-06]
. Leap status (_N_ means normal, _+_ means that the last minute of this month
has 61 seconds, _-_ means that the last minute of the month has 59 seconds,
_?_ means the clock is not currently synchronised.) [N]
-. The number of combined sources. [4]
+. The number of combined sources. [2]
. The estimated standard deviation of the combined offset (in seconds).
- [6.849e-03]
+ [2.940e-03]
. The remaining offset correction from the previous update (in seconds,
- positive means the system clock is slow of UTC). [-4.670e-04]
+ positive means the system clock is slow of UTC). [-2.084e-04]
+. The total of the network path delays to the reference clock to which
+ the local clock is ultimately synchronised (in seconds). [1.534e-02]
+. The total dispersion accumulated through all the servers back to the
+ reference clock to which the local clock is ultimately synchronised
+ (in seconds). [3.472e-04]
+. The maximum estimated error of the system clock in the interval since the
+ previous update (in seconds). It includes the offset, remaining offset
+ correction, root delay, and dispersion from the previous update with the
+ dispersion which accumulated in the interval. [8.304e-03]
+
*rtc*:::
This option logs information about the system's real-time clock. An example
}
logfileid = CNF_GetLogTracking() ? LOG_FileOpen("tracking",
- " Date (UTC) Time IP Address St Freq ppm Skew ppm Offset L Co Offset sd Rem. corr.")
+ " Date (UTC) Time IP Address St Freq ppm Skew ppm Offset L Co Offset sd Rem. corr. Root delay Root disp. Max. error")
: -1;
max_update_skew = fabs(CNF_GetMaxUpdateSkew()) * 1.0e-6;
static void
write_log(struct timespec *now, int combined_sources, double freq,
- double offset, double offset_sd, double uncorrected_offset)
+ double offset, double offset_sd, double uncorrected_offset,
+ double orig_root_distance)
{
const char leap_codes[4] = {'N', '+', '-', '?'};
+ double root_dispersion, max_error;
+ static double last_sys_offset = 0.0;
if (logfileid == -1)
return;
+ max_error = orig_root_distance + fabs(last_sys_offset);
+ root_dispersion = get_root_dispersion(now);
+ last_sys_offset = offset - uncorrected_offset;
+
LOG_FileWrite(logfileid,
- "%s %-15s %2d %10.3f %10.3f %10.3e %1c %2d %10.3e %10.3e",
+ "%s %-15s %2d %10.3f %10.3f %10.3e %1c %2d %10.3e %10.3e %10.3e %10.3e %10.3e",
UTI_TimeToLogForm(now->tv_sec),
our_ref_ip.family != IPADDR_UNSPEC ?
UTI_IPToString(&our_ref_ip) : UTI_RefidToString(our_ref_id),
our_stratum, freq, 1.0e6 * our_skew, offset,
leap_codes[our_leap_status], combined_sources, offset_sd,
- uncorrected_offset);
+ uncorrected_offset, our_root_delay, root_dispersion, max_error);
}
/* ================================================== */
double our_frequency;
double abs_freq_ppm;
double update_interval;
- double elapsed;
- double correction_rate;
+ double elapsed, correction_rate, orig_root_distance;
double uncorrected_offset, accumulate_offset, step_offset;
struct timespec now, raw_now;
NTP_int64 ref_fuzz;
if (!is_offset_ok(our_offset))
return;
+ orig_root_distance = our_root_delay / 2.0 + get_root_dispersion(&now);
+
are_we_synchronised = leap != LEAP_Unsynchronised ? 1 : 0;
our_stratum = stratum + 1;
our_ref_id = ref_id;
abs_freq_ppm = LCL_ReadAbsoluteFrequency();
- write_log(&now, combined_sources, abs_freq_ppm, our_offset, offset_sd, uncorrected_offset);
+ write_log(&now, combined_sources, abs_freq_ppm, our_offset, offset_sd,
+ uncorrected_offset, orig_root_distance);
if (drift_file) {
/* Update drift file at most once per hour */
LCL_SetSyncStatus(0, 0.0, 0.0);
- write_log(&now, 0, LCL_ReadAbsoluteFrequency(), 0.0, 0.0, uncorrected_offset);
+ write_log(&now, 0, LCL_ReadAbsoluteFrequency(), 0.0, 0.0, uncorrected_offset,
+ our_root_delay / 2.0 + get_root_dispersion(&now));
}
/* ================================================== */