Annotation of embedaddon/ntp/scripts/stats/peer.awk, revision 1.1
1.1 ! misho 1: # awk program to scan peerstats files and report errors/statistics
! 2: #
! 3: # usage: awk -f peer.awk peerstats
! 4: #
! 5: # format of peerstats record
! 6: # MJD sec ident stat offset (s) delay (s) disp (s)
! 7: # 49235 11.632 128.4.2.7 f414 -0.000041 0.21910 0.00084
! 8: #
! 9: # format of output dataset (time values in milliseconds)
! 10: # peerstats.19960706
! 11: # ident cnt mean rms max delay dist disp
! 12: # ==========================================================================
! 13: # 140.173.112.2 85 -0.509 1.345 4.606 80.417 49.260 1.092
! 14: # 128.4.1.20 1364 0.058 0.364 4.465 3.712 10.540 1.101
! 15: # 140.173.16.1 1415 -0.172 0.185 1.736 3.145 5.020 0.312
! 16: #...
! 17: #
! 18: BEGIN {
! 19: n = 0
! 20: MAXDISTANCE = 1.0
! 21: }
! 22: #
! 23: # scan all records in file
! 24: #
! 25: # we toss out all distances greater than one second on the assumption the
! 26: # peer is in initial acquisition
! 27: #
! 28: {
! 29: if (NF >= 7 && ($7 + $6 / 2) < MAXDISTANCE) {
! 30: i = n
! 31: for (j = 0; j < n; j++) {
! 32: if ($3 == peer_ident[j])
! 33: i = j
! 34: }
! 35: if (i == n) {
! 36: peer_ident[i] = $3
! 37: peer_tmax[i] = peer_dist[i] = -1e9
! 38: peer_tmin[i] = 1e9
! 39: n++
! 40: }
! 41: peer_count[i]++
! 42: if ($5 > peer_tmax[i])
! 43: peer_tmax[i] = $5
! 44: if ($5 < peer_tmin[i])
! 45: peer_tmin[i] = $5
! 46: dist = $7 + $6 / 2
! 47: if (dist > peer_dist[i])
! 48: peer_dist[i] = dist
! 49: peer_time[i] += $5
! 50: peer_time_rms[i] += $5 * $5
! 51: peer_delay[i] += $6
! 52: peer_disp[i] += $7
! 53: }
! 54: } END {
! 55: printf " ident cnt mean rms max delay dist disp\n"
! 56: printf "==========================================================================\n"
! 57: for (i = 0; i < n; i++) {
! 58: peer_time[i] /= peer_count[i]
! 59: peer_time_rms[i] = sqrt(peer_time_rms[i] / peer_count[i] - peer_time[i] * peer_time[i])
! 60: peer_delay[i] /= peer_count[i]
! 61: peer_disp[i] /= peer_count[i]
! 62: peer_tmax[i] = peer_tmax[i] - peer_time[i]
! 63: peer_tmin[i] = peer_time[i] - peer_tmin[i]
! 64: if (peer_tmin[i] > peer_tmax[i])
! 65: peer_tmax[i] = peer_tmin[i]
! 66: printf "%-15s%5d%9.3f%9.3f%9.3f%9.3f%9.3f%9.3f\n", peer_ident[i], peer_count[i], peer_time[i] * 1e3, peer_time_rms[i] * 1e3, peer_tmax[i] * 1e3, peer_delay[i] * 1e3, peer_dist[i] * 1e3, peer_disp[i] * 1e3
! 67: }
! 68: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>