Annotation of embedaddon/ntp/scripts/stats/peer.awk, revision 1.1.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>