[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Throughput riddle



On 03/21/2016 09:28 PM, Celejar wrote:
On Sun, 20 Mar 2016 21:49:43 -0700
David Christensen <dpchrist@holgerdanske.com> wrote:
4.  The laptop TX bytes (1.2 GiB) and NAS RX bytes (731.5 MiB) do not
correlate well.

Why would [laptop TX bytes and NAS RX bytes] match?

You want to devise experiments that isolate and measure parameters for which you have a hypothesis. My hypothesis was the laptop TX bytes should match NAS RX bytes.


The data did not match my hypothesis, so the next step is to try to figure out why.


5.  The NAS TX bytes (15.7 MiB) and laptop RX bytes (691.2 MiB) do not
correlate well.

Again, why would they match?

As above, but reversed -- NAS TX bytes and laptop RX bytes.


Please try another run per my assumptions, above.  Revise and re-post
assumptions as necessary.  Post new ifconfig, iwconfig, dmesg, and
anything else that looks like a clue.

[Before testing:]

Laptop:

ifconfig

RX packets:26691 errors:0 dropped:98 overruns:0 frame:0

Why were 98 laptop Rx packets were dropped before testing started?


           TX packets:16051 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:30347357 (28.9 MiB)  TX bytes:2245418 (2.1 MiB)

iwconfig

  Link Quality=67/70  Signal level=-43 dBm
           Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
           Tx excessive retries:3577  Invalid misc:417   Missed beacon:0

What does laptop WiFi Tx excessive retries mean? Why were there 3577 before testing started?


What does laptop WiFi Tx Invalid misc mean? Why were there 417 before testing started?



Router (wlan0):

RX packets:26691 errors:0 dropped:98 overruns:0 frame:0

Why were 98 router WiFi RX packets dropped before testing started?


           TX packets:16051 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:30347357 (28.9 MiB)  TX bytes:2245418 (2.1 MiB)

Router (eth0):

RX packets:1612778 errors:0 dropped:0 overruns:4594 frame:0

Why were 4594 router wired Rx packets overrun?


           TX packets:1732474 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:439536079 (419.1 MiB)  TX bytes:1175937292 (1.0 GiB)
           Interrupt:4
	
NAS:

RX packets:552082 errors:0 dropped:36 overruns:0 frame:0

Why were 36 NAS RX packets dropped?


           TX packets:252654 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:823241120 (785.1 MiB)  TX bytes:18133067 (17.2 MiB)
           Interrupt:87



All of the above non-zero error statistics indicate problems that need to be figured out.


iperf:

laptop -> NAS: 14.8/20.6/24.2
NAS -> laptop: 53.9/65.6/67.3

Hm, I never realized this - I'm getting 2-4 times the throughput when
reversing the direction!

laptop -> router: 8.74/10.2/11.4
router -> laptop: 53.4/56.2/57.1

Wow, 5-8 times the throughput when reversing! Thanks for the suggestion
to reverse the tests - I really should have tried that on my own.

Any idea what this means?

The iperf numbers indicate that the router is having a hard time receiving from the laptop. This could be due to a problem with the laptop transmitter, the router receiver, or both.


Double-check whatever settings you have available for your WiFi interfaces in the laptop and in the router. Document them.



[After testing:]
...

Your statistics have information from at least four (4) iperf runs. You want to isolated each run, and use automation to get consistency/ repeatability -- e.g. use the scientific method.


I'd suggest:

1. Write a script to gather data -- e.g. prints WiFi interface parameters, runs ifconfig, runs iwconfig, grep dmesg, etc..

2.  Write a script that sets up and runs one iperf test.

3. Write a script that calls #1 and saves the output to a file, calls #2 and saves the output to a file, calls #1 again and saves the output to a file, and then diff's the output of #1 before and #1 after.


Then:

4.  Cold boot everything.

5.  Run script #3.

6.  Repeat #4 and #5 until you get consistent results.

7. Change one thing and repeat #6, searching for correlation and/or causality.


David


Reply to: