Looking at the code, i'm not sure they are even calculating the standard deviation correctly. They are using this formula:

dev = sqrt(  (E (sqr(x)))/N - sqr( (E(x))/N))

standard deviation is defined as
sqrt( 1 / (N) * E sqr((x - E(x)/N) ))

where E represents sigma, or the sum all items from i=1 to n.

The mean deviation is the mean of the absolute deviations, which is nothing like standard deviation.
MD = 1/N * E abs(x - E(x))

Josh, you are absolutely correct it should be sdev, not mdev. However, sdev is not being calculated correctly. When they expanded sqr(x - (E(x))/N) it should be

sqr(x) - 2x E(x)/N + sqr((E(x))/N)

They have
sqr(x) + sqr((E(x))/N)

So they essentially removed E(-2x E(x)/N) from the calculation, giving a number that is not the standard deviation. Am I off base anywhere here?

This should be an easy one to fix. I've already added a jitter calculation by retrieving the average of the differences of each response time. That should be close to the standard deviation isn't it?

Derek

Josh Coates wrote:

I searched the man page and google but can not find a definition for
mdev, which is a returned statistic when ping exits.  Does anybody
know what it is measuring?

I found the answer.  It is the standard deviation.  mdev stands for mean
deviation.

mdev is the std dev?  standard deviation is not the same thing as the mean
deviation.

http://mathworld.wolfram.com/StandardDeviation.html

http://mathworld.wolfram.com/MeanDeviation.html

i didn't look at the source, but what you've excerpted below looks like they
are assigning 'mdev' the stnd deviation, which doesn't look right.

quick, now is your chance to make a contribution to the open source
movement!!

submit a bug and patch: s/mdev/sdev/g on ping_common.c

w00t!

Josh Coates
www.jcoates.org


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of
Derek Burdick
Sent: Friday, June 17, 2005 12:28 AM
To: Provo Linux Users Group Mailing List
Subject: Re: Ping's definition of mdev


I found the answer.  It is the standard deviation.  mdev stands for mean
deviation.

Derek Burdick wrote:

I searched the man page and google but can not find a definition for
mdev, which is a returned statistic when ping exits.  Does anybody
know what it is measuring?  I have looked through the code and
determined mathematically what the algorithm does, but I don't see any
relevance to networking.  Does anybody have any insight?  I have
attached my comments on what the code is doing in case somebody knows
of a generic use for this algorithm.

Here is the sample output
3460 packets transmitted, 3451 received, 0% packet loss, time 119983ms
rtt min/avg/max/mdev = 303.108/305.426/347.859/2.979 ms, pipe 11

Here is what I believe ping_common.c is doing to determine mdev:

for each packet received and assuming tsum and tsum2 start at 0:
tsum += triptime
tsum2 += triptime * triptime

Once ping finishes
tsum /= nreceived + nrepeats // Get the average of the triptimes.  We
have 0 repeats so it has no effect here.
tsum2 /= nreceived + nrepeats // Get the average of the squared
triptimes.  Once again we have 0 repeats

tmdev = llsqrt(tsum2 - tsum * tsum); // Take the square root of the
difference of the average squared triptimes and the average triptime
squared.

tmdev is then printed as printf("%ld.%03ld ms", tmdev /1000,
tmdev%1000);  //This is giving us the results in milliseconds

If anybody has any insight or comments i'd love to hear them.

Thanks,
Derek

p.s.  This is not a class assignment.  Our sales team wants to sell IP
phone service to a client in India using the Internet for the
bandwidth.  I was looking for any numbers I could find to help me give
them a good idea of what to expect.

I think I will add a Jitter calculation in to ping as that is usually
a great indication along with packet loss on what to expect with VOIP.

Thanks again.
.===================================.
| This has been a P.L.U.G. mailing. |
|      Don't Fear the Penguin.      |
|  IRC: #utah at irc.freenode.net   |
`==================================='

.===================================.
| This has been a P.L.U.G. mailing. |
|      Don't Fear the Penguin.      |
|  IRC: #utah at irc.freenode.net   |
`==================================='



.===================================.
| This has been a P.L.U.G. mailing. |
|      Don't Fear the Penguin.      |
|  IRC: #utah at irc.freenode.net   |
`==================================='
.===================================.
| This has been a P.L.U.G. mailing. |
|      Don't Fear the Penguin.      |
|  IRC: #utah at irc.freenode.net   |
`==================================='

Reply via email to