[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lwip-devel] [task #7040] Work on tcp_enqueue
From: |
Bill Auerbach |
Subject: |
[lwip-devel] [task #7040] Work on tcp_enqueue |
Date: |
Mon, 02 Feb 2009 18:12:58 +0000 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5 |
Follow-up Comment #12, task #7040 (project lwip):
> Bill, thanks for testing the patch!
No problem - I was looking into the code and thinking maybe I could give it a
shot. When I saw what it took you to do it I knew I was in over my head!
> What is the limiting factor for your performance?
> CPU? Network bandwidth? Bandwidth-delay product? DMA
> bandwidth/fragmentation?
> Do you have retransmissions?
CPU and CPU memory accesses (large blocks of outbound data, fairly slow
SDRAM, zero-copy RAW_API). We plan on doing a DMA-checksum FPGA addition and
until then, I'm trying to improve performance where that won't. There is no
retransmission. Every WireShark capture has been error-free. That was when I
noticed the handful of not-MSS-sized packets for a 300+k transfer.
> Sending full-sized TCP segments only helps you if you are saturating
> the network link. It minimizes the protocol header overhead.
It's safe to say I am not saturating the link, but trying to. :) However, it
did slightly help performance to have full packets (measured as how many 300k
chunks of data can I send to the PC per second).
> If you are
> CPU-limited, it could well be more work. The pbuf chains will be
> slightly longer on average.
It is slightly longer to send data. Whether there is benefit to "remembering"
the last pbuf in the change I don't know. I would think we would want to
maintain this because for sending small data chunk in tcp_write, the chain
could be quite large (100 or more in the list).
> Your 1% number is rather small. Did you measure a variance as well?
That's an average over several MB of data. But it's a fair test because only
one change was made - the patch versus my calling tcp_write with MSS sized
chunks, except the last packet. This includes an optimized assembly
inet_chksum as that is where there is a lot of gain.
_______________________________________________________
Reply to this item at:
<http://savannah.nongnu.org/task/?7040>
_______________________________________________
Message sent via/by Savannah
http://savannah.nongnu.org/
- [lwip-devel] [task #7040] Work on tcp_enqueue,
Bill Auerbach <=
- [lwip-devel] [task #7040] Work on tcp_enqueue, Iordan Neshev, 2009/02/03
- [lwip-devel] [task #7040] Work on tcp_enqueue, Jakob Stoklund Olesen, 2009/02/03
- [lwip-devel] [task #7040] Work on tcp_enqueue, Jakob Stoklund Olesen, 2009/02/04
- [lwip-devel] [task #7040] Work on tcp_enqueue, Simon Goldschmidt, 2009/02/05
- [lwip-devel] [task #7040] Work on tcp_enqueue, Jakob Stoklund Olesen, 2009/02/06
- [lwip-devel] [task #7040] Work on tcp_enqueue, Jakob Stoklund Olesen, 2009/02/06
- [lwip-devel] [task #7040] Work on tcp_enqueue, Charles Landau, 2009/02/13