Slow Pandaboard Transfer Speeds
Pages: 1 2
Timothy Baldwin (184) 242 posts |
Under RPCEmu RISC OS consistently responds to the sender in under 2 milliseconds, and no packets are dropped. The delay is waiting for the network cables and sender to send more data.
A packet sniffer is more useful. The problem is that RISC OS never sends a window size larger than 17376 bytes, so the sender correctly never sends more than 17376 bytes beyond what it has received acknowledgements for. The window size and receive buffer need to be a few megabytes in size. Trying to adjust the receive buffer using sysctl doesn’t help:
Attempting to set a 1 megabyte receive buffer using sysctl causes RISC OS to fail to create a TCP socket:
Adjusting the receive buffer with setsockopt does speed it up:
However attempting to set any value larger than 262144 returns ENOBUFS (No buffer space available), and needs to be a lot larger, about 2.5 megabytes for a 100Mbps round the world connection. Trying likewise for the send buffer breaks my test case, it closes the connection without sending anything. Making the default large enough would however quickly exhaust the available amount of memory. At least Linux and FreeBSD adjust the size of the buffers to match network conditions.
Do you have any evidence of RISC OS dropping packets on a TCP connection? A slow application should not cause TCP retries, instead the TCP window size sent to the sender should be reduced. |
Pages: 1 2