1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
echo 'Basic statistics
qtime is the time spent by a message in the queue.
ddelay is the latency for a successful delivery to one recipient---the
end of successful delivery, minus the time when the message was queued.
xdelay is the latency for a delivery attempt---the time when the attempt
finished, minus the time when it started. The average concurrency is the
total xdelay for all deliveries divided by the time span; this is a good
measure of how busy the mailer is.
'
awk '
BEGIN {
messages = 0
recips = 0
tries = 0
deliveries = 0
succ = 0
fail = 0
mbytes = 0
rbytes = 0
}
/^m/ {
++messages
mbytes += $4
rbytes += $4 * $5
qtime += $3 - $2
recips += $5 + $6
tries += $5 + $6 + $7
if (!seen || ($2 < first)) first = $2
if (!seen || ($3 > last)) last = $3
seen = 1
}
/^d k/ { ++succ; ddelay += $5 - $3 }
/^d d/ { ++fail }
/^d/ {
++deliveries
xdelay += $5 - $4
if (!seen || ($3 < first)) first = $3
if (!seen || ($5 > last)) last = $5
seen = 1
}
END {
print "Completed messages:", messages
if (messages) {
print "Recipients for completed messages:", recips
print "Total delivery attempts for completed messages:", tries
print "Average delivery attempts per completed message:", tries / messages
print "Bytes in completed messages:", mbytes
print "Bytes weighted by success:", rbytes
print "Average message qtime (s):", qtime / messages
}
print ""
print "Total delivery attempts:", deliveries
if (deliveries) {
print " success:", succ
print " failure:", fail
print " deferral:", deliveries - succ - fail
str = sprintf("%.6f",ddelay)
print "Total ddelay (s):", str
if (succ) {
str = sprintf("%.6f",ddelay / succ)
print "Average ddelay per success (s):", str
}
str = sprintf("%.6f",xdelay)
print "Total xdelay (s):", str
str = sprintf("%.6f",xdelay / deliveries)
print "Average xdelay per delivery attempt (s):", str
if (last > first) {
print "Time span (days):", (last - first) / 86400
print "Average concurrency:", xdelay / (last - first)
}
}
}
'
|