freebsd-dev/usr.sbin/xntpd/scripts/stats/loop.awk

50 lines
1.3 KiB
Awk
Raw Normal View History

1993-12-21 18:36:48 +00:00
# awk program to scan loopstats files and report errors/statistics
#
# usage: awk -f loop.awk loopstats
#
# format of loopstats record
# MJD sec time (s) freq (ppm) tc
# 49235 3.943 0.000016 22.4716 0
#
BEGIN {
loop_tmax = loop_fmax = -1e9
loop_tmin = loop_fmin = 1e9
}
#
# scan all records in file
#
{
if (NF >= 5) {
loop_count++
if ($3 > loop_tmax)
loop_tmax = $3
if ($3 < loop_tmin)
loop_tmin = $3
if ($4 > loop_fmax)
loop_fmax = $4
if ($4 < loop_fmin)
loop_fmin = $4
loop_time += $3
loop_time_rms += $3 * $3
loop_freq += $4
loop_freq_rms += $4 * $4
}
} END {
if (loop_count > 0) {
loop_time /= loop_count
loop_time_rms = sqrt(loop_time_rms / loop_count - loop_time * loop_time)
loop_freq /= loop_count
loop_freq_rms = sqrt(loop_freq_rms / loop_count - loop_freq * loop_freq)
loop_tmax = loop_tmax - loop_time
loop_tmin = loop_time - loop_tmin
if (loop_tmin > loop_tmax)
loop_tmax = loop_tmin
loop_fmax = loop_fmax - loop_freq
loop_fmin = loop_time - loop_fmin
if (loop_fmin > loop_fmax)
loop_fmax = loop_fmin
printf "loop %d, %.0f+/-%.1f, rms %.1f, freq %.2f+/-%0.3f, rms %.3f\n", loop_count, loop_time * 1e6, loop_tmax * 1e6, loop_time_rms * 1e6, loop_freq, loop_fmax, loop_freq_rms
}
}