Let's try a simplistic example to show how the numbers work.
In the house you have a tap discharging into a sink. There is no plug in the sink and the sink discharges into the outlet pipe for the house. The plughole is bigger than the pipe to the tap so that the sink can clear away more water than the tap can put in.
The pipe to the tap has a nominal flow capacity of 2 unite per second but the internal resistance in the pipe means that only 1.8 units per second can physically flow through the pipe. In the house there are also people showering, taking baths etc and the dishwasher and washing machine are also pushing water into the main outlet pipe.
We know that the sink will normally discharge 1.8 units per second. However, the dishwasher starts pumping out so the main outlet is already full of water when the discharge from the sink gets there. Let's assume that only half of the water coming out of the sink can actually be taken away by the outlet because of the other flow. The flow out of the sink is then 0.9 units per second and the sink starts filling at 0.9 units per second. Once the dishwasher has finished pumping, the outlet pipe dries up and the sink can stop backing up and get rid off the water that has collected. Let's assume that this happens in the same amount of time that the backing up happened. The outlet rate from the sink will then be 2.7 units per second.
Now suppose we want to measure the flow of water from the pipe through the sink and into the outlet using the speedtest.net model and measuring the rate of our particular flow through the outlet pipe. We'll assume there are 20 chunks of time in the sample and that there are 6 dishwasher type events during that period. That means there will be 6 chunks at 0.9 units per second, 6 chunks at 2.7 units per second and 8 chunks at 1.8 units per second. The speedtest.net model drops the lowest 30% (6 x 0.9 units per second) and the top 10% (2 x 2.7 units per second) leaving 8 x 1.8 units per second and 4 x 2.7 units per second. This gives an average of 2.1 units per second. We know this is impossible because in ideal circumstances the inlet can only handle 2 units per second, but it is what the algorithm produces.
Now replace the inlet pipe with your internet connection, the sink with your buffer or internal memory and the outlet pipe as the flow of work through the CPU and I hope you can see how a clearly impossible result can be achieved through statistical manipulation.
Edited by GonePostal (Sun 28-Jul-13 09:38:35)