Ping
平統計
顯示統計資訊時
ping
,該欄位mdev
是所有 ping 時間的標準偏差。它是平均值的平均時間(以毫秒為單位)avg
。但是因為 ping 時間是非常積極的,所以我不明白怎麼
mdev
可能高於 的兩倍avg
,就像在這種情況下:我有這個 ping 時間:
[...] 64 bytes from 192.168.1.1: icmp_seq=76 ttl=128 time=1.95 ms ^C --- 192.168.1.1 ping statistics --- 76 packets transmitted, 76 received, 0% packet loss, time 75097ms rtt min/avg/max/mdev = 1.617/13.289/468.557/66.726 ms
哪裡
mdev
是五次avg
。編輯:原始數據:1.91,2.83,4.41,1.83,2.98,2.18,2.15,1.68,2.30,2.04,1.64,1.98,1.69,1.88,1.91,1.83,1.70,2.00,2.03,1.89,2.36,2.12,2.07 ,1.91,1.84,2.04,2.05,2.10,2.19,2.22,1.94,2.13,1.98,2.08,1.62,3.29,2.17,1.99,2.38,2.55,2.16,1.90,1.92,1.90,2.89,2.04,2.05,2.12 ,2.18,1.61,2.08,1.90,2.17,3.01,1.84,2.12,20.9,362,2.07,2.31,2.42,2.05,2.47,2.55,2.13,2.56,2.07,468,2.33,2.32,1.93,1.87,2.50 ,1.82,2.45,1.95
mdev
在 Linux 和Solaris 下標記的最後一個值stddev
根據這些作業系統的不同計算略有不同。Linux ping使用的公式是:
sqrt(smean-mean²)
而Solaris ping使用的是:
sqrt((smean-mean²)*received/received-1)
是平方的
smean
平均值,值的平均值和收到的答案的數量。rtt``mean``rtt``received
這是一個
awk
使用您的數據並顯示如何計算這些值的小程序。echo "1.91 2.83 4.41 1.83 2.98 2.18 2.15 1.68 2.30 2.04 1.64 1.98 1.69 1.88 1.91 1.83 1.70 2.00 2.03 1.89 2.36 2.12 2.07 1.91 1.84 2.04 2.05 2.10 2.19 2.22 1.94 2.13 1.98 2.08 1.62 3.29 2.17 1.99 2.38 2.55 2.16 1.90 1.92 1.90 2.89 2.04 2.05 2.12 2.18 1.61 2.08 1.90 2.17 3.01 1.84 2.12 20.9 362 2.07 2.31 2.42 2.05 2.47 2.55 2.13 2.56 2.07 468 2.33 2.32 1.93 1.87 2.50 1.82 2.45 1.95" | awk ' function abs(v) {return v < 0 ? -v : v} BEGIN { min=0x7fffffff; } { for(i=0;i<NF;i++) { received++ v=$i min=v<min?v:min; max=v>max?v:max; sum+=v sum2+=v*v } } END { mean=sum/received smean=sum2/received printf("received=%d, min=%f, avg=%f, max=%f\n",received,min,sum/received,max) printf("Linux ping mdev: %f\n", sqrt(smean-(mean*mean))) printf("Solaris ping stddev: %f\n", sqrt(((smean-(mean*mean))*received)/(received-1))) } '
它的輸出與您的測試一致:
received=76, min=1.610000, avg=13.294211, max=468.000000 Linux ping mdev: 66.632781 Solaris ping stddev: 67.075529