lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 03 Jan 2012 14:35:39 -0800
From:	Rick Jones <rick.jones2@...com>
To:	Jean-Michel Hautbois <jhautbois@...il.com>
CC:	Eric Dumazet <eric.dumazet@...il.com>, netdev@...r.kernel.org
Subject: Re: TCP communication for raw image transmission

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
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ