ping
통계가 표시될 때 이 필드는 mdev
모든 핑 시간의 표준 편차입니다. 밀리초 단위의 평균 시간입니다 avg
.
그러나 핑 시간은 엄격하게 양수이므로 이 경우처럼 mdev
값이 어떻게 두 배보다 클 수 있는지 알 수 없습니다 .avg
내 핑 시간은 다음과 같습니다.
[...]
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
5번은 어디 인가요 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
답변1
마지막 값( mdev
Linux 및 stddev
Solaris 아래 레이블이 지정됨)은 해당 운영 체제에 따라 약간 다르게 계산됩니다.
사용된 공식은리눅스 핑예:
sqrt(smean-mean²)
그리고 사용솔라리스 플랫예:
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