Re: report: client v. server


On Thu, 9 Sep 2004, jesse butler wrote:

> This is what I would expect to see, about the same.  But, if I use
> multiple threads, I see quite a difference in the SUM report on the
> server and client.   For example, running 32 threads on the client, I see
>
>     [SUM]  0.0-10.0 sec  1.10 GBytes   942 Mbits/sec
>
> but the server report is:
>
>     [SUM]  0.0-19.0 sec  1.10 GBytes   496 Mbits/sec
>
> Why the discrepancy, and which numbers should I use for my own research?

The client completes when data has moved only to the client network
stack.
The server completes when data has moved all the way to the server
application.
This may be significantly longer for the server, especially if you
have big socket buffers (iperf's -w option).

I suspect that the -w option is the same for every thread whatever the
number of threads, thus resulting in a 32x bigger aggregate socket
buffer for 32 threads.

You could confirm this tentative explanation in multiple ways:

- run longer tests, so the aggregate buffer size becomes negligible
  compared to the amount of data transfered.

- keep the aggregate buffer size constant, reducing -w while
increasing -P

- quickly patch iperf to add the SO_LINGER option on the client
  sockets, preventing it to complete before data has actually been
  received by the server[*].


Please give us in the future the exact command lines used, all invoked
options included. Thanks in advance for sharing here your progress on
this issue.

Cheers,

Marc.


[*] some time ago, I was surprised SO_LINGER was not the default. Does
anyone has some historical background on this option ? Thanks in
advance.

-- 
"Je n'ai fait cette lettre-ci plus longue que parce que je n'ai pas eu
le loisir de la faire plus courte." -- Blaise Pascal



Other Mailing lists | Author Index | Date Index | Subject Index | Thread Index