Poor results of network perfomance with 5.2.1-p9.

Nikolay Pavlov quetzal at roks.biz
Mon Aug 23 02:55:08 PDT 2004


Hi, FreeBSD users.
	I have made a smimple test of my network connection and have 
received rather modest results of network perfomance. Here is my 
test conditions:
		------------------------------
		|FreeBSD4.10-p2 CUSTOM kernel|
		|LANRealTek100Mb/s 	     | 	
		|192.168.35.3		     |				
		------------------------------
			|
			|	
		------------------------------
		|D-Link DWL-900AP+	     | 
		|Wireless11Mb/s		     | 
		------------------------------
			|
			|
		------------------------------
		|Wireless11Mb/s		     |
		|D-Link DWL-900AP+	     |
		------------------------------
			|
			|
		-------------------------------
		|192.168.35.4		      |
		|LANRealTek100Mb/s	      |	
		|FreeBSD5.2.1-p9 CUSTOM kernel|
		-------------------------------
		 
For my tests I use benchmarks/netperf (TCP client-server model) and net/pchar
(don't need special server on the other side, test based on UDP/ICMP rtt). 
Results:
1. From 4.10 side:

1.1. pchar test using UDP
=============================================================================

pathfinder# pchar 192.168.35.4
pchar to 192.168.35.4 (192.168.35.4) using UDP/IPv4
Using raw socket input
Packet size increments from 32 to 1500 by 32
46 test(s) per repetition
32 repetition(s) per hop
 0: 192.168.35.3 (pathfinder) 
    Partial loss:      0 / 1472 (0%)
    Partial char:      rtt = 1.678817 ms, (b = 0.002133 ms/B), r2 = 0.999667
                       stddev rtt = 0.004743, stddev b = 0.000006
    Partial queueing:  avg = 0.000310 ms (145 bytes)
    Hop char:          rtt = 1.678817 ms, bw = 3750.725109 Kbps
    Hop queueing:      avg = 0.000310 ms (145 bytes)
 1: 192.168.35.4 (pioneer) 
    Path length:       1 hops
    Path char:         rtt = 1.678817 ms r2 = 0.999667
    Path bottleneck:   3750.725109 Kbps
		       ^^^^^^^^^^^^^^^^
    Path pipe:         787 bytes
    Path queueing:     average = 0.000310 ms (145 bytes)
    Start time:        Mon Aug 23 11:34:40 2004
    End time:          Mon Aug 23 11:40:54 2004

1.2. netperf test using TCP_STREAM
============================================================================

pathfinder# /usr/local/netperf/netperf -v 2 -H 192.168.35.4
TCP STREAM TEST to 192.168.35.4 : histogram
Recv   Send    Send
Socket Socket  Message  Elapsed
Size   Size    Size     Time     Throughput
bytes  bytes   bytes    secs.    10^6bits/sec
131072 131072 131072    10.23       4.25
				 ^^^^^^^^^^^^
Alignment      Offset         Bytes    Bytes       Sends   Bytes    Recvs
Local  Remote  Local  Remote  Xfered   Per                 Per
Send   Recv    Send   Recv             Send (avg)          Recv (avg)
    8       8      0       0 5.436e+06  132580.29     41   1492.12   3643
Maximum
Segment
Size (bytes)
  1448
Histogram of time spent in send() call.
TENTH_MSEC    :    0:    0:    0:    0:    0:    0:    1:    0:    0:    0
UNIT_MSEC     :    0:    0:    0:    0:    0:    0:    0:    0:    0:    0
TEN_MSEC      :    0:    0:    0:    0:    0:    0:    0:    0:    0:    0
HUNDRED_MSEC  :    0:    2:   34:    4:    0:    0:    0:    0:    0:    0
UNIT_SEC      :    0:    0:    0:    0:    0:    0:    0:    0:    0:    0
TEN_SEC       :    0:    0:    0:    0:    0:    0:    0:    0:    0:    0
>100_SECS: 0
HIST_TOTAL:      41

2. From 5.2.1 side:

2.1. pchar test using UDP
============================================================================

pioneer# pchar 192.168.35.3
pchar to 192.168.35.3 (192.168.35.3) using UDP/IPv4
Using raw socket input
Packet size increments from 32 to 1500 by 32
46 test(s) per repetition
32 repetition(s) per hop
 0: 192.168.35.4 (pioneer)
    Partial loss:      84 / 1472 (5%)
    Partial char:      rtt = 1.621225 ms, (b = 0.002300 ms/B), r2 = 0.946789
                       stddev rtt = 0.066426, stddev b = 0.000082
    Partial queueing:  avg = 0.002433 ms (1057 bytes)
    Hop char:          rtt = 1.621225 ms, bw = 3477.844143 Kbps
    Hop queueing:      avg = 0.002433 ms (1057 bytes)
 1: 192.168.35.3 (pathfinder)
    Path length:       1 hops
    Path char:         rtt = 1.621225 ms r2 = 0.946789
    Path bottleneck:   3477.844143 Kbps
    Path pipe:         704 bytes
    Path queueing:     average = 0.002433 ms (1057 bytes)
    Start time:        Mon Aug 23 11:20:24 2004
    End time:          Mon Aug 23 11:30:39 2004

 
2.2. netperf test using TCP_STREAM
============================================================================

pioneer# /usr/local/netperf/netperf -v 2 -H 192.168.35.3
TCP STREAM TEST to 192.168.35.3 : histogram
Recv   Send    Send
Socket Socket  Message  Elapsed
Size   Size    Size     Time     Throughput
bytes  bytes   bytes    secs.    10^6bits/sec
131072 131072 131072    10.75       0.64
				^^^^^^^^^^^^^
Alignment      Offset         Bytes    Bytes       Sends   Bytes    Recvs
Local  Remote  Local  Remote  Xfered   Per                 Per
Send   Recv    Send   Recv             Send (avg)          Recv (avg)
    8       8      0       0 8.601e+05  143352.00      6   1455.35    591
Maximum
Segment
Size (bytes)
  1448
Histogram of time spent in send() call.
TENTH_MSEC    :    0:    0:    0:    0:    0:    0:    1:    0:    0:    0
UNIT_MSEC     :    0:    0:    0:    0:    0:    0:    0:    0:    0:    0
TEN_MSEC      :    0:    0:    0:    0:    0:    0:    0:    0:    0:    0
HUNDRED_MSEC  :    0:    0:    0:    0:    0:    0:    0:    1:    3:    0
UNIT_SEC      :    0:    0:    0:    0:    0:    0:    1:    0:    0:    0
TEN_SEC       :    0:    0:    0:    0:    0:    0:    0:    0:    0:    0
>100_SECS: 0
HIST_TOTAL:      6


As you can see there is almost no diffrence between pchar udp tests
(3750.725109 Kbps against 3477.844143 Kbps), but in netperf test
4.10 in 10.23 sec has made 41 send() (4.25Mb/s) against 6! send() in 10.75  sec 
(0.64Mb/s). What is the secret of so poor perfomance? Could you please help me 
in correct understanding of this test? 

P.S. Some additional information:
There is no WITNESS, INVARIANTS, INVARIANT_SUPPORT, SMP in 5.2.1 kernel.
ipfw_type=OPEN in 5.2.1 and corresponding pass rule in top off firewall
ruleset in 4.10. 
tcp.sendspace and recvspace = 131072 in both OS.
In test I use "clear" conditions, but in real work this connection is 
ecrypted by IPsec so my working productivity is much more slower. 
If you need more info just let me know.

Best regards and sorry for my english, 
			Nikolay Pavlov.


More information about the freebsd-current mailing list