On Wed, 16 Aug 2006 16:55:32 -0400
Benjamin LaHaise <[EMAIL PROTECTED]> wrote:

> Hello folks,
> 
> In looking at a few benchmarks (especially netperf) run locally, it seems 
> that tcp is unable to make full use of available CPU cycles as the sender 
> is throttled waiting for ACKs to arrive.  The problem is exacerbated when 
> the sender is using a small send buffer -- running netperf -C -c -- -s 1024 
> show a miserable 420Kbit/s at essentially 0% CPU usage.  Tests over gige 
> are similarly constrained to a mere 96Mbit/s.

What ethernet hardware? The defaults are often not big enough
for full speed on gigabit hardware. I need increase rmem/wmem to allow
for more buffering. 

> Since there is no way for the receiver to know if the sender is being 
> blocked on transmit space, would it not make sense for the receiver to 
> send out any delayed ACKs when it is clear that the receiving process is 
> waiting for more data?  The patch below attempts this (I make no guarantees 
> of its correctness with respect to the rest of the delayed ack code).  One 
> point I'm still contemplating is what to do if the receiver is waiting in 
> poll/select/epoll.

The point of delayed ack's was to merge the response and the ack on 
request/response
protocols like NFS or telnet. It does make sense to get it out sooner though.

> [All tests run with maxcpus=1 on a 2.67GHz Woodcrest system.]
> 
> Recv   Send    Send                          Utilization       Service Demand
> Socket Socket  Message  Elapsed              Send     Recv     Send    Recv
> Size   Size    Size     Time     Throughput  local    remote   local   remote
> bytes  bytes   bytes    secs.    10^6bits/s  % S      % S      us/KB   us/KB
> 
> Base (2.6.17-rc4):
> default send buffer size
> netperf -C -c
>  87380  16384  16384    10.02      14127.79   99.90    99.90    0.579   0.579 
>  87380  16384  16384    10.02      13875.28   99.90    99.90    0.590   0.590 
>  87380  16384  16384    10.01      13777.25   99.90    99.90    0.594   0.594 
>  87380  16384  16384    10.02      13796.31   99.90    99.90    0.593   0.593 
>  87380  16384  16384    10.01      13801.97   99.90    99.90    0.593   0.593 
> 
> netperf -C -c -- -s 1024
>  87380   2048   2048    10.02         0.43   -0.04    -0.04    -7.105  -7.377
>  87380   2048   2048    10.02         0.43   -0.01    -0.01    -2.337  -2.620
>  87380   2048   2048    10.02         0.43   -0.03    -0.03    -5.683  -5.940
>  87380   2048   2048    10.02         0.43   -0.05    -0.05    -9.373  -9.625
>  87380   2048   2048    10.02         0.43   -0.05    -0.05    -9.373  -9.625
> 
> from a remote system over gigabit ethernet
> netperf -H woody -C -c
>  87380  16384  16384    10.03       936.23   19.32    20.47    3.382   1.791 
>  87380  16384  16384    10.03       936.27   17.67    20.95    3.091   1.833 
>  87380  16384  16384    10.03       936.17   19.18    20.77    3.356   1.817 
>  87380  16384  16384    10.03       936.26   18.22    20.26    3.188   1.773 
>  87380  16384  16384    10.03       936.26   17.35    20.54    3.036   1.797 
> 
> netperf -H woody -C -c -- -s 1024
>  87380   2048   2048    10.00        95.72   10.04    6.64     17.188  5.683 
>  87380   2048   2048    10.00        95.94   9.47     6.42     16.170  5.478 
>  87380   2048   2048    10.00        96.83   9.62     5.72     16.283  4.840 
>  87380   2048   2048    10.00        95.91   9.58     6.13     16.368  5.236 
>  87380   2048   2048    10.00        95.91   9.58     6.13     16.368  5.236 
> 
> 
> Patched:
> default send buffer size
> netperf -C -c
>  87380  16384  16384    10.01      13923.16   99.90    99.90    0.588   0.588 
>  87380  16384  16384    10.01      13854.59   99.90    99.90    0.591   0.591 
>  87380  16384  16384    10.02      13840.42   99.90    99.90    0.591   0.591 
>  87380  16384  16384    10.01      13810.96   99.90    99.90    0.593   0.593 
>  87380  16384  16384    10.01      13771.27   99.90    99.90    0.594   0.594 
> 
> netperf -C -c -- -s 1024
>  87380   2048   2048    10.02      2473.48   99.90    99.90    3.309   3.309 
>  87380   2048   2048    10.02      2421.46   99.90    99.90    3.380   3.380 
>  87380   2048   2048    10.02      2288.07   99.90    99.90    3.577   3.577 
>  87380   2048   2048    10.02      2405.41   99.90    99.90    3.402   3.402 
>  87380   2048   2048    10.02      2284.41   99.90    99.90    3.582   3.582 
> 
> netperf -H woody -C -c
>  87380  16384  16384    10.04       936.10   23.04    21.60    4.033   1.890 
>  87380  16384  16384    10.03       936.20   18.52    21.06    3.242   1.843 
>  87380  16384  16384    10.03       936.52   17.61    21.05    3.082   1.841 
>  87380  16384  16384    10.03       936.18   18.24    20.73    3.191   1.814 
>  87380  16384  16384    10.03       936.28   18.30    21.04    3.202   1.841 
> 
> netperf -H woody -C -c -- -s 1024
>  87380   2048   2048    10.00       142.46   10.19    7.53     11.714  4.332 
>  87380   2048   2048    10.00       147.28   9.73     7.93     10.829  4.412 
>  87380   2048   2048    10.00       143.37   10.64    6.54     12.161  3.738 
>  87380   2048   2048    10.00       146.41   9.18     7.43     10.277  4.158 
>  87380   2048   2048    10.01       145.58   9.80     7.25     11.032  4.081 
> 
> Comments/thoughts?
> 
>               -ben
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to