netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rick Jones <rick.jones2@hp.com>
To: Jean-Michel Hautbois <jhautbois@gmail.com>
Cc: Eric Dumazet <eric.dumazet@gmail.com>, netdev@vger.kernel.org
Subject: Re: TCP communication for raw image transmission
Date: Tue, 03 Jan 2012 14:35:39 -0800	[thread overview]
Message-ID: <4F0382BB.5060601@hp.com> (raw)
In-Reply-To: <1325523137.18116.11.camel@edumazet-HP-Compaq-6005-Pro-SFF-PC>

On 01/02/2012 08:52 AM, Eric Dumazet wrote:
> Le lundi 02 janvier 2012 à 17:40 +0100, Jean-Michel Hautbois a écrit :
>
>> Mmmh, using netperf you would like to know what the client (my ARM
>> board) can do ?
>> How would you test it ? I can have an ARM board on one side, and the
>> x86 on the other...
>>
>
> x86>  netserver&
> arm>  netperf -H<arm_ip_address>  -l 60 -t TCP_STREAM
>
> 1) check cpu usage on<arm>  while test is running
> (for example : vmstat 1 )
> 2) check bandwith of test run

The "&" at the end of the netserver command is (should be) redundant - 
netserver will by default daemonize itself.

I would suggest amending the netperf command line to something more like:

netperf -H <x86IP> -c -l 60 -t TCP_STREAM -- -m <dataofoneline> -D

Which will cause netperf to make "send" calls of <dataofoneline> bytes 
(substitute dataoftwolines if you like).

The -D is to disable Nagle, which you will need to do if you really 
really want to have only one line of the picture per TCP segment.  Even 
then though, the streaming nature of TCP means you don't "really" know 
that it will go out that way onto the network.  Otherwise, leave it off 
and TCP will attempt to aggregate the sends into maximum segment sized 
segments.

The -c is to get netperf to report CPU utilization for the local/netperf 
side.

As Eric suggests, you really should just hand as much data to TCP at one 
time as you reasonably can within the constraints of the rest of your 
application

Skipping ahead a little, on the netperf side at least you might be well 
served to do:

netstat -s > before
netperf ....
netstat -s > after
beforeafter before after > delta

and then run "before" and "after" through "beforeafter" from 
ftp://ftp.cup.hp.com/dist/networking/tools or something similar - I 
think someone (here on netdev?) created a more robust version at some 
point.  Alas, beforeafter will sometimes get confused if a new statistic 
appears in after that was not present in before - the utility was 
initially developed on HP-UX, the netstat of which does not have the 
"only display non-zero values" mindset.

One other thing - your 100 Mbit/s link - is that full duplex or half? 
If half you may need to be concerned with "capture effect."  Briefly, it 
was a CSMA/CD behaviour which emerged once systems were fast enough to 
saturate the Ethernet link - the transmitting station would "capture" 
the wire (half-duplex) and the receiving station, which was still trying 
to transmit ACKs would end-up backing-off (at the PHY/data link).  Then 
the transmitter would stop transmitting, having run-out of window, but 
the receiver's NIC would still be backed-off and so the link would go 
idle.  The workaround was to either have a rather large or rather small 
(8KB, IIRC but best do some web searchings - this topic goes back to the 
1990s) TCP window.

happy benchmarking,

rick jones

  parent reply	other threads:[~2012-01-03 22:35 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-02 15:21 TCP communication for raw image transmission Jean-Michel Hautbois
2012-01-02 15:59 ` Eric Dumazet
2012-01-02 16:08   ` Jean-Michel Hautbois
2012-01-02 16:29     ` Eric Dumazet
2012-01-02 16:40       ` Jean-Michel Hautbois
2012-01-02 16:52         ` Eric Dumazet
2012-01-02 16:52           ` Eric Dumazet
2012-01-02 17:04             ` Jean-Michel Hautbois
2012-01-02 17:20             ` Jean-Michel Hautbois
2012-01-02 17:41               ` Eric Dumazet
2012-01-02 18:00                 ` Jean-Michel Hautbois
2012-01-02 18:02                   ` Jean-Michel Hautbois
2012-01-03  7:36                     ` Jean-Michel Hautbois
2012-01-03  8:06                       ` Eric Dumazet
2012-01-05  8:50                         ` Jean-Michel Hautbois
2012-01-03 22:35           ` Rick Jones [this message]
2012-01-05  9:13             ` Jean-Michel Hautbois
2012-01-05  9:40               ` Eric Dumazet
2012-01-05  9:48                 ` Jean-Michel Hautbois
2012-01-05  9:55                   ` Eric Dumazet
2012-01-05  9:57                     ` Jean-Michel Hautbois
2012-01-05 10:04                       ` Eric Dumazet
2012-01-05 18:41                         ` Rick Jones
2012-01-05 18:53                           ` Eric Dumazet
2012-01-05 19:26                             ` Rick Jones
2012-01-05 18:32                     ` Rick Jones
2012-01-05  9:49                 ` Eric Dumazet
2012-01-04  9:57 ` David Laight
2012-01-04 11:16   ` Jean-Michel Hautbois

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F0382BB.5060601@hp.com \
    --to=rick.jones2@hp.com \
    --cc=eric.dumazet@gmail.com \
    --cc=jhautbois@gmail.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).