Последнее значение, помеченное mdev
в Linux и stddev
в Solaris, вычисляется немного по-разному в зависимости от этих ОС.
Формула, используемая Linux ping :
sqrt(smean-mean²)
, а формула, используемая Solaris ping :
sqrt((smean-mean²)*received/received-1)
, где smean
является средним значением rtt
квадратов, означает
среднее из rtt
значений, а получил
количество полученных ответов.
Вот небольшая программа 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;imax?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